5 #ifndef SRC_VNSW_AGENT_SERVICES_HEALTH_CHECK_H_
6 #define SRC_VNSW_AGENT_SERVICES_HEALTH_CHECK_H_
8 #include <boost/scoped_ptr.hpp>
13 #define HEALTH_CHECK_TRACE(obj, ...)\
15 HealthCheck##obj::TraceMsg(HealthCheckTraceBuf, __FILE__, __LINE__,\
45 const std::string &name,
46 const std::string &monitor_type,
47 const std::string &stype,
49 const std::string &http_method,
50 const std::string &url_path,
52 const std::string &expected_codes,
53 uint32_t delay, uint64_t delay_usecs,
54 uint32_t timeout, uint64_t timeout_usecs,
57 std::set<IpAddress> cfg_target_ip_list,
103 const std::string &message);
119 bool ignore_status_event);
133 void OnRead(
const std::string &data);
135 void OnExit(
const boost::system::error_code &ec);
169 boost::scoped_ptr<MetaDataIp>
ip_;
196 bool ignore_status_event);
211 boost::scoped_ptr<HeathCheckProcessInstance>
task_;
222 bool ignore_status_event,
bool multi_hop);
254 bool ignore_status_event,
bool multi_hop);
281 typedef std::map<boost::uuids::uuid, HealthCheckInstanceBase *>
InstanceList;
289 virtual std::string
ToString()
const;
306 bool ignore_status_event,
314 destination_ip, destination_mac,
410 typedef boost::function<void(const HealthCheckInstanceService *)>
417 const std::string &
name);
434 const std::string &context);
471 #endif // SRC_VNSW_AGENT_SERVICES_HEALTH_CHECK_H_
void ResyncHealthCheckInterface(const HealthCheckService *service, const VmInterface *intf)
virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req)
HealthCheckResyncInterfaceData(const Agent *agent, IFMapNode *node, const VmInterface *intf)
InterfaceRef interface() const
virtual void ResyncTarget(const HealthCheckService *service) const
const std::string & monitor_type() const
virtual ~HealthCheckInstanceEvent()
virtual bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u)
virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req)
virtual bool DestroyInstanceTask()=0
bool IsTargetIpPresent(IpAddress &ip)
void EnqueueResync(const HealthCheckService *service, Interface *itf) const
bool DBEntrySandesh(Sandesh *resp, std::string &name) const
bool InstanceEventProcess(HealthCheckInstanceEvent *event)
HealthCheckService(const HealthCheckTable *table, const boost::uuids::uuid &id)
virtual AgentSandeshPtr GetAgentSandesh(const AgentSandeshArguments *args, const std::string &context)
uint32_t GetRefCount() const
void set_source_ip(const IpAddress &ip)
virtual size_t Hash(const DBRequestKey *key) const
std::set< boost::uuids::uuid > vn_uuid_list_
virtual bool StopInstanceTask()
virtual bool DestroyInstanceTask()
void RegisterHealthCheckNotifyCallback(HealthCheckNotifyCallback fn)
HealthCheckService * service() const
HealthCheckInstanceService(HealthCheckService *service, MetaDataIpAllocator *allocator, VmInterface *intf, VmInterface *other_intf, bool ignore_status_event, bool multi_hop)
bool ProcessConfig(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
IpAddress destination_ip() const
boost::intrusive_ptr< HealthCheckService > HealthCheckServiceRef
void EnqueueMacIpLearningHCStatus(const HealthCheckService *service) const
virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
uint16_t url_port() const
virtual ~HealthCheckMacIpInstanceService()
HealthCheckType health_check_type_
void UpdateInstanceTaskCommand()
void UpdateInterfaceInstanceServiceReference(const VmInterface *intf)
void StopTask(HealthCheckService *service)
std::set< IpAddress > new_target_ip_list_
boost::asio::ip::address IpAddress
virtual void ResyncTarget(const HealthCheckService *service) const
const std::string & url_path() const
virtual ~HealthCheckTable()
HealthCheckServiceKey(const boost::uuids::uuid &id)
DISALLOW_COPY_AND_ASSIGN(HealthCheckInstanceService)
const HealthCheckTable * table() const
virtual bool IsRunning() const
HealthCheckService * service_
virtual bool RunInstanceTask()=0
const std::string & last_update_time() const
IpAddress dest_ip() const
WorkQueue< HealthCheckInstanceEvent * > * inst_event_queue_
HealthCheckMacIpInstanceService(HealthCheckService *service, MetaDataIpAllocator *allocator, VmInterface *intf, VmInterface *other_intf, bool ignore_status_event, bool multi_hop)
DISALLOW_COPY_AND_ASSIGN(HealthCheckService)
void set_destination_ip(const IpAddress &ip)
virtual std::string ToString() const
virtual std::unique_ptr< DBEntry > AllocEntry(const DBRequestKey *k) const
virtual ~HealthCheckInstanceService()
boost::scoped_ptr< MetaDataIp > ip_
boost::shared_ptr< TraceBuffer< SandeshTrace > > SandeshTraceBufferPtr
void set_service(HealthCheckService *service)
std::unique_ptr< DBRequestKey > KeyPtr
virtual bool UpdateInstanceTask()
std::map< boost::uuids::uuid, HealthCheckInstanceBase * > InstanceList
HealthCheckInstanceTask(HealthCheckService *service, MetaDataIpAllocator *allocator, VmInterface *intf, bool ignore_status_event)
std::string monitor_type_
HealthCheckServiceCallback health_check_service_callback(HealthCheckService::HealthCheckType type) const
virtual bool OperDBResync(DBEntry *entry, const DBRequest *req)
const VmInterface * intf_
virtual DBEntry * OperDBAdd(const DBRequest *req)
void StopHealthCheckService(HealthCheckInstanceBase *instance)
HealthCheckTable(Agent *agent, DB *db, const std::string &name)
HealthCheckNotifyCallback health_check_notify_cb_
virtual bool StopInstanceTask()
static const std::string kHealthCheckCmd
virtual ~HealthCheckServiceKey()
const HealthCheckTable * table_
virtual ~HealthCheckInstanceTask()
HealthCheckServiceData(Agent *agent, IpAddress dest_ip, const std::string &name, const std::string &monitor_type, const std::string &stype, uint8_t ip_proto, const std::string &http_method, const std::string &url_path, uint16_t url_port, const std::string &expected_codes, uint32_t delay, uint64_t delay_usecs, uint32_t timeout, uint64_t timeout_usecs, uint32_t max_retries, bool is_all_ip, std::set< IpAddress > cfg_target_ip_list, IFMapNode *ifmap_node)
virtual void SetKey(const DBRequestKey *key)
virtual bool StopInstanceTask()=0
bool IsSegmentHealthCheckService() const
HealthCheckServiceRef service_
HealthCheckNotifyCallback health_check_notify_callback() const
void InstanceEventEnqueue(HealthCheckInstanceEvent *event) const
const std::set< boost::uuids::uuid > & GetVnUuidList()
uint32_t GetRefCount() const
void OnExit(const boost::system::error_code &ec)
bool IsHcEnableAllTargetIp() const
void SetService(HealthCheckService *service)
virtual KeyPtr GetDBRequestKey() const
virtual bool IsLess(const DBEntry &rhs) const
DISALLOW_COPY_AND_ASSIGN(HealthCheckTable)
HealthCheckInstanceEvent(HealthCheckInstanceBase *inst, HealthCheckService *service, EventType type, const std::string &message)
DISALLOW_COPY_AND_ASSIGN(HealthCheckInstanceTask)
IpAddress get_source_ip() const
std::map< IpAddress, HealthCheckInstanceBase * > IpInstanceList
class boost::shared_ptr< AgentSandesh > AgentSandeshPtr
const std::string & name() const
HealthCheckInstanceBase * StartHealthCheckService(VmInterface *intrface, const IpAddress &source_ip, const IpAddress &destination_ip, const MacAddress destination_mac=MacAddress())
virtual size_t Hash(const DBEntry *entry) const
HealthCheckServiceCallback health_check_service_cb_[HealthCheckService::MAX_HEALTH_CHECK_SERVICES]
std::string expected_codes_
virtual bool UpdateInstanceTask()
IpAddress source_ip() const
InstanceTaskExecvp HeathCheckProcessInstance
boost::function< void(const HealthCheckInstanceService *)> HealthCheckNotifyCallback
std::set< boost::uuids::uuid > vn_uuid_list_
HealthCheckInstanceBase * StartHealthCheckService(VmInterface *intrface, VmInterface *paired_vmi, const IpAddress &source_ip, const IpAddress &destination_ip, const MacAddress &destination_mac, bool ignore_status_event, bool multi_hop)
IFMapNode * ifmap_node() const
boost::scoped_ptr< HeathCheckProcessInstance > task_
std::string service_type_
static DBTableBase * CreateTable(Agent *agent, DB *db, const std::string &name)
HealthCheckInstanceBase * instance_
const boost::uuids::uuid & uuid() const
HealthCheckServiceKey(const boost::uuids::uuid &id, DBSubOperation sub_op)
HealthCheckInstanceBase(HealthCheckService *service, MetaDataIpAllocator *allocator, VmInterface *intf, bool ignore_status_event)
DISALLOW_COPY_AND_ASSIGN(HealthCheckInstanceEvent)
virtual void ResyncTarget(const HealthCheckService *service) const
bool Copy(HealthCheckTable *table, const HealthCheckServiceData *data)
virtual ~HealthCheckServiceData()
const Agent * agent() const
HealthCheckService * Find(const boost::uuids::uuid &u)
const std::string & name() const
const std::set< IpAddress > & GetTargetIpList()
HealthCheckType health_check_type() const
void EnqueueHealthCheckResync(const HealthCheckService *service, const VmInterface *itf) const
std::string expected_codes_
bool ignore_status_event_
virtual bool CreateInstanceTask()
IpAddress update_source_ip()
SandeshTraceBufferPtr HealthCheckTraceBuf
bool is_hc_enable_all_ip_
std::set< IpAddress > target_ip_list_
std::string last_update_time_
uint32_t max_retries() const
virtual void set_destination_mac(const MacAddress &mac)
std::set< boost::uuids::uuid > intf_uuid_list_
std::string monitor_type_
bool IsVnIpListHealthCheckService() const
boost::intrusive_ptr< Interface > InterfaceRef
virtual const MacAddress destination_mac() const
uint64_t delay_usecs() const
boost::function< bool(HealthCheckServiceAction, HealthCheckInstanceService *)> HealthCheckServiceCallback
bool IsInstanceTaskBased() const
virtual bool RunInstanceTask()
void OnRead(const std::string &data)
bool is_multi_hop() const
void RegisterHealthCheckCallback(HealthCheckServiceCallback fn, HealthCheckService::HealthCheckType type)
std::string service_type_
void UpdateInstanceServiceReference()
DISALLOW_COPY_AND_ASSIGN(HealthCheckMacIpInstanceService)
virtual bool DestroyInstanceTask()
virtual bool IsRunning() const
HealthCheckType GetHealthCheckType() const
virtual ~HealthCheckInstanceBase()
DISALLOW_COPY_AND_ASSIGN(HealthCheckInstanceBase)
IpAddress destination_ip_
virtual bool RunInstanceTask()
bool IsStatusEventIgnored() const
virtual bool CreateInstanceTask()=0
uint64_t timeout_usecs() const
virtual bool CreateInstanceTask()