5 #include <boost/uuid/uuid_io.hpp>
6 #include <boost/scoped_ptr.hpp>
7 #include <vnc_cfg_types.h>
48 mgr_(mgr), link_table_(NULL), agent_(agent) {
53 if (link->
left() == node)
return link->
right();
54 if (link->
right() == node)
return link->
left();
67 std::ostringstream key_with_node_in_right;
68 key_with_node_in_right <<
type <<
",," << node->
ToString();
70 if (link && (strcmp(link->
metadata().c_str(),
type) == 0))
73 std::ostringstream key_with_node_in_left;
74 key_with_node_in_left <<
type <<
"," << node->
ToString() <<
",";
76 if (link && (strcmp(link->
metadata().c_str(),
type) == 0))
110 assert(
list_.size() == 0);
135 while (weight && (it !=
list_.end())) {
204 assert(
list_.size() == 0);
224 while (weight && (it !=
list_.end())) {
248 agent_(agent), trigger_(), timer_(NULL), timeout_(kMinTimeout) {
255 "Config Manager", task_id, 0);
398 return (
Size() == 0);
413 count +=
sg_list_->Process(max_count - count);
414 count +=
tag_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);
425 count +=
hc_list_->Process(max_count - count);
426 count +=
vmi_list_->Process(max_count - count);
429 count +=
slo_list_->Process(max_count - count);
430 count +=
mp_list_->Process(max_count - count);
555 std::stringstream str;
556 str << setw(16) <<
"CfgMgr"
557 <<
" Queue" << setw(8) <<
Size()
558 <<
" Timeout " << setw(8) <<
timeout()
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;
593 if (state->
notify() ==
false ||
628 iter != node->
end(graph); ++iter) {
virtual bool ProcessConfig(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
InterfaceTable * interface_table() const
VmTable * vm_table() const
ForwardingClassTable * forwarding_class_table() const
bool ResourceManagerReady() const
TagTable * tag_table() const
QosQueueTable * qos_queue_table() const
VrfTable * vrf_table() const
EventManager * event_manager() const
AgentQosConfigTable * qos_config_table() const
SecurityLoggingObjectTable * slo_table() const
MulticastPolicyTable * mp_table() const
BridgeDomainTable * bridge_domain_table() const
VnTable * vn_table() const
PhysicalDeviceVnTable * physical_device_vn_table() const
PhysicalDeviceTable * physical_device_table() const
SgTable * sg_table() const
HealthCheckTable * health_check_table() const
PolicySetTable * policy_set_table() const
ConfigHelper(const ConfigManager *mgr, const Agent *agent)
IFMapNode * GetOtherAdjacentNode(IFMapLink *link, IFMapNode *node)
IFMapAgentLinkTable * link_table_
IFMapNode * FindLink(const char *type, IFMapNode *node)
DeviceVnList::iterator DeviceVnIterator
PhysicalDeviceVnTable * table_
bool Add(Agent *agent, ConfigManager *mgr, const boost::uuids::uuid &dev, const boost::uuids::uuid &vn)
uint32_t enqueue_count() const
uint32_t Process(uint32_t weight)
bool Delete(Agent *agent, ConfigManager *mgr, const boost::uuids::uuid &dev, const boost::uuids::uuid &vn)
DISALLOW_COPY_AND_ASSIGN(ConfigManagerDeviceVnList)
std::set< DeviceVnEntry, DeviceVnEntryCmp > DeviceVnList
ConfigManagerDeviceVnList(PhysicalDeviceVnTable *table)
~ConfigManagerDeviceVnList()
uint32_t process_count() const
uint32_t process_count() const
bool Add(Agent *agent, ConfigManager *mgr, IFMapNode *node)
DISALLOW_COPY_AND_ASSIGN(ConfigManagerNodeList)
uint32_t enqueue_count() const
uint32_t Process(uint32_t weight)
std::set< Node, NodeCmp > NodeList
bool Delete(Agent *agent, ConfigManager *mgr, IFMapNode *node)
ConfigManagerNodeList(AgentDBTable *table)
OperIFMapTable * oper_ifmap_table_
ConfigManagerNodeList(OperIFMapTable *table)
NodeList::iterator NodeListIterator
std::unique_ptr< ConfigManagerNodeList > vm_list_
void AddNetworkIpamNode(IFMapNode *node)
uint64_t process_config_count_[kMaxTimeout+1]
void AddBridgeDomainNode(IFMapNode *node)
void AddPolicySetNode(IFMapNode *node)
void AddQosConfigNode(IFMapNode *node)
static const uint32_t kIterationCount
uint32_t LogicalInterfaceNodeCount() const
static const uint32_t kMinTimeout
void AddMulticastPolicyNode(IFMapNode *node)
std::unique_ptr< TaskTrigger > trigger_
static const uint32_t kMaxTimeout
std::unique_ptr< ConfigManagerNodeList > virtual_router_list_
void AddForwardingClassNode(IFMapNode *node)
std::unique_ptr< ConfigManagerNodeList > policy_set_list_
std::unique_ptr< ConfigManagerNodeList > forwarding_class_list_
void AddTagNode(IFMapNode *node)
std::unique_ptr< ConfigManagerNodeList > virtual_dns_list_
std::unique_ptr< ConfigManagerNodeList > global_system_config_list_
std::unique_ptr< ConfigManagerNodeList > vrf_list_
std::unique_ptr< ConfigManagerNodeList > slo_list_
std::unique_ptr< ConfigManagerNodeList > network_ipam_list_
uint32_t ProcessCount() const
std::unique_ptr< ConfigManagerNodeList > tag_list_
boost::scoped_ptr< ConfigHelper > helper_
bool SkipNode(IFMapNode *node)
void AddGlobalVrouterNode(IFMapNode *node)
void AddSecurityLoggingObjectNode(IFMapNode *node)
std::unique_ptr< ConfigManagerNodeList > bgp_router_config_list_
void AddVirtualRouterNode(IFMapNode *node)
void AddPhysicalDeviceNode(IFMapNode *node)
std::unique_ptr< ConfigManagerNodeList > mp_list_
std::unique_ptr< ConfigManagerNodeList > logical_interface_list_
std::unique_ptr< ConfigManagerDeviceVnList > device_vn_list_
std::unique_ptr< ConfigManagerNodeList > bridge_domain_list_
std::unique_ptr< ConfigManagerNodeList > qos_config_list_
void AddQosQueueNode(IFMapNode *node)
void AddSgNode(IFMapNode *node)
void AddGlobalSystemConfigNode(IFMapNode *node)
void AddVmNode(IFMapNode *node)
bool CanUseNode(IFMapNode *node)
std::unique_ptr< ConfigManagerNodeList > vmi_list_
std::unique_ptr< ConfigManagerNodeList > physical_interface_list_
void AddVirtualDnsNode(IFMapNode *node)
std::unique_ptr< ConfigManagerNodeList > global_vrouter_list_
ConfigManager(Agent *agent)
void AddVrfNode(IFMapNode *node)
std::unique_ptr< ConfigManagerNodeList > device_list_
uint32_t VmiNodeCount() const
std::unique_ptr< ConfigManagerNodeList > hc_list_
void AddVmiNode(IFMapNode *node)
void AddLogicalInterfaceNode(IFMapNode *node)
IFMapNode * FindAdjacentIFMapNode(IFMapNode *node, const char *type)
void AddPhysicalDeviceVn(const boost::uuids::uuid &dev, const boost::uuids::uuid &vn)
uint32_t PhysicalDeviceVnCount() const
void AddPhysicalInterfaceNode(IFMapNode *node)
std::unique_ptr< ConfigManagerNodeList > global_qos_config_list_
void AddGlobalQosConfigNode(IFMapNode *node)
void AddVnNode(IFMapNode *node)
std::unique_ptr< ConfigManagerNodeList > sg_list_
void AddHealthCheckServiceNode(IFMapNode *node)
void AddBgpRouterConfigNode(IFMapNode *node)
std::unique_ptr< ConfigManagerNodeList > qos_queue_list_
std::string ProfileInfo() const
void NodeResync(IFMapNode *node)
void DelPhysicalDeviceVn(const boost::uuids::uuid &dev, const boost::uuids::uuid &vn)
std::unique_ptr< ConfigManagerNodeList > vn_list_
adjacency_iterator end(DBGraph *graph)
adjacency_iterator begin(DBGraph *graph)
bool Enqueue(DBRequest *req)
boost::asio::io_context * io_service()
const DBGraph * GetGraph() const
IFMapNodeState * IFMapNodeGet(IFMapNode *node)
bool IsRegistered(const IFMapNode *node)
boost::intrusive_ptr< IFMapNodeState > IFMapNodePtr
IFMapNodePtr SetState(IFMapNode *node)
void PropogateNodeAndLinkChange(IFMapNode *node)
IFMapLink * FindNextLink(const std::string &name)
const std::string & metadata() const
boost::uuids::uuid uuid()
bool oper_db_request_enqueued() const
virtual std::string ToString() const
virtual const char * Typename() const =0
OperNetworkIpam * network_ipam() const
OperVirtualDns * virtual_dns() const
GlobalVrouter * global_vrouter() const
GlobalSystemConfig * global_system_config() const
BgpRouterConfig * bgp_router_config() const
GlobalQosConfig * global_qos_config() const
IFMapDependencyManager * dependency_manager()
VRouter * vrouter() const
void ProcessConfig(IFMapNode *node)
void ProcessConfig(const boost::uuids::uuid &dev, const boost::uuids::uuid &vn)
int GetTaskId(const std::string &name)
static TaskScheduler * GetInstance()
static bool DeleteTimer(Timer *Timer)
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)
bool Start(int time, Handler handler, ErrorHandler error_handler=NULL)
bool Reschedule(int time)
#define IFMAP_AGENT_LINK_DB_NAME
bool operator()(const DeviceVnEntry &lhs, const DeviceVnEntry &rhs) const
DeviceVnEntry(const boost::uuids::uuid &dev, const boost::uuids::uuid &vn)
bool operator()(const Node &lhs, const Node &rhs) const
IFMapDependencyManager::IFMapNodePtr state_
Node(IFMapDependencyManager::IFMapNodePtr state)