#include "nlohmann/json_fwd.hpp" #include namespace kubecontrol { PodInfo::PodInfo() { Uuid = ""; Component = ""; Image = ""; Ip = ""; Status = ""; PartOf = ""; } PodInfo::PodInfo(std::string response) { update(response); } void PodInfo::update(std::string response) { try { nlohmann::json j = nlohmann::json::parse(response); if (j.contains("items")) { if (j["items"].size() == 1) { Uuid = j["items"][0]["metadata"]["labels"]["app.kubernetes.io/name"].get(); Component = j["items"][0]["metadata"]["labels"]["app.kubernetes.io/component"].get(); Image = j["items"][0]["spec"]["containers"][0]["image"].get(); Ip = j["items"][0]["status"]["podIP"].get(); Status = j["items"][0]["status"]["phase"].get(); PartOf = j["items"][0]["metadata"]["labels"]["app.kubernetes.io/part-of"].get(); } }else { Uuid = j["metadata"]["labels"]["app.kubernetes.io/name"].get(); Component = j["metadata"]["labels"]["app.kubernetes.io/component"].get(); PartOf = j["metadata"]["labels"]["app.kubernetes.io/part-of"].get(); Image = j["spec"]["containers"][0]["image"].get(); if (j["status"].contains("podIP")) Ip = j["status"]["podIP"].get(); Status = j["status"]["phase"].get(); } } catch (std::exception& e) { LOG_S(ERROR)< PodInfo::getRelatedPods() { return relatedPods; } std::string PodInfo::ToString() { return "UUID: "+Uuid + " Compoment: " + Component + " Image: "+ Image+ " IP: " + Ip + " Status: "+Status + " Part Of: " +PartOf; } nlohmann::json PodInfo::ToJson() { nlohmann::json j; j["UUID"] = Uuid; j["Compoment"] = Component; j["Image"] = Image; j["Ip"] = Ip; j["Status"] = Status; j["Part-Of"] = PartOf; return j; } void PodInfo::addRelatedPods(std::string uuid) { if ( std::find(relatedPods.begin(), relatedPods.end(), uuid) == relatedPods.end() ) { relatedPods.emplace_back(uuid); } } size_t PodInfo::relatedPodsSize() { return relatedPods.size(); } }