Fairly big refactor...
This commit is contained in:
@ -1,9 +1,11 @@
|
||||
#include "init_user_directory.hpp"
|
||||
#include "dropshell.hpp"
|
||||
#include "servers.hpp"
|
||||
#include "server_env.hpp"
|
||||
#include "server_service.hpp"
|
||||
#include "service_runner.hpp"
|
||||
#include "tableprint.hpp"
|
||||
#include "interactive/interactive.hpp"
|
||||
#include "utils/envmanager.hpp"
|
||||
#include "utils/directories.hpp"
|
||||
#include "services.hpp"
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <iomanip>
|
||||
@ -16,32 +18,29 @@ namespace dropshell {
|
||||
|
||||
std::vector<ServerInfo> get_configured_servers() {
|
||||
std::vector<ServerInfo> servers;
|
||||
std::string user_dir;
|
||||
|
||||
if (!is_config_loaded()) {
|
||||
std::cerr << "Error: Config not loaded" << std::endl;
|
||||
return servers;
|
||||
}
|
||||
if (!get_user_directory(user_dir)) {
|
||||
std::cerr << "Error: User directory not set" << std::endl;
|
||||
return servers;
|
||||
}
|
||||
fs::path servers_dir = fs::path(user_dir) / "servers";
|
||||
if (!fs::exists(servers_dir)) {
|
||||
std::string servers_dir = get_local_config_servers_path();
|
||||
if (servers_dir.empty()) {
|
||||
std::cerr << "Error: Servers directory not found" << std::endl;
|
||||
return servers;
|
||||
}
|
||||
|
||||
if (!fs::exists(servers_dir)) {
|
||||
std::cerr << "Error: Servers directory not found:" << servers_dir << std::endl;
|
||||
return servers;
|
||||
}
|
||||
|
||||
for (const auto& entry : fs::directory_iterator(servers_dir)) {
|
||||
if (fs::is_directory(entry)) {
|
||||
fs::path env_file = entry.path();
|
||||
server_env env(env_file.string());
|
||||
std::string server_name = entry.path().filename().string();
|
||||
|
||||
server_env env(server_name);
|
||||
if (!env.is_valid()) {
|
||||
std::cerr << "Error: Invalid server environment file: " << env_file.string() << std::endl;
|
||||
std::cerr << "Error: Invalid server environment file: " << server_name << std::endl;
|
||||
continue;
|
||||
}
|
||||
servers.push_back({
|
||||
entry.path().filename().string(),
|
||||
server_name,
|
||||
env.get_SSH_HOST(),
|
||||
env.get_SSH_USER(),
|
||||
env.get_SSH_PORT()
|
||||
@ -91,10 +90,10 @@ void list_servers() {
|
||||
for (const auto& server : servers) {
|
||||
std::vector<int> ports_used;
|
||||
std::string serviceticks = "";
|
||||
std::vector<std::string> services = get_server_services(server.name);
|
||||
std::vector<ServiceInfo> services = get_server_services_info(server.name);
|
||||
for (const auto& service : services) {
|
||||
server_service ss;
|
||||
if (ss.init(server.name, service))
|
||||
service_runner ss;
|
||||
if (ss.init(server.name, service.service_name))
|
||||
{
|
||||
if (ss.is_healthy())
|
||||
serviceticks += ":tick: ";
|
||||
@ -120,21 +119,12 @@ void list_servers() {
|
||||
}
|
||||
|
||||
void show_server_details(const std::string& server_name) {
|
||||
std::string user_dir;
|
||||
if (!get_user_directory(user_dir)) {
|
||||
std::cerr << "Error: User directory not set" << std::endl;
|
||||
server_env env(server_name);
|
||||
if (!env.is_valid()) {
|
||||
std::cerr << "Error: Invalid server environment file: " << server_name << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
fs::path server_dir = fs::path(user_dir) / "servers" / server_name;
|
||||
if (!fs::exists(server_dir)) {
|
||||
std::cerr << "Error: Server '" << server_name << "' not found" << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
server_env env(server_dir.string());
|
||||
|
||||
|
||||
//---------------------
|
||||
// Check if server is reachable via SSH
|
||||
std::string ssh_address = env.get_SSH_HOST();
|
||||
@ -176,12 +166,12 @@ void show_server_details(const std::string& server_name) {
|
||||
tableprint tp("Services: " + server_name, false);
|
||||
tp.add_row({"Status", "Service", "Ports"});
|
||||
|
||||
std::vector<std::string> services = get_server_services(server_name);
|
||||
std::vector<ServiceInfo> services = get_server_services_info(server_name);
|
||||
for (const auto& service : services) {
|
||||
bool healthy = false;
|
||||
std::vector<int> ports;
|
||||
server_service ss;
|
||||
if (ss.init(server_name, service))
|
||||
service_runner ss;
|
||||
if (ss.init(server_name, service.service_name))
|
||||
{
|
||||
if (ss.is_healthy())
|
||||
healthy=true;
|
||||
@ -196,7 +186,7 @@ void show_server_details(const std::string& server_name) {
|
||||
ports_str += std::to_string(port);
|
||||
first = false;
|
||||
}
|
||||
tp.add_row({healthy ? ":tick:" : ":cross:", service, ports_str});
|
||||
tp.add_row({healthy ? ":tick:" : ":cross:", service.service_name, ports_str});
|
||||
} // end of for (const auto& service : services)
|
||||
tp.print();
|
||||
} // end of list services
|
||||
|
Reference in New Issue
Block a user