json::value Monitor::GetRegisterInfo()

in nodemanager/core/Monitor.cpp [450:511]


json::value Monitor::GetRegisterInfo()
{
    ReaderLock lock(&this->lock);

    if (!this->isCollected)
    {
        return json::value::null();
    }

    json::value j;
    j["NodeName"] = json::value::string(this->name);
    j["Time"] = json::value::string(this->metricTime);

    j["IpAddress"] = json::value::string(this->ipAddress);
    j["CoreCount"] = this->coreCount;
    j["SocketCount"] = this->socketCount;
    j["MemoryMegabytes"] = this->totalMemoryMb;
    j["DistroInfo"] = json::value::string(this->distroInfo);

    std::vector<json::value> networkValues;

    for (const auto& info : this->networkInfo)
    {
        json::value v;
        v["Name"] = json::value::string(std::get<0>(info));
        v["MacAddress"] = json::value::string(std::get<1>(info));
        v["IpV4"] = json::value::string(std::get<2>(info));
        v["IpV6"] = json::value::string(std::get<3>(info));
        v["IsIB"] = std::get<4>(info);

        networkValues.push_back(v);
    }

    j["NetworksInfo"] = json::value::array(networkValues);

    std::vector<json::value> gpuValues;

    for (const auto& info : this->gpuInfo.GpuInfos)
    {
        json::value v;
        v["Name"] = json::value::string(info.Name);
        v["Uuid"] = json::value::string(info.Uuid);
        v["PciBusDevice"] = json::value::string(info.GetPciBusDevice());
        v["PciBusId"] = json::value::string(info.PciBusId);
        v["TotalMemory"] = info.TotalMemoryMB;
        v["MaxSMClock"] = info.MaxSMClock;

        gpuValues.push_back(v);
    }

    j["GpuInfo"] = json::value::array(gpuValues);
    
    if (!this->azureInstanceMetadata.empty())
    {
        j["AzureInstanceMetadata"] = json::value::string(this->azureInstanceMetadata);
    }

    j["CcpVersion"] = json::value::string(Version::GetVersion());
    j["CustomProperties"] = json::value::string("");

    return std::move(j);
}