#include "nlohmann/json_fwd.hpp" #include "yaml-cpp/emitter.h" #include "yaml-cpp/emitterstyle.h" #include "yaml-cpp/node/node.h" #include #include #include #include #include #include #include #include #include #include #include #include namespace kubecontrol { kubecontrol::kubecontrol(std::string pathToKubectlConfig) { YAML::Node config = YAML::LoadFile(pathToKubectlConfig); BearerToken_ = config["users"][0]["user"]["token"].as(); ServerAddress_ = config["clusters"][0]["cluster"]["server"].as(); } void kubecontrol::getPods() { std::string curlURL = ServerAddress_+"/api/v1/namespaces/hwinkel/pods/"; std::string AuthString = "Authorization: Bearer " + BearerToken_; std::list headers; headers.push_back(AuthString); curlpp::Cleanup cleaner; curlpp::Easy request; WriterMemoryClass mWriterChunk; curlpp::types::WriteFunctionFunctor functor = std::bind(&WriterMemoryClass::WriteMemoryCallback, &mWriterChunk, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); curlpp::options::WriteFunction *test = new curlpp::options::WriteFunction(functor); request.setOpt(test); request.setOpt(new curlpp::options::HttpHeader(headers)); request.setOpt(new curlpp::options::Url(curlURL)); request.setOpt(new curlpp::options::SslEngineDefault()); request.setOpt(new curlpp::options::CaPath("config/ca.crt")); request.setOpt(new curlpp::options::SslVerifyPeer(false)); // request.setOpt(new curlpp::options::Verbose(true)); request.perform(); auto response = mWriterChunk.getResponse(); auto j = nlohmann::json::parse(response); LOG_S(INFO)< headers; headers.push_back(AuthString); headers.push_back("Content-Type: application/yaml"); curlpp::Cleanup cleaner; curlpp::Easy request; WriterMemoryClass mWriterChunk; curlpp::types::WriteFunctionFunctor functor = std::bind(&WriterMemoryClass::WriteMemoryCallback, &mWriterChunk, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); curlpp::options::WriteFunction *test = new curlpp::options::WriteFunction(functor); request.setOpt(test); request.setOpt(new curlpp::options::HttpHeader(headers)); request.setOpt(new curlpp::options::Url(curlURL)); request.setOpt(new curlpp::options::SslEngineDefault()); request.setOpt(new curlpp::options::CaPath("config/ca.crt")); request.setOpt(new curlpp::options::SslVerifyPeer(false)); request.setOpt(new curlpp::options::Post(true)); auto yaml = createYAML(); std::ifstream is; is.open ("config/pods_deployment.yaml", std::ios::binary ); // get length of file: is.seekg (0, std::ios::end); long length = is.tellg(); is.seekg (0, std::ios::beg); // allocate memory: char *buffer = new char [length]; // read data as a block: is.read (buffer,length); std::istringstream myStream((std::string( buffer ))); int size = myStream.str().size(); is.close(); request.setOpt(new curlpp::options::PostFields(buffer)); // request.setOpt(new curlpp::options::Verbose(true)); request.perform(); auto response = mWriterChunk.getResponse(); // LOG_S(INFO)< headers; headers.push_back(AuthString); // headers.push_back("Content-Type: application/yaml"); curlpp::Cleanup cleaner; curlpp::Easy request; WriterMemoryClass mWriterChunk; curlpp::types::WriteFunctionFunctor functor = std::bind(&WriterMemoryClass::WriteMemoryCallback, &mWriterChunk, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); curlpp::options::WriteFunction *test = new curlpp::options::WriteFunction(functor); request.setOpt(test); request.setOpt(new curlpp::options::HttpHeader(headers)); request.setOpt(new curlpp::options::Url(curlURL)); request.setOpt(new curlpp::options::SslEngineDefault()); request.setOpt(new curlpp::options::CaPath("config/ca.crt")); request.setOpt(new curlpp::options::SslVerifyPeer(false)); // request.setOpt(new curlpp::options::Post(true)); // request.setOpt(new curlpp::options::PostFields("DELETE")); request.setOpt(new curlpp::options::CustomRequest("DELETE")); // request.setOpt(new curlpp::options::Verbose(true)); request.perform(); auto response = mWriterChunk.getResponse(); // LOG_S(INFO)<