11 #include <netinet/in.h>
12 #include <arpa/inet.h>
13 #include "base/sandesh/version_types.h"
15 #include "rapidjson/document.h"
16 #include "rapidjson/writer.h"
17 #include "rapidjson/stringbuffer.h"
31 size_t pos = filename.find_last_of(
'/');
32 if (pos != string::npos) {
33 return filename.substr((pos+1));
49 fp = popen(cmd.c_str(),
"r");
53 char *ptr = fgets(line,
sizeof(line), fp);
59 ptr = strchr(line,
'\n');
63 istringstream iss(line);
83 rpm_version.assign(
"unknown");
84 build_num.assign(
"unknown");
86 ifstream f(ContrailVersionCmd.c_str());
92 cmd << ContrailVersionCmd <<
" " << BuildModuleNames.at(
id)
93 <<
" | tail -1 | awk '{ print $2 \" \" $3 }'";
94 ret = GetVersionInfoInternal(cmd.str(), rpm_version, build_num);
104 bool ret = GetContrailVersionInfo(
id, rpm_version, build_num);
105 contrail_rapidjson::Document d;
106 if (d.Parse<0>(const_cast<char *>(build_info.c_str())).HasParseError()) {
110 contrail_rapidjson::Value& fields = d[
"build-info"];
111 if (!fields.IsArray()) {
116 contrail_rapidjson::Value v;
117 fields[0u].AddMember(
"build-id",
118 v.SetString(rpm_version.c_str(), d.GetAllocator()), d.GetAllocator());
119 fields[0u].AddMember(
"build-number",
120 v.SetString(build_num.c_str(), d.GetAllocator()), d.GetAllocator());
122 contrail_rapidjson::StringBuffer strbuf;
123 contrail_rapidjson::Writer<contrail_rapidjson::StringBuffer> writer(strbuf);
125 result = strbuf.GetString();
132 fp = popen(
"cat /etc/*release",
"r");
136 std::string result =
"";
138 if (fgets(line, 512, fp) != NULL) {
145 if (result.find(
"trusty") != std::string::npos) {
147 code_name =
"Trusty";
148 }
else if (result.find(
"precise") != std::string::npos) {
150 code_name =
"Precise";
151 }
else if (result.find(
"rhel") != std::string::npos) {
154 }
else if (result.find(
"CentOS distro 6.4") != std::string::npos) {
157 }
else if (result.find(
"CentOS distro 6.5") != std::string::npos) {
160 }
else if (result.find(
"CentOS Linux release 7") != std::string::npos) {
162 code_name =
"7.1.1503";
static std::string BaseName(std::string filename)
static bool GetBuildInfo(BuildModule id, const std::string &build_info, std::string &result)
static void LogVersionInfo(const std::string str, Category::type categ)
static bool GetPlatformInfo(std::string &distro, std::string &code_name)
static time_t GetUpTimeSeconds()
boost::shared_ptr< TraceBuffer< SandeshTrace > > SandeshTraceBufferPtr
static const std::map< BuildModule, std::string > BuildModuleNames
static bool GetContrailVersionInfo(BuildModule id, std::string &rpm_version, std::string &build_num)
static time_t set_startup_time_secs()
SandeshTraceBufferPtr VersionTraceBuf
#define VERSION_LOG(obj, categ,...)
#define VERSION_TRACE(obj,...)
static std::map< BuildModule, std::string > MapInit()
static time_t UTCTimestamp()
static bool GetVersionInfoInternal(const std::string &cmd, std::string &rpm_version, std::string &build_num)
static time_t startup_time_secs_
#define VERSION_TRACE_BUF
static const std::string ContrailVersionCmd
SandeshTraceBufferPtr SandeshTraceBufferCreate(const std::string &buf_name, size_t buf_size, bool trace_enable=true)