ADD: added central kubernetes api class

This commit is contained in:
Henry Winkel
2023-12-21 17:15:28 +01:00
parent d1024de907
commit 351cf9ec69
12 changed files with 514 additions and 128 deletions

View File

@@ -1,3 +1,4 @@
#include "kubecontrol/KubernetesAPI.hpp"
#define CATCH_CONFIG_MAIN
#include <string>
#include <catch2/catch.hpp>
@@ -12,21 +13,41 @@ SCENARIO("Testing the SimCore Sensor")
GIVEN("different Attributes for a Track in different forms")
{
std::string api = "https://192.168.3.11:6443/api/v1/namespaces/simulator/pods/";
std::string token = "eyJhbGciOiJSUzI1NiIsImtpZCI6Il9tUkVrVkp5VjFKeDhtV2xDTmM4R2Y1ZkhRSlBOOWxaVnhKTkZuWVlJamMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJzaW11bGF0b3IiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlY3JldC5uYW1lIjoic2ltLXNlY3JldCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJzaW11bGF0b3IiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJlOGU5YzQ2ZS1lMzcxLTQxMTItOTgzYS1lNzM5NGJmNWE0YzEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6c2ltdWxhdG9yOnNpbXVsYXRvciJ9.JJjzj0RCU6PJruXuyrK_mNdW4piDADXKPtEW9YP2x1R57uhTDPFfG6LPMFbZTNyeI-A7A7bmjjAt0ICJDuLeL69J8ig3TS-i54R_PB--wFr-7jZMhnNz2wueyPuXxGiIuX-36H9rZ1cA-Dgt2qtDMNhK0TvOlgwUFU_cRjb2W0NhSvH8uB0qtIqOCyVzapCVwXWinyJPGiPL3ph8VxSo6P0ZDa4UjMJ_D6IlMpUpuHriKPLjGnDwTh2oJBjMFOmC_E0Mnr6Sd0rxzsIjIeG_ST6KqoPwyCTX27CPmO74CJUguLgFXSBOjuzvxon8KRYG6VJhRawEDnTU0zx6XrPXIQ";
// std::string api = "https://192.168.3.11:6443/api/v1/namespaces/simulator/pods/";
// std::string token = "eyJhbGciOiJSUzI1NiIsImtpZCI6Il9tUkVrVkp5VjFKeDhtV2xDTmM4R2Y1ZkhRSlBOOWxaVnhKTkZuWVlJamMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJzaW11bGF0b3IiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlY3JldC5uYW1lIjoic2ltLXNlY3JldCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJzaW11bGF0b3IiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJlOGU5YzQ2ZS1lMzcxLTQxMTItOTgzYS1lNzM5NGJmNWE0YzEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6c2ltdWxhdG9yOnNpbXVsYXRvciJ9.JJjzj0RCU6PJruXuyrK_mNdW4piDADXKPtEW9YP2x1R57uhTDPFfG6LPMFbZTNyeI-A7A7bmjjAt0ICJDuLeL69J8ig3TS-i54R_PB--wFr-7jZMhnNz2wueyPuXxGiIuX-36H9rZ1cA-Dgt2qtDMNhK0TvOlgwUFU_cRjb2W0NhSvH8uB0qtIqOCyVzapCVwXWinyJPGiPL3ph8VxSo6P0ZDa4UjMJ_D6IlMpUpuHriKPLjGnDwTh2oJBjMFOmC_E0Mnr6Sd0rxzsIjIeG_ST6KqoPwyCTX27CPmO74CJUguLgFXSBOjuzvxon8KRYG6VJhRawEDnTU0zx6XrPXIQ";
kubecontrol::KubernetesAPI KubeAPI(YAML::LoadFile("docs/config"));
auto guid = xg::newGuid();
std::string uuid = guid.str();
// int random = rand() % 100 + 1;
// std::string uuid = "random" + std::to_string(random);
kubecontrol::KubePod pod1("debug-debian",uuid,"debugdebianhenry:0.1.3");
pod1.setEnvironmentVar("OWN_SHIP_SERVER", "127.0.0.1");
LOG_S(INFO)<<pod1.createYAML();
kubecontrol::KubePod pod1("controller",uuid,"ship","ship:latest","simulator");
nlohmann::json vars;
vars["ENTITY_ID"] = uuid;
vars["ENTITY_NAME"] = "FGS Hamburg";
vars["ENTITY_SIDE"] = "Neutral";
vars["POSITION"]["LAT"] = "55";
vars["POSITION"]["LON"] = "8";
vars["POSITION"]["Height"] = "0";
vars["COURSE"] = "0";
vars["SPEED"] = "0";
vars["GROUNDTRUTH_PORT"] = std::to_string(10000);
vars["GROUNDTRUTH_ADDR"] = "239.0.0.1";
vars["COMMAND_PORT"] = "5555";
vars["ENTITY_RCS"] = std::to_string(850);
LOG_S(INFO)<<pod1.start(api,token);
LOG_S(INFO)<< pod1.getInfo(api, token);
pod1.stop(api,token);
vars["ENTITY_SENSORS"].push_back("radar:latest");
pod1.setEnvironmentVar("CONFIG", vars.dump());
// LOG_S(INFO)<<pod1.createYAML();
pod1.start(KubeAPI);
// LOG_S(INFO)<< pod1.getInfoForThisPod(KubeAPI);
// LOG_S(INFO)<< pod1.getInfoForRelatedPods(KubeAPI);
pod1.getUUIDForRelatedPods(KubeAPI);
pod1.stop(KubeAPI);
WHEN("constructing Track Object with data")
{

View File

@@ -3,17 +3,20 @@
#include "kubecontrol/KubePod.hpp"
#include "nlohmann/json_fwd.hpp"
#include <string>
#include <thread>
#include <vector>
#include <future>
#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp>
#include <kubecontrol/PodController.hpp>
#include <crossguid/guid.hpp>
void startShip(kubecontrol::PodController* podc,std::string Name, std::string lat, std::string lon)
void startShip(kubecontrol::PodController* podc,std::string uuid,std::string Name, std::string lat, std::string lon)
{
std::string uuid = xg::newGuid().str();
kubecontrol::KubePod ShipPod1("controller",uuid,"ship","ship:latest","simulator");
nlohmann::json vars;
@@ -36,14 +39,14 @@ std::string uuid = xg::newGuid().str();
podc->startPod(ShipPod1);
}
void createScenario(kubecontrol::PodController* podc)
void createScenario(kubecontrol::PodController* podc,std::vector<std::string> *uuidList)
{
// GeographicLib::Geodesic geod(GeographicLib::Constants::WGS84_a(), GeographicLib::Constants::WGS84_f());
double lat = 54, lon = 1;
int counter = 0;
double distance = 10000;
int rasterSize = 2;
int rasterSize = 5;
for (int i = 0; i < rasterSize; i++ )
{
@@ -58,8 +61,10 @@ void createScenario(kubecontrol::PodController* podc)
lat2= lat+10;
// SimCore::Identifier id;
// ids->push_back(id.getUUID());
startShip( podc,name, std::to_string(lat2), std::to_string(lon2));
std::string uuid = xg::newGuid().str();
uuidList->push_back(uuid);
// startShip( podc,uuid,name, std::to_string(lat2), std::to_string(lon2));
auto retrurn = std::async(std::launch::async, &startShip,podc,uuid,name, std::to_string(lat2), std::to_string(lon2));
// SimCore::Position pos;
// pos.setGeodesicPos(lat2, lon2, 0);
@@ -86,13 +91,24 @@ SCENARIO("Testing the SimCore Sensor")
{
kubecontrol::PodController podc("docs/config");
// kubecontrol::PodController podc("docs/config");
auto podc = new kubecontrol::PodController("docs/config");
std::vector<std::string> uuidList;
createScenario(&podc);
createScenario(podc, &uuidList);
std::this_thread::sleep_for(std::chrono::milliseconds(5000));
LOG_S(INFO)<<"Amount Parent Pods: " << uuidList.size();
std::this_thread::sleep_for(std::chrono::milliseconds(20000));
// podc.stopPod(std::string Label)
podc.stopAllPods();
for (auto i: uuidList)
{
auto retrurn = std::async(std::launch::async, &kubecontrol::PodController::stopPod,podc,i);
}
// std::this_thread::sleep_for(std::chrono::milliseconds(20000));
podc->stopAllPods();
GIVEN("different Attributes for a Track in different forms")
{

View File

@@ -3,6 +3,7 @@
#include "kubecontrol/PodController.hpp"
#include "nlohmann/json_fwd.hpp"
#include <thread>
#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp>
#include <kubecontrol/PodInfo.hpp>
@@ -10,11 +11,52 @@
SCENARIO("Testing the SimCore Sensor")
{
kubecontrol::PodController podc("docs/config");
podc.checkPodsHierarchy();
auto tmp = podc.getInfoForPod("hamburg");
LOG_S(INFO)<<tmp;
kubecontrol::PodInfo info(tmp);
kubecontrol::PodController podc("docs/config");
std::string name = "hamburg";
std::string uuid = name;
kubecontrol::KubePod ShipPod1("controller",uuid,"ship","ship:latest","simulator");
nlohmann::json vars;
vars["ENTITY_ID"] = uuid;
vars["ENTITY_NAME"] = "FGS Hamburg";
vars["ENTITY_SIDE"] = "Neutral";
vars["POSITION"]["LAT"] = "55";
vars["POSITION"]["LON"] = "8";
vars["POSITION"]["Height"] = "0";
vars["COURSE"] = "0";
vars["SPEED"] = "0";
vars["GROUNDTRUTH_PORT"] = std::to_string(10000);
vars["GROUNDTRUTH_ADDR"] = "239.0.0.1";
vars["COMMAND_PORT"] = "5555";
vars["ENTITY_RCS"] = std::to_string(850);
vars["ENTITY_SENSORS"].push_back("radar:latest");
ShipPod1.setEnvironmentVar("CONFIG", vars.dump());
LOG_S(INFO)<<"Starting";
podc.startPod(ShipPod1);
LOG_S(INFO)<<"started";
std::this_thread::sleep_for(std::chrono::milliseconds(5000));
podc.checkPodsHierarchy();
auto tmp = podc.getInfoForPod(name);
// LOG_S(INFO)<<tmp;
kubecontrol::PodInfo info(tmp);
LOG_S(INFO)<<info.ToString();
LOG_S(INFO)<<info.ToJson();
podc.stopAllPods();
GIVEN("different Attributes for a Track in different forms")
{

View File

@@ -42,22 +42,33 @@ std::string uuid = name;
// kubecontrol::KubePod pod2("Pod2",xg::newGuid().str(),"debugdebianhenry:0.1.3");
// pod1.setArgs("-c");
// pod1.setArgs("while true; do echo hello; sleep 5;done");
// pod2.setArgs("-c");
// pod2.setArgs("while true; do echo hello; sleep 5;done");
// pod1.setCommand("/bin/sh");
// pod2.setCommand("/bin/sh");
// podc.startPod(pod2);
LOG_S(INFO)<<"Starting";
podc.startPod(ShipPod1);
// podc.startPod(pod2);
LOG_S(INFO)<<"started";
std::string info1 = "";
info1 = podc.getInfoForPod("hamburg");
nlohmann::json j1 = nlohmann::json::parse(info1);
// info1 = podc.getInfoForPod("hamburg");
// nlohmann::json j1 = nlohmann::json::parse(info1);
nlohmann::json jall = nlohmann::json::parse(podc.getPodsInfo());
std::this_thread::sleep_for(std::chrono::milliseconds(5000));
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
podc.stopAllPods();
// podc.checkPodsHierarchy();
// LOG_S(INFO)<<podc.PodList_.size();;
// for(auto i: podc.PodList_)
// {
// LOG_S(INFO)<< i.InfoPod.Uuid;
// LOG_S(INFO)<< i.InfoPod.ToString();
// }
// nlohmann::json jall = nlohmann::json::parse(podc.getPodsInfo());
GIVEN("different Attributes for a Track in different forms")
{
@@ -66,8 +77,11 @@ podc.stopAllPods();
THEN("check if Track attributes are correct")
{
REQUIRE(true == true);
REQUIRE(podc.getListOfChildPods() == 1);
LOG_S(INFO)<<"Stopping";
std::this_thread::sleep_for(std::chrono::milliseconds(5000));
podc.stopAllPods();
// REQUIRE(info1 != "");