diff --git a/.gitmodules b/.gitmodules index b408c5c..6a15a4c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "libs/nlohmannJSON"] path = libs/nlohmannJSON url = https://github.com/nlohmann/json.git +[submodule "libs/KubeControl"] + path = libs/KubeControl + url = ssh://git@dev-gitea.ftewa.ti.unibw-hamburg.de:12000/hwinkel/KubeControl.git diff --git a/include/Entities/Entity.hpp b/include/Entities/Entity.hpp index f3d5732..af45058 100644 --- a/include/Entities/Entity.hpp +++ b/include/Entities/Entity.hpp @@ -10,6 +10,7 @@ #include "SimCore/Orientation.hpp" #include "SimCore/SafeMap.hpp" #include "SimCore/SimCore.hpp" +#include "kubecontrol/PodController.hpp" #include #include @@ -111,6 +112,7 @@ namespace Entities { void startSensor(); + std::unique_ptr PodController_; std::shared_ptr> SensorStore_; diff --git a/libs/KubeControl b/libs/KubeControl new file mode 160000 index 0000000..96495f4 --- /dev/null +++ b/libs/KubeControl @@ -0,0 +1 @@ +Subproject commit 96495f44eadb56f5e8115c2a171310304527a227 diff --git a/src/Entities/Entity.cpp b/src/Entities/Entity.cpp index 0fc6f48..f45f198 100644 --- a/src/Entities/Entity.cpp +++ b/src/Entities/Entity.cpp @@ -2,11 +2,16 @@ #include "Entities/Movement.hpp" #include "Orders/MoveOrder.hpp" #include "SimCore/Messages/SimTrack.hpp" +#include "SimCore/UtilFunctions.hpp" #include "WHISPER/InternalUDPListener.hpp" #include "WHISPER/InternalUDPSender.hpp" #include "WHISPER/Messages/Message.hpp" #include "WHISPER/Messages/stringData.hpp" #include "WHISPER/threadSafeQueue.hpp" +#include "crossguid/guid.hpp" +#include "kubecontrol/KubePod.hpp" +#include "kubecontrol/PodController.hpp" +#include "yaml-cpp/node/parse.h" #include #include @@ -34,6 +39,7 @@ namespace Entities EntityKind_(EntityKind) { + PodController_ = std::make_unique("libs/KubeControl/docs/config"); OwnShipTrack = std::make_shared(OwnID, OwnType, EntityKind); OwnShipTrack->setPosition(SimCore::Position()); @@ -116,8 +122,13 @@ namespace Entities } void Entity::startMovementWorker() - { + { + auto MovementPod = kubecontrol::KubePod("MovmentPod_"+EntityName_,xg::newGuid().str(),"movementimage:latest"); + MovementPod.setEnvironmentVar("SERVER_IP", SimCore::UtilFunctions::getOwnIP()); + // LOG_S(INFO)<< MovementPod.createYAML(); + LOG_S(INFO)<getServerAddress(); + LOG_S(INFO)<< "TODO: starting the movement app from here"; if (MovemtServer_->countClients() > 0 ) diff --git a/tests/test_EntityClass.cpp b/tests/test_EntityClass.cpp index c40f7f3..2429ab8 100644 --- a/tests/test_EntityClass.cpp +++ b/tests/test_EntityClass.cpp @@ -22,17 +22,17 @@ class Ship : public Entities::Entity SimCore::Identifier ParentID, SimCore::EntityKind EntityKind, std::uint32_t GroundTruthPort, - std::uint32_t CommandPort, - std::string CommandIPAddress): - Entity( OwnID,EntityName,ownType, ParentID, EntityKind, GroundTruthPort, CommandPort, CommandIPAddress) + std::uint32_t CommandPort + ): + Entity( OwnID,EntityName,ownType, ParentID, EntityKind, GroundTruthPort, CommandPort) { SimCore::Position pos1; pos1.setGeodesicPos(55, 6, 0); - Movement_.setPosition(pos1); - Movement_.setCourse(0); - Movement_.setSpeed(100); + // Movement_.setPosition(pos1); + // Movement_.setCourse(0); + // Movement_.setSpeed(100); - LOG_S(INFO)< movOrd = std::make_shared(OrderID,*ID1.get(),*ID2.get(),WHISPER::SourceType::GATEWAY); + std::shared_ptr movOrd = std::make_shared(*ID1.get(),WHISPER::SourceType::GATEWAY); auto list = std::vector>(); list.push_back(movOrd); @@ -42,24 +42,22 @@ SCENARIO("Testing the SimCore Sensor") res = true; } - movOrd->setSpeed(100); + movOrd->Speed.setValue(100); - movOrd->setStartTime(duration_cast(std::chrono::system_clock::now().time_since_epoch()).count()+3); + movOrd->StartTime.setValue(duration_cast(std::chrono::system_clock::now().time_since_epoch()).count()+3); THEN("check if Track attributes are correct") { REQUIRE(movOrd->getOrderID() == OrderID); - REQUIRE(movOrd->getOrderingEntity() == *ID1.get()); - REQUIRE(movOrd->getOrderedEntity() == *ID2.get()); REQUIRE(res == true); - REQUIRE(movOrd->getSpeed() == 100); - REQUIRE(movOrd->getStartTime() > duration_cast(std::chrono::system_clock::now().time_since_epoch()).count()); + REQUIRE(movOrd->Speed.getValue() == 100); + REQUIRE(movOrd->StartTime.getValue() > duration_cast(std::chrono::system_clock::now().time_since_epoch()).count()); std::this_thread::sleep_for(std::chrono::seconds(5)); - REQUIRE(movOrd->getStartTime() < duration_cast(std::chrono::system_clock::now().time_since_epoch()).count()); + REQUIRE(movOrd->StartTime.getValue() < duration_cast(std::chrono::system_clock::now().time_since_epoch()).count()); - REQUIRE(mvOrder2->getSpeed() == movOrd->getSpeed()); + REQUIRE(mvOrder2->Speed.getValue() == movOrd->Speed.getValue());