diff --git a/src/vnsw/agent/cfg/discovery_agent.cc b/src/vnsw/agent/cfg/discovery_agent.cc index 406185ba3a2..ac847cfb666 100644 --- a/src/vnsw/agent/cfg/discovery_agent.cc +++ b/src/vnsw/agent/cfg/discovery_agent.cc @@ -139,8 +139,6 @@ void DiscoveryAgentClient::DiscoverServices() { (agent->module_type()); NodeType::type node_type = g_vns_constants.Module2NodeType.find(module)->second; - std::string subscriber_name = - agent->discovery_client_name(); std::string node_type_name = g_vns_constants.NodeTypeNames.find(node_type)->second; @@ -149,7 +147,7 @@ void DiscoveryAgentClient::DiscoverServices() { ds_client, _1, _2, _3); std::vector list; list.clear(); - Sandesh::InitGenerator(subscriber_name, + Sandesh::InitGenerator(agent->module_name(), agent->host_name(), node_type_name, agent->instance_id(), diff --git a/src/vnsw/agent/cmn/agent.cc b/src/vnsw/agent/cmn/agent.cc index 82b79cd4dab..285be81e6c0 100644 --- a/src/vnsw/agent/cmn/agent.cc +++ b/src/vnsw/agent/cmn/agent.cc @@ -300,7 +300,7 @@ void Agent::InitCollector() { NodeType::type node_type = g_vns_constants.Module2NodeType.find(module)->second; if (params_->collector_server_list().size() != 0) { - Sandesh::InitGenerator(discovery_client_name_, + Sandesh::InitGenerator(module_name(), host_name(), g_vns_constants.NodeTypeNames.find(node_type)->second, instance_id_, @@ -309,7 +309,7 @@ void Agent::InitCollector() { params_->collector_server_list(), NULL); } else { - Sandesh::InitGenerator(discovery_client_name_, + Sandesh::InitGenerator(module_name(), host_name(), g_vns_constants.NodeTypeNames.find(node_type)->second, instance_id_, @@ -433,7 +433,9 @@ Agent::Agent() : CreateLifetimeManager(); Module::type module = static_cast(module_type_); - discovery_client_name_ = g_vns_constants.ModuleNames.find(module)->second; + module_name_ = g_vns_constants.ModuleNames.find(module)->second; + discovery_client_name_ = BuildDiscoveryClientName(module_name_, + instance_id_); agent_signal_.reset( AgentObjectFactory::Create(event_mgr_)); @@ -597,3 +599,7 @@ bool Agent::vrouter_on_host_dpdk() const { bool Agent::vrouter_on_host() const { return params_->vrouter_on_host(); } + +const string Agent::BuildDiscoveryClientName(string mod_name, string id) { + return (mod_name + ":" + id); +} diff --git a/src/vnsw/agent/cmn/agent.h b/src/vnsw/agent/cmn/agent.h index fbcadd59b5e..2c4d2a3eab4 100644 --- a/src/vnsw/agent/cmn/agent.h +++ b/src/vnsw/agent/cmn/agent.h @@ -557,6 +557,9 @@ class Agent { const int &module_type() const { return module_type_; } void set_module_type(int id) { module_type_ = id; } + const std::string &module_name() const { return module_name_; } + void set_module_name(const std::string &name) { module_name_ = name; } + // Multicast related const std::string &multicast_label_range(uint8_t idx) { return label_range_[idx]; @@ -805,6 +808,8 @@ class Agent { bool vrouter_on_host() const; void SetAgentTaskPolicy(); void CopyConfig(AgentParam *params); + const std::string BuildDiscoveryClientName(std::string mod_name, + std::string id); void Init(AgentParam *param); void InitPeers(); @@ -856,6 +861,7 @@ class Agent { int introspect_port_; std::string instance_id_; int module_type_; + std::string module_name_; // DB handles DB *db_; diff --git a/src/vnsw/agent/init/agent_init.cc b/src/vnsw/agent/init/agent_init.cc index 74e51e58bf2..d23177bf81e 100644 --- a/src/vnsw/agent/init/agent_init.cc +++ b/src/vnsw/agent/init/agent_init.cc @@ -78,10 +78,16 @@ int AgentInit::Start() { agent_->CopyConfig(agent_param_); string module_name = ModuleName(); - agent_->set_discovery_client_name(module_name); + /* Discovery client name should have InstanceId as well because multiple + * instances of tor-agent can run on a single node. + */ + string ds_client_name = + agent_->BuildDiscoveryClientName(module_name, InstanceId()); + agent_->set_discovery_client_name(ds_client_name); agent_->set_agent_name(AgentName()); agent_->set_instance_id(InstanceId()); agent_->set_module_type(ModuleType()); + agent_->set_module_name(module_name); LoggingInit(agent_param_->log_file(), agent_param_->log_file_size(), agent_param_->log_files_count(), agent_param_->use_syslog(), diff --git a/src/vnsw/agent/uve/agent_uve_base.cc b/src/vnsw/agent/uve/agent_uve_base.cc index 0129e53ba4e..785f34425ee 100644 --- a/src/vnsw/agent/uve/agent_uve_base.cc +++ b/src/vnsw/agent/uve/agent_uve_base.cc @@ -56,7 +56,7 @@ void AgentUveBase::Shutdown() { } void AgentUveBase::Init() { - std::string module_id(agent_->discovery_client_name()); + std::string module_id(agent_->module_name()); std::string instance_id(agent_->instance_id()); EventManager *evm = agent_->event_manager(); boost::asio::io_service &io = *evm->io_service();