From 69113c1ea77847f94b43adb8bd562ff650880c7f Mon Sep 17 00:00:00 2001 From: Dan V Date: Wed, 1 Apr 2026 01:20:33 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20richer=20hardware=20discovery=20?= =?UTF-8?q?=E2=80=94=20CPU=20cache/voltage,=20memory=20type/bandwidth/part?= =?UTF-8?q?-no,=20GPU=20discovery?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CPU: max speed, bus MHz, L1/L2/L3 cache (from sysfs), voltage, socket type; /proc/cpuinfo fallback for non-root - Memory sticks: DDR type, form factor, part number, rank, data width, theoretical bandwidth - GPU: new part type discovered via lspci + /sys/class/drm + nvidia-smi; shows VRAM and display outputs - discover-only tree updated to show all new fields Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../roles/inventory-cli/files/inventory-cli | Bin 197440 -> 244528 bytes .../device-inventory/src/client/discovery.cpp | 381 +++++++++++++++++- .../device-inventory/src/client/discovery.h | 1 + services/device-inventory/src/client/main.cpp | 91 ++++- services/device-inventory/src/common/models.h | 23 ++ .../device-inventory/src/common/protocol.h | 21 + .../device-inventory/src/server/database.cpp | 149 ++++++- .../device-inventory/src/server/database.h | 1 + 8 files changed, 654 insertions(+), 13 deletions(-) diff --git a/orchestration/ansible/roles/inventory-cli/files/inventory-cli b/orchestration/ansible/roles/inventory-cli/files/inventory-cli index 2df9e62655e3743850dcbee8f80ce2c12549f4d3..67cbe89745e94827c1a779b3d2a5421f7a6a5f6f 100755 GIT binary patch literal 244528 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 G)cZFLjA%^& literal 197440 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 z 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%0DVw1 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

}zVZs3Y{2Ub83Heym2?$iVTJic6Ayn(4F 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≻lAy{Pv`SF$)DkZZvjr}?cnrQvHV9|_&3fM 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 diff --git a/services/device-inventory/src/client/discovery.cpp b/services/device-inventory/src/client/discovery.cpp index 008e3f6..2f58eb6 100644 --- a/services/device-inventory/src/client/discovery.cpp +++ b/services/device-inventory/src/client/discovery.cpp @@ -291,7 +291,8 @@ std::vector Discovery::discover_all() { std::vector all; for (auto& v : {discover_memory_sticks(), discover_memory_slots(), discover_cpus(), discover_cpu_slots(), - discover_disks(), discover_nics()}) { + discover_disks(), discover_nics(), + discover_gpus()}) { all.insert(all.end(), v.begin(), v.end()); } return all; @@ -304,6 +305,7 @@ std::vector Discovery::discover(const std::string& type_name) { if (type_name == PTYPE_CPU_SLOT) return discover_cpu_slots(); if (type_name == PTYPE_DISK) return discover_disks(); if (type_name == PTYPE_NIC) return discover_nics(); + if (type_name == PTYPE_GPU) return discover_gpus(); std::cerr << "discover: unknown type '" << type_name << "'\n"; return {}; } @@ -423,6 +425,39 @@ std::vector Discovery::discover_memory_sticks() { if (b.count("Locator") && !b["Locator"].empty()) p.kv[K_LOCATOR] = b["Locator"]; + // Extended memory fields + if (b.count("Type") && b["Type"] != "Unknown" && b["Type"] != "Not Specified") + p.kv[K_MEM_TYPE] = b["Type"]; + + if (b.count("Form Factor") && b["Form Factor"] != "Unknown" && b["Form Factor"] != "Not Specified") + p.kv[K_FORM_FACTOR] = b["Form Factor"]; + + if (b.count("Part Number")) { + std::string pn = trim(b["Part Number"]); + if (!pn.empty() && pn != "Unknown" && pn != "Not Specified") + p.kv[K_PART_NUMBER] = pn; + } + + if (b.count("Rank")) { + uint32_t rank = static_cast(leading_uint(b["Rank"])); + if (rank > 0) p.kv[K_RANK] = std::to_string(rank); + } + + uint32_t data_width = 0; + if (b.count("Data Width")) { + data_width = static_cast(leading_uint(b["Data Width"])); + if (data_width > 0) p.kv[K_DATA_WIDTH] = std::to_string(data_width); + } + + // Compute theoretical bandwidth: speed_mhz × 2 × (data_width / 8) MB/s + if (data_width > 0 && p.kv.count(K_SPEED_MHZ)) { + uint64_t spd = std::stoull(p.kv[K_SPEED_MHZ]); + if (spd > 0) { + uint64_t bw = spd * 2ULL * (data_width / 8); + p.kv[K_BANDWIDTH_MBPS] = std::to_string(bw); + } + } + result.push_back(std::move(p)); } #endif @@ -604,8 +639,193 @@ std::vector Discovery::discover_cpus() { if (b.count("Socket Designation") && b["Socket Designation"] != "Not Specified") p.kv[K_SOCKET] = b["Socket Designation"]; + // Extended CPU fields from dmidecode type 4 + if (b.count("Max Speed")) { + double max_mhz = static_cast(leading_uint(b["Max Speed"])); + if (max_mhz > 0) { + char buf[32]; + snprintf(buf, sizeof(buf), "%.3f", max_mhz / 1000.0); + p.kv[K_MAX_SPEED_GHZ] = buf; + } + } + if (b.count("External Clock")) { + uint64_t bus_mhz = leading_uint(b["External Clock"]); + if (bus_mhz > 0) p.kv[K_BUS_MHZ] = std::to_string(bus_mhz); + } + if (b.count("Voltage")) { + std::string vs = b["Voltage"]; + // trim " V" suffix + while (!vs.empty() && (vs.back() == 'V' || vs.back() == ' ')) vs.pop_back(); + if (!vs.empty()) { + try { + double v = std::stod(vs); + char buf[32]; + snprintf(buf, sizeof(buf), "%.1f", v); + p.kv[K_VOLTAGE_V] = buf; + } catch (...) {} + } + } + if (b.count("Upgrade") && b["Upgrade"] != "Unknown" && b["Upgrade"] != "Other") { + p.kv[K_SOCKET_TYPE] = b["Upgrade"]; + } + result.push_back(std::move(p)); } + + // Enrich CPUs with L1/L2/L3 cache sizes from sysfs + // Build a map: physical_package_id → first cpu index + { + std::map pkg_to_first_cpu; + for (int ci = 0; ; ++ci) { + std::string pkg_path = "/sys/devices/system/cpu/cpu" + + std::to_string(ci) + "/topology/physical_package_id"; + FILE* pf = fopen(pkg_path.c_str(), "r"); + if (!pf) break; + int pkg = -1; + fscanf(pf, "%d", &pkg); + fclose(pf); + if (pkg >= 0 && pkg_to_first_cpu.find(pkg) == pkg_to_first_cpu.end()) + pkg_to_first_cpu[pkg] = ci; + } + + // For each CPU entry in result (in order), pick socket 0, 1, 2 ... + int socket_idx = 0; + for (auto& p : result) { + if (p.type_name != PTYPE_CPU) { ++socket_idx; continue; } + auto it = pkg_to_first_cpu.find(socket_idx); + int cpu_idx = (it != pkg_to_first_cpu.end()) ? it->second : socket_idx; + + // Walk cache indices for this cpu + uint32_t l1_kb = 0, l2_kb = 0, l3_kb = 0; + for (int idx = 0; idx < 8; ++idx) { + std::string base = "/sys/devices/system/cpu/cpu" + + std::to_string(cpu_idx) + "/cache/index" + + std::to_string(idx); + // Read level + int level = 0; + { + FILE* lf = fopen((base + "/level").c_str(), "r"); + if (!lf) break; + fscanf(lf, "%d", &level); + fclose(lf); + } + // Read type + std::string cache_type; + { + FILE* tf = fopen((base + "/type").c_str(), "r"); + if (tf) { + char tbuf[32] = {}; + fscanf(tf, "%31s", tbuf); + fclose(tf); + cache_type = tbuf; + } + } + // Read size + std::string size_str; + { + FILE* sf = fopen((base + "/size").c_str(), "r"); + if (sf) { + char sbuf[32] = {}; + fscanf(sf, "%31s", sbuf); + fclose(sf); + size_str = sbuf; + } + } + if (size_str.empty()) continue; + // Parse size: "32K", "256K", "9216K", "6144K" + uint32_t kb = 0; + { + size_t ni = 0; + while (ni < size_str.size() && std::isdigit((unsigned char)size_str[ni])) ++ni; + if (ni > 0) { + kb = static_cast(std::stoul(size_str.substr(0, ni))); + std::string unit = size_str.substr(ni); + if (!unit.empty() && (unit[0] == 'M' || unit[0] == 'm')) kb *= 1024; + } + } + if (kb == 0) continue; + if (level == 1 && cache_type == "Data") l1_kb += kb; + else if (level == 1 && cache_type == "Instruction") {} // skip icache + else if (level == 1 && cache_type == "Unified") l1_kb += kb; + else if (level == 2) l2_kb += kb; + else if (level == 3) l3_kb += kb; + } + + if (l1_kb > 0) p.kv[K_CACHE_L1_KB] = std::to_string(l1_kb); + if (l2_kb > 0) p.kv[K_CACHE_L2_KB] = std::to_string(l2_kb); + if (l3_kb > 0) p.kv[K_CACHE_L3_KB] = std::to_string(l3_kb); + ++socket_idx; + } + } + + // /proc/cpuinfo fallback if dmidecode gave nothing + if (result.empty()) { + std::string cpuinfo = run_cmd("cat /proc/cpuinfo 2>/dev/null"); + if (!cpuinfo.empty()) { + // Group by physical id + std::map> by_phys; + std::map cur_block; + int cur_phys = -1; + std::istringstream cs(cpuinfo); + std::string cl; + auto flush_cpuinfo = [&]() { + if (cur_phys < 0) return; + auto& target = by_phys[cur_phys]; + for (auto& [k, v] : cur_block) { + if (target.find(k) == target.end()) + target[k] = v; + } + }; + while (std::getline(cs, cl)) { + if (cl.empty()) continue; + size_t colon = cl.find(':'); + if (colon == std::string::npos) continue; + std::string key = trim(cl.substr(0, colon)); + std::string val = trim(cl.substr(colon + 1)); + if (key == "physical id") { + int phys = std::stoi(val); + if (phys != cur_phys) { + flush_cpuinfo(); + cur_phys = phys; + cur_block.clear(); + } + } else { + cur_block[key] = val; + } + } + flush_cpuinfo(); + for (auto& [phys_id, fields] : by_phys) { + DiscoveredPart p; + p.type_name = PTYPE_CPU; + if (fields.count("model name")) p.kv[K_NAME] = fields["model name"]; + if (fields.count("cpu MHz")) { + try { + double mhz = std::stod(fields["cpu MHz"]); + char buf[32]; + snprintf(buf, sizeof(buf), "%.3f", mhz / 1000.0); + p.kv[K_SPEED_GHZ] = buf; + } catch (...) {} + } + if (fields.count("cpu cores")) p.kv[K_CORES] = fields["cpu cores"]; + if (fields.count("siblings")) p.kv[K_THREADS] = fields["siblings"]; + if (fields.count("cache size")) { + // "9216 KB" + uint32_t kb = static_cast(leading_uint(fields["cache size"])); + if (kb > 0) p.kv[K_CACHE_L3_KB] = std::to_string(kb); + } + // Manufacturer from model name heuristic + if (fields.count("model name")) { + std::string lower = fields["model name"]; + std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower); + if (lower.find("intel") != std::string::npos) p.kv[K_MANUFACTURER] = "Intel"; + else if (lower.find("amd") != std::string::npos) p.kv[K_MANUFACTURER] = "AMD"; + } + // Use "Proc " style socket designation based on physical id order + p.kv[K_SOCKET] = "Proc " + std::to_string(phys_id + 1); + result.push_back(std::move(p)); + } + } + } #endif return result; @@ -1199,3 +1419,162 @@ std::vector Discovery::discover_nics() { return result; } + +// ═════════════════════════════════════════════════════════════════════════════ +// GPUs +// ═════════════════════════════════════════════════════════════════════════════ + +std::vector Discovery::discover_gpus() { + std::vector result; + +#ifdef __APPLE__ + // macOS GPU discovery not implemented + return result; +#else + std::string mm_out = run_cmd("lspci -mm 2>/dev/null"); + if (mm_out.empty()) return result; + + // Parse lspci -mm output. Each line: + // slot "class" "vendor" "device" ... + // (fields separated by spaces, quoted with double quotes) + auto parse_lspci_mm_line = [](const std::string& line) + -> std::vector { + std::vector fields; + size_t i = 0; + while (i < line.size()) { + while (i < line.size() && std::isspace((unsigned char)line[i])) ++i; + if (i >= line.size()) break; + if (line[i] == '"') { + ++i; + std::string tok; + while (i < line.size() && line[i] != '"') tok += line[i++]; + if (i < line.size()) ++i; + fields.push_back(tok); + } else { + std::string tok; + while (i < line.size() && !std::isspace((unsigned char)line[i])) tok += line[i++]; + fields.push_back(tok); + } + } + return fields; + }; + + std::istringstream ss(mm_out); + std::string line; + while (std::getline(ss, line)) { + if (!line.empty() && line.back() == '\r') line.pop_back(); + if (line.empty()) continue; + + auto fields = parse_lspci_mm_line(line); + if (fields.size() < 4) continue; + + std::string slot = fields[0]; + std::string cls = fields[1]; + std::string vendor = fields[2]; + std::string device = fields[3]; + + // Filter for GPU classes + bool is_gpu = (cls.find("VGA compatible controller") != std::string::npos || + cls.find("3D controller") != std::string::npos || + cls.find("Display controller") != std::string::npos); + if (!is_gpu) continue; + + DiscoveredPart p; + p.type_name = PTYPE_GPU; + p.kv[K_MANUFACTURER] = vendor; + p.kv[K_MODEL] = device; + p.kv[K_SERIAL] = slot; // PCI slot as stable ID + + // NVIDIA VRAM via nvidia-smi + std::string lower_vendor = vendor; + std::transform(lower_vendor.begin(), lower_vendor.end(), lower_vendor.begin(), ::tolower); + if (lower_vendor.find("nvidia") != std::string::npos) { + std::string nsmi = run_cmd( + "nvidia-smi --query-gpu=index,name,memory.total --format=csv,noheader 2>/dev/null"); + if (!nsmi.empty()) { + std::istringstream ns(nsmi); + std::string nline; + while (std::getline(ns, nline)) { + if (!nline.empty() && nline.back() == '\r') nline.pop_back(); + size_t last_comma = nline.rfind(','); + if (last_comma == std::string::npos) continue; + std::string mem_str = trim(nline.substr(last_comma + 1)); + uint64_t vram_mb = leading_uint(mem_str); + if (vram_mb > 0) { + p.kv[K_VRAM_MB] = std::to_string(vram_mb); + break; + } + } + } + } + + // Find DRM card for this PCI slot + std::vector outputs; + for (int card_idx = 0; card_idx < 8; ++card_idx) { + std::string card_name = "card" + std::to_string(card_idx); + std::string dev_link_path = "/sys/class/drm/" + card_name + "/device"; + std::string resolved = run_cmd("readlink -f " + dev_link_path + " 2>/dev/null"); + while (!resolved.empty() && std::isspace((unsigned char)resolved.back())) + resolved.pop_back(); + if (resolved.empty()) continue; + + bool matches = (resolved.find(slot) != std::string::npos); + if (!matches && slot.size() > 5 && slot[4] == ':') { + std::string short_addr = slot.substr(5); + matches = (resolved.find(short_addr) != std::string::npos); + } + if (!matches) continue; + + // Found the card; check AMD VRAM + if (p.kv.find(K_VRAM_MB) == p.kv.end()) { + std::string vram_path = "/sys/class/drm/" + card_name + "/device/mem_info_vram_total"; + FILE* vf = fopen(vram_path.c_str(), "r"); + if (vf) { + uint64_t vram_bytes = 0; + fscanf(vf, "%llu", (unsigned long long*)&vram_bytes); + fclose(vf); + if (vram_bytes > 0) { + p.kv[K_VRAM_MB] = std::to_string(vram_bytes / (1024 * 1024)); + } + } + } + + // Enumerate connectors + std::string ls_out = run_cmd("ls /sys/class/drm/ 2>/dev/null"); + if (!ls_out.empty()) { + std::istringstream lss(ls_out); + std::string entry; + while (lss >> entry) { + std::string prefix = card_name + "-"; + if (entry.rfind(prefix, 0) != 0) continue; + std::string connector_name = entry.substr(prefix.size()); + std::string status_path = "/sys/class/drm/" + entry + "/status"; + FILE* sf = fopen(status_path.c_str(), "r"); + std::string status = "unknown"; + if (sf) { + char sbuf[32] = {}; + fscanf(sf, "%31s", sbuf); + fclose(sf); + status = sbuf; + } + outputs.push_back(connector_name + ":" + status); + } + } + break; + } + + if (!outputs.empty()) { + std::string out_str; + for (size_t oi = 0; oi < outputs.size(); ++oi) { + if (oi) out_str += LS; + out_str += outputs[oi]; + } + p.kv[K_DISPLAY_OUTPUTS] = out_str; + } + + result.push_back(std::move(p)); + } + + return result; +#endif +} diff --git a/services/device-inventory/src/client/discovery.h b/services/device-inventory/src/client/discovery.h index 0b98a13..736573a 100644 --- a/services/device-inventory/src/client/discovery.h +++ b/services/device-inventory/src/client/discovery.h @@ -31,6 +31,7 @@ private: std::vector discover_cpu_slots(); std::vector discover_disks(); std::vector discover_nics(); + std::vector discover_gpus(); // Run a shell command, return trimmed stdout (≤64 KB). "" on failure. static std::string run_cmd(const std::string& cmd); diff --git a/services/device-inventory/src/client/main.cpp b/services/device-inventory/src/client/main.cpp index b6f991f..69713ac 100644 --- a/services/device-inventory/src/client/main.cpp +++ b/services/device-inventory/src/client/main.cpp @@ -245,7 +245,7 @@ static int cmd_discover_only(const std::string& filter_type) { const std::vector order = { PTYPE_CPU, PTYPE_CPU_SLOT, PTYPE_MEMORY_STICK, PTYPE_MEMORY_SLOT, - PTYPE_DISK, PTYPE_NIC + PTYPE_DISK, PTYPE_NIC, PTYPE_GPU }; static const std::map labels = { {PTYPE_CPU, "CPUs"}, @@ -254,6 +254,7 @@ static int cmd_discover_only(const std::string& filter_type) { {PTYPE_MEMORY_SLOT, "Memory Slots"}, {PTYPE_DISK, "Disks"}, {PTYPE_NIC, "NICs"}, + {PTYPE_GPU, "GPUs"}, }; // Collect sections that actually have data @@ -277,6 +278,7 @@ static int cmd_discover_only(const std::string& filter_type) { bool item_last = (ii + 1 == items.size()); auto& m = items[ii]->kv; std::string line; + std::vector extra_lines; if (type == PTYPE_CPU) { std::string sock = kv_get(m, K_SOCKET); @@ -286,12 +288,46 @@ static int cmd_discover_only(const std::string& filter_type) { std::string threads = kv_get(m, K_THREADS); if (!sock.empty()) line += "[" + sock + "] "; line += name.empty() ? "(unknown)" : name; - // Only append speed if the name doesn't already embed it (e.g. "@ 2.27GHz") if (!speed.empty() && name.find('@') == std::string::npos) line += " @ " + speed + " GHz"; if (!cores.empty() || !threads.empty()) line += " · " + (cores.empty() ? "?" : cores) + " cores / " + (threads.empty() ? "?" : threads) + " threads"; + // Secondary line: socket type, max speed, bus, voltage + { + std::string sock_type = kv_get(m, K_SOCKET_TYPE); + std::string max_spd = kv_get(m, K_MAX_SPEED_GHZ); + std::string bus = kv_get(m, K_BUS_MHZ); + std::string volt = kv_get(m, K_VOLTAGE_V); + std::string sline2; + if (!sock_type.empty()) sline2 += "Socket: " + sock_type; + if (!max_spd.empty() && max_spd != "0.000000") { + if (!sline2.empty()) sline2 += " · "; + sline2 += "Max: " + max_spd + " GHz"; + } + if (!bus.empty() && bus != "0") { + if (!sline2.empty()) sline2 += " · "; + sline2 += "Bus: " + bus + " MHz"; + } + if (!volt.empty() && volt != "0.0") { + if (!sline2.empty()) sline2 += " · "; + sline2 += "Voltage: " + volt + " V"; + } + if (!sline2.empty()) extra_lines.push_back(sline2); + } + // Third line: cache + { + std::string l1 = kv_get(m, K_CACHE_L1_KB); + std::string l2 = kv_get(m, K_CACHE_L2_KB); + std::string l3 = kv_get(m, K_CACHE_L3_KB); + if (!l1.empty() || !l2.empty() || !l3.empty()) { + std::string cline = "Cache:"; + if (!l1.empty() && l1 != "0") cline += " L1 " + l1 + " KB"; + if (!l2.empty() && l2 != "0") cline += " L2 " + l2 + " KB"; + if (!l3.empty() && l3 != "0") cline += " L3 " + l3 + " KB"; + extra_lines.push_back(cline); + } + } } else if (type == PTYPE_CPU_SLOT) { std::string sock = kv_get(m, K_SOCKET); @@ -300,10 +336,16 @@ static int cmd_discover_only(const std::string& filter_type) { if (!name.empty()) line += " " + name; } else if (type == PTYPE_MEMORY_STICK) { - std::string loc = kv_get(m, K_LOCATOR); - std::string size = kv_get(m, K_SIZE_MB); - std::string mfr = kv_get(m, K_MANUFACTURER); - std::string speed = kv_get(m, K_SPEED_MHZ); + std::string loc = kv_get(m, K_LOCATOR); + std::string size = kv_get(m, K_SIZE_MB); + std::string mfr = kv_get(m, K_MANUFACTURER); + std::string speed = kv_get(m, K_SPEED_MHZ); + std::string memtype = kv_get(m, K_MEM_TYPE); + std::string ff = kv_get(m, K_FORM_FACTOR); + std::string rank = kv_get(m, K_RANK); + std::string dw = kv_get(m, K_DATA_WIDTH); + std::string bw = kv_get(m, K_BANDWIDTH_MBPS); + std::string pn = kv_get(m, K_PART_NUMBER); if (!loc.empty()) line += "[" + loc + "] "; if (!size.empty()) { uint64_t mb = std::stoull(size); @@ -312,8 +354,19 @@ static int cmd_discover_only(const std::string& filter_type) { else line += std::to_string(mb) + " MB"; } - if (!mfr.empty()) line += " " + mfr; - if (!speed.empty()) line += " @ " + speed + " MHz"; + if (!memtype.empty()) line += " " + memtype; + if (!ff.empty()) line += " " + ff; + if (!rank.empty() && rank != "0") line += " Rank " + rank; + if (!dw.empty() && dw != "0") line += " " + dw + "-bit"; + if (!speed.empty() && speed != "0") line += " @ " + speed + " MHz"; + if (!bw.empty() && bw != "0") { + char bwbuf[32]; + uint64_t bwval = std::stoull(bw); + snprintf(bwbuf, sizeof(bwbuf), " \xe2\x89\x88 %llu MB/s", (unsigned long long)bwval); + line += bwbuf; + } + if (!mfr.empty()) line += " " + mfr; + if (!pn.empty()) line += " " + pn; } else if (type == PTYPE_MEMORY_SLOT) { std::string loc = kv_get(m, K_LOCATOR); @@ -360,12 +413,34 @@ static int cmd_discover_only(const std::string& filter_type) { if (!ips.empty()) line += ls_join(ips) + " "; if (!speed.empty() && speed != "0") line += speed + " Mbps"; + + } else if (type == PTYPE_GPU) { + std::string mfr = kv_get(m, K_MANUFACTURER); + std::string model = kv_get(m, K_MODEL); + std::string serial = kv_get(m, K_SERIAL); + std::string vram = kv_get(m, K_VRAM_MB); + if (!mfr.empty()) line += mfr + " "; + if (!model.empty()) line += model; + if (!serial.empty()) line += " [" + serial + "]"; + if (!vram.empty() && vram != "0") line += " " + vram + " MB VRAM"; + // Outputs as secondary line + std::string outputs = kv_get(m, K_DISPLAY_OUTPUTS); + if (!outputs.empty()) + extra_lines.push_back("Outputs: " + ls_join(outputs)); + else + extra_lines.push_back("Outputs: (none)"); } // Trim trailing spaces while (!line.empty() && line.back() == ' ') line.pop_back(); std::cout << child_pfx << (item_last ? "└── " : "├── ") << line << "\n"; + + // Print extra lines (indented further) + std::string extra_pfx = child_pfx + (item_last ? " " : "│ ") + " "; + for (auto& el : extra_lines) { + std::cout << extra_pfx << el << "\n"; + } } } diff --git a/services/device-inventory/src/common/models.h b/services/device-inventory/src/common/models.h index 28c4833..82bbf77 100644 --- a/services/device-inventory/src/common/models.h +++ b/services/device-inventory/src/common/models.h @@ -49,6 +49,12 @@ struct MemoryStick : PartBase { std::string channel_config; std::string other_info; std::string locator; + std::string memory_type; + std::string form_factor; + std::string part_number; + uint32_t rank = 0; + uint32_t data_width_bits = 0; + uint64_t bandwidth_mbps = 0; }; struct MemorySlot : PartBase { @@ -65,6 +71,13 @@ struct CPU : PartBase { uint32_t cores = 0; uint32_t threads = 0; std::string socket_designation; + std::string socket_type; + double max_speed_ghz = 0.0; + uint32_t bus_speed_mhz = 0; + uint32_t cache_l1_kb = 0; + uint32_t cache_l2_kb = 0; + uint32_t cache_l3_kb = 0; + double voltage_v = 0.0; }; struct CPUSlot : PartBase { @@ -104,6 +117,14 @@ struct NetworkCard : PartBase { bool dhcp = false; }; +struct GPU : PartBase { + std::string manufacturer; + std::string model; + uint64_t vram_mb = 0; + uint64_t bandwidth_mbps = 0; + std::vector display_outputs; +}; + // ───────────────────────────────────────────────────────────────────────────── // In-memory inventory // ───────────────────────────────────────────────────────────────────────────── @@ -118,6 +139,7 @@ struct Inventory { std::vector cpu_slots; std::vector disks; std::vector network_cards; + std::vector gpus; uint32_t next_server_id = 1; uint32_t next_part_type_id = 1; @@ -134,3 +156,4 @@ constexpr const char* PTYPE_CPU = "cpu"; constexpr const char* PTYPE_CPU_SLOT = "cpu_slot"; constexpr const char* PTYPE_DISK = "disk"; constexpr const char* PTYPE_NIC = "nic"; +constexpr const char* PTYPE_GPU = "gpu"; diff --git a/services/device-inventory/src/common/protocol.h b/services/device-inventory/src/common/protocol.h index 7160c68..69e1aac 100644 --- a/services/device-inventory/src/common/protocol.h +++ b/services/device-inventory/src/common/protocol.h @@ -105,6 +105,15 @@ constexpr const char* K_SPEED_GHZ = "speed_ghz"; constexpr const char* K_CORES = "cores"; constexpr const char* K_THREADS = "threads"; +// CPU extended +constexpr const char* K_MAX_SPEED_GHZ = "max_speed_ghz"; +constexpr const char* K_BUS_MHZ = "bus_speed_mhz"; +constexpr const char* K_CACHE_L1_KB = "cache_l1_kb"; +constexpr const char* K_CACHE_L2_KB = "cache_l2_kb"; +constexpr const char* K_CACHE_L3_KB = "cache_l3_kb"; +constexpr const char* K_VOLTAGE_V = "voltage_v"; +constexpr const char* K_SOCKET_TYPE = "socket_type"; + // CPUSlot constexpr const char* K_FORM_FACTOR = "form_factor"; constexpr const char* K_INSTALLED_CPU = "installed_cpu_id"; @@ -130,6 +139,18 @@ constexpr const char* K_MAC = "mac_address"; constexpr const char* K_IPS = "ip_addresses"; // LS-separated constexpr const char* K_DHCP = "dhcp"; +// MemoryStick extended +constexpr const char* K_MEM_TYPE = "memory_type"; +constexpr const char* K_PART_NUMBER = "part_number"; +constexpr const char* K_RANK = "rank"; +constexpr const char* K_DATA_WIDTH = "data_width_bits"; +constexpr const char* K_BANDWIDTH_MBPS = "bandwidth_mbps"; + +// GPU +constexpr const char* K_VRAM_MB = "vram_mb"; +constexpr const char* K_GPU_BANDWIDTH_MBPS = "gpu_bandwidth_mbps"; +constexpr const char* K_DISPLAY_OUTPUTS = "display_outputs"; + // ───────────────────────────────────────────────────────────────────────────── // Helpers // ───────────────────────────────────────────────────────────────────────────── diff --git a/services/device-inventory/src/server/database.cpp b/services/device-inventory/src/server/database.cpp index 301c1d8..87188af 100644 --- a/services/device-inventory/src/server/database.cpp +++ b/services/device-inventory/src/server/database.cpp @@ -110,6 +110,12 @@ static void apply_memory_stick(MemoryStick& m, const std::mapsecond; if (auto it = kv.find(K_OTHER_INFO); it != kv.end()) m.other_info = it->second; if (auto it = kv.find(K_LOCATOR); it != kv.end()) m.locator = it->second; + if (auto it = kv.find(K_MEM_TYPE); it != kv.end()) m.memory_type = it->second; + if (auto it = kv.find(K_FORM_FACTOR); it != kv.end()) m.form_factor = it->second; + if (auto it = kv.find(K_PART_NUMBER); it != kv.end()) m.part_number = it->second; + if (auto it = kv.find(K_RANK); it != kv.end()) m.rank = static_cast(std::stoul(it->second)); + if (auto it = kv.find(K_DATA_WIDTH); it != kv.end()) m.data_width_bits = static_cast(std::stoul(it->second)); + if (auto it = kv.find(K_BANDWIDTH_MBPS); it != kv.end()) m.bandwidth_mbps = std::stoull(it->second); } static void apply_memory_slot(MemorySlot& m, const std::map& kv) { @@ -131,6 +137,13 @@ static void apply_cpu(CPU& c, const std::map& kv) { if (auto it = kv.find(K_CORES); it != kv.end()) c.cores = static_cast(std::stoul(it->second)); if (auto it = kv.find(K_THREADS); it != kv.end()) c.threads = static_cast(std::stoul(it->second)); if (auto it = kv.find(K_SOCKET); it != kv.end()) c.socket_designation = it->second; + if (auto it = kv.find(K_SOCKET_TYPE); it != kv.end()) c.socket_type = it->second; + if (auto it = kv.find(K_MAX_SPEED_GHZ); it != kv.end()) c.max_speed_ghz = std::stod(it->second); + if (auto it = kv.find(K_BUS_MHZ); it != kv.end()) c.bus_speed_mhz = static_cast(std::stoul(it->second)); + if (auto it = kv.find(K_CACHE_L1_KB); it != kv.end()) c.cache_l1_kb = static_cast(std::stoul(it->second)); + if (auto it = kv.find(K_CACHE_L2_KB); it != kv.end()) c.cache_l2_kb = static_cast(std::stoul(it->second)); + if (auto it = kv.find(K_CACHE_L3_KB); it != kv.end()) c.cache_l3_kb = static_cast(std::stoul(it->second)); + if (auto it = kv.find(K_VOLTAGE_V); it != kv.end()) c.voltage_v = std::stod(it->second); } static void apply_cpu_slot(CPUSlot& c, const std::map& kv) { @@ -173,6 +186,15 @@ static void apply_nic(NetworkCard& n, const std::map& k if (auto it = kv.find(K_DHCP); it != kv.end()) n.dhcp = (it->second == "1" || it->second == "true"); } +static void apply_gpu(GPU& g, const std::map& kv) { + apply_base(g, kv); + if (auto it = kv.find(K_MANUFACTURER); it != kv.end()) g.manufacturer = it->second; + if (auto it = kv.find(K_MODEL); it != kv.end()) g.model = it->second; + if (auto it = kv.find(K_VRAM_MB); it != kv.end()) g.vram_mb = std::stoull(it->second); + if (auto it = kv.find(K_GPU_BANDWIDTH_MBPS); it != kv.end()) g.bandwidth_mbps = std::stoull(it->second); + if (auto it = kv.find(K_DISPLAY_OUTPUTS); it != kv.end()) g.display_outputs = ls_split(it->second); +} + // ───────────────────────────────────────────────────────────────────────────── // Wire-row serializers // type_namepart_idserver_idserial_or_NULLlast_updatedk1v1... @@ -193,6 +215,12 @@ std::string Database::serialize_memory_stick(const MemoryStick& m) const { + FS + K_CHANNEL_CONFIG + FS + m.channel_config + FS + K_OTHER_INFO + FS + m.other_info + FS + K_LOCATOR + FS + m.locator + + FS + K_MEM_TYPE + FS + m.memory_type + + FS + K_FORM_FACTOR + FS + m.form_factor + + FS + K_PART_NUMBER + FS + m.part_number + + FS + K_RANK + FS + std::to_string(m.rank) + + FS + K_DATA_WIDTH + FS + std::to_string(m.data_width_bits) + + FS + K_BANDWIDTH_MBPS + FS + std::to_string(m.bandwidth_mbps) + "\n"; } @@ -214,7 +242,14 @@ std::string Database::serialize_cpu(const CPU& c) const { + FS + K_SPEED_GHZ + FS + std::to_string(c.speed_ghz) + FS + K_CORES + FS + std::to_string(c.cores) + FS + K_THREADS + FS + std::to_string(c.threads) - + FS + K_SOCKET + FS + c.socket_designation + + FS + K_SOCKET + FS + c.socket_designation + + FS + K_SOCKET_TYPE + FS + c.socket_type + + FS + K_MAX_SPEED_GHZ + FS + std::to_string(c.max_speed_ghz) + + FS + K_BUS_MHZ + FS + std::to_string(c.bus_speed_mhz) + + FS + K_CACHE_L1_KB + FS + std::to_string(c.cache_l1_kb) + + FS + K_CACHE_L2_KB + FS + std::to_string(c.cache_l2_kb) + + FS + K_CACHE_L3_KB + FS + std::to_string(c.cache_l3_kb) + + FS + K_VOLTAGE_V + FS + std::to_string(c.voltage_v) + "\n"; } @@ -286,6 +321,28 @@ std::string Database::serialize_nic(const NetworkCard& n) const { + "\n"; } +std::string Database::serialize_gpu(const GPU& g) const { + auto esc_join = [](const std::vector& v) -> std::string { + std::string out; + for (size_t i = 0; i < v.size(); ++i) { + if (i) out += LS; + for (char c : v[i]) { + if (c == '\\') out += "\\\\"; + else if (c == '|') out += "\\|"; + else out += c; + } + } + return out; + }; + return base_prefix(PTYPE_GPU, g) + + FS + K_MANUFACTURER + FS + g.manufacturer + + FS + K_MODEL + FS + g.model + + FS + K_VRAM_MB + FS + std::to_string(g.vram_mb) + + FS + K_GPU_BANDWIDTH_MBPS + FS + std::to_string(g.bandwidth_mbps) + + FS + K_DISPLAY_OUTPUTS + FS + esc_join(g.display_outputs) + + "\n"; +} + // ───────────────────────────────────────────────────────────────────────────── // Constructor // ───────────────────────────────────────────────────────────────────────────── @@ -347,7 +404,13 @@ bool Database::save_nolock() { << "|" << escape(m.manufacturer) << "|" << escape(m.channel_config) << "|" << escape(m.other_info) - << "|" << escape(m.locator) << "\n"; + << "|" << escape(m.locator) + << "|" << escape(m.memory_type) + << "|" << escape(m.form_factor) + << "|" << escape(m.part_number) + << "|" << m.rank + << "|" << m.data_width_bits + << "|" << m.bandwidth_mbps << "\n"; } for (const auto& m : inv_.memory_slots) { std::string inst = m.installed_stick_id.has_value() @@ -369,7 +432,14 @@ bool Database::save_nolock() { << "|" << c.speed_ghz << "|" << c.cores << "|" << c.threads - << "|" << escape(c.socket_designation) << "\n"; + << "|" << escape(c.socket_designation) + << "|" << escape(c.socket_type) + << "|" << c.max_speed_ghz + << "|" << c.bus_speed_mhz + << "|" << c.cache_l1_kb + << "|" << c.cache_l2_kb + << "|" << c.cache_l3_kb + << "|" << c.voltage_v << "\n"; } for (const auto& c : inv_.cpu_slots) { std::string inst = c.installed_cpu_id.has_value() @@ -423,6 +493,17 @@ bool Database::save_nolock() { write_str_list(f, n.ip_addresses); f << "|" << (n.dhcp ? 1 : 0) << "\n"; } + for (const auto& g : inv_.gpus) { + f << "GPU|" << g.part_id << "|" << g.server_id + << "|" << escape(base_serial(g)) + << "|" << g.last_updated + << "|" << escape(g.manufacturer) + << "|" << escape(g.model) + << "|" << g.vram_mb + << "|" << g.bandwidth_mbps << "|"; + write_str_list(f, g.display_outputs); + f << "\n"; + } return true; } @@ -502,6 +583,12 @@ bool Database::load() { m.channel_config = get(8); m.other_info = get(9); m.locator = get(10); + m.memory_type = get(11); + m.form_factor = get(12); + m.part_number = get(13); + m.rank = getu32(14); + m.data_width_bits = getu32(15); + m.bandwidth_mbps = getu64(16); fresh.memory_sticks.push_back(std::move(m)); } else if (rec == "MSLOT" && flds.size() >= 8) { MemorySlot m; @@ -526,6 +613,13 @@ bool Database::load() { c.cores = getu32(8); c.threads = getu32(9); c.socket_designation = get(10); + c.socket_type = get(11); + c.max_speed_ghz = flds.size() > 12 && !flds[12].empty() ? std::stod(flds[12]) : 0.0; + c.bus_speed_mhz = getu32(13); + c.cache_l1_kb = getu32(14); + c.cache_l2_kb = getu32(15); + c.cache_l3_kb = getu32(16); + c.voltage_v = flds.size() > 17 && !flds[17].empty() ? std::stod(flds[17]) : 0.0; fresh.cpus.push_back(std::move(c)); } else if (rec == "CPUSLOT" && flds.size() >= 7) { CPUSlot c; @@ -598,6 +692,22 @@ bool Database::load() { } n.dhcp = (flds.size() > 12 && flds[12] == "1"); fresh.network_cards.push_back(std::move(n)); + } else if (rec == "GPU" && flds.size() >= 9) { + GPU g; + g.part_id = getu32(1); + g.server_id = getu32(2); + g.serial_number = get_serial(3); + g.last_updated = geti64(4); + g.manufacturer = get(5); + g.model = get(6); + g.vram_mb = getu64(7); + g.bandwidth_mbps = getu64(8); + // display_outputs: LS separated in flds[9] + if (flds.size() > 9) { + for (auto& e : split(flds[9], LS)) + g.display_outputs.push_back(unescape(e)); + } + fresh.gpus.push_back(std::move(g)); } } inv_ = std::move(fresh); @@ -739,6 +849,10 @@ uint32_t Database::add_part_nolock(const std::string& type_name, uint32_t server NetworkCard n; n.part_id = pid; n.server_id = server_id; n.last_updated = now; apply_nic(n, kv); inv_.network_cards.push_back(std::move(n)); + } else if (type_name == PTYPE_GPU) { + GPU g; g.part_id = pid; g.server_id = server_id; g.last_updated = now; + apply_gpu(g, kv); + inv_.gpus.push_back(std::move(g)); } else { // Unknown type — no-op, reclaim the id by decrementing --inv_.next_part_id; @@ -796,6 +910,8 @@ uint32_t Database::upsert_part(const std::string& type_name, uint32_t server_id, apply_cpu_slot(p, kv); else if constexpr (std::is_same_v, Disk>) apply_disk(p, kv); + else if constexpr (std::is_same_v, GPU>) + apply_gpu(p, kv); p.last_updated = now; save_nolock(); return p.part_id; @@ -810,6 +926,7 @@ uint32_t Database::upsert_part(const std::string& type_name, uint32_t server_id, else if (type_name == PTYPE_CPU) found = try_update(inv_.cpus); else if (type_name == PTYPE_CPU_SLOT) found = try_update(inv_.cpu_slots); else if (type_name == PTYPE_DISK) found = try_update(inv_.disks); + else if (type_name == PTYPE_GPU) found = try_update(inv_.gpus); if (found) return found; } // Natural key fallback when no serial — prevents duplicate inserts on each run @@ -866,6 +983,22 @@ uint32_t Database::upsert_part(const std::string& type_name, uint32_t server_id, } } } + } else if (type_name == PTYPE_GPU) { + auto mfr_it = kv.find(K_MANUFACTURER); + auto mod_it = kv.find(K_MODEL); + if (mod_it != kv.end() && !mod_it->second.empty()) { + const std::string& model = mod_it->second; + const std::string& mfr = (mfr_it != kv.end()) ? mfr_it->second : ""; + for (auto& g : inv_.gpus) { + if (g.server_id == server_id && g.model == model && + (mfr.empty() || g.manufacturer == mfr)) { + apply_gpu(g, kv); + g.last_updated = now; + save_nolock(); + return g.part_id; + } + } + } } } // Not found — insert @@ -896,6 +1029,7 @@ bool Database::edit_part(uint32_t part_id, const std::map Database::list_parts(uint32_t server_id, for (const auto& n : inv_.network_cards) if (n.server_id == server_id) rows.push_back(serialize_nic(n)); + if (all || type_filter == PTYPE_GPU) + for (const auto& g : inv_.gpus) + if (g.server_id == server_id) rows.push_back(serialize_gpu(g)); + return rows; } @@ -974,6 +1113,8 @@ std::string Database::get_part_row(uint32_t part_id) const { if (d.part_id == part_id) return serialize_disk(d); for (const auto& n : inv_.network_cards) if (n.part_id == part_id) return serialize_nic(n); + for (const auto& g : inv_.gpus) + if (g.part_id == part_id) return serialize_gpu(g); return ""; } diff --git a/services/device-inventory/src/server/database.h b/services/device-inventory/src/server/database.h index d0fb7c2..0826c36 100644 --- a/services/device-inventory/src/server/database.h +++ b/services/device-inventory/src/server/database.h @@ -95,4 +95,5 @@ private: std::string serialize_cpu_slot (const CPUSlot& c) const; std::string serialize_disk (const Disk& d) const; std::string serialize_nic (const NetworkCard& n) const; + std::string serialize_gpu (const GPU& g) const; };