WIP
This commit is contained in:
parent
e6a95e39be
commit
bd043eaed8
70
src/service_versions.cpp
Normal file
70
src/service_versions.cpp
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
#include "service_runner.hpp"
|
||||||
|
#include "utils/hash.hpp"
|
||||||
|
#include "utils/directories.hpp"
|
||||||
|
#include "utils/utils.hpp"
|
||||||
|
#include "templates.hpp"
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
#include <filesystem>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
namespace fs = std::filesystem;
|
||||||
|
|
||||||
|
namespace dropshell {
|
||||||
|
|
||||||
|
service_versions::service_versions(const std::string & server_name, const std::string & service_name)
|
||||||
|
: m_server_name(server_name), m_service_name(service_name)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
XXH64_hash_t service_versions::calculate_version_local_service_template()
|
||||||
|
{
|
||||||
|
template_info tinfo;
|
||||||
|
if (!get_template_info(m_service_name, tinfo)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return hash_directory_recursive(tinfo.local_template_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
XXH64_hash_t service_versions::calculate_version_local_config()
|
||||||
|
{
|
||||||
|
std::string config_path = get_local_service_path(m_server_name, m_service_name);
|
||||||
|
if (config_path.empty() || !fs::exists(config_path)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return hash_directory_recursive(config_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
void service_versions::update_stored_remote_versions()
|
||||||
|
{
|
||||||
|
XXH64_hash_t template_hash = calculate_version_remote_service_template();
|
||||||
|
XXH64_hash_t config_hash = calculate_version_remote_config();
|
||||||
|
|
||||||
|
// TODO - actually update things!
|
||||||
|
}
|
||||||
|
|
||||||
|
XXH64_hash_t service_versions::get_version_remote_config()
|
||||||
|
{
|
||||||
|
// TODO - actually get the version!
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
XXH64_hash_t service_versions::get_version_remote_service_template()
|
||||||
|
{
|
||||||
|
// TODO - actually get the version!
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
XXH64_hash_t service_versions::calculate_version_remote_service_template()
|
||||||
|
{
|
||||||
|
// TODO - actually get the version!
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
XXH64_hash_t service_versions::calculate_version_remote_config()
|
||||||
|
{
|
||||||
|
// TODO - actually get the version!
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace dropshell
|
@ -115,7 +115,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string user_templates_dir = local_config_directories[0] + "/templates";
|
std::string user_templates_dir = get_primary_local_config_path() + "/templates";
|
||||||
std::string new_template_path = user_templates_dir + "/" + template_name;
|
std::string new_template_path = user_templates_dir + "/" + template_name;
|
||||||
|
|
||||||
// Create the new template directory
|
// Create the new template directory
|
||||||
|
@ -36,6 +36,14 @@ std::string get_local_system_templates_path()
|
|||||||
return "/opt/dropshell/templates";
|
return "/opt/dropshell/templates";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string get_local_backup_path()
|
||||||
|
{
|
||||||
|
config *cfg = get_global_config();
|
||||||
|
if (!cfg)
|
||||||
|
return std::string();
|
||||||
|
return cfg->get_local_backup_path();
|
||||||
|
}
|
||||||
|
|
||||||
int getNumConfigDirectories()
|
int getNumConfigDirectories()
|
||||||
{
|
{
|
||||||
config *cfg = get_global_config();
|
config *cfg = get_global_config();
|
||||||
@ -43,6 +51,11 @@ int getNumConfigDirectories()
|
|||||||
return local_config_directories.size();
|
return local_config_directories.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string get_primary_local_config_path()
|
||||||
|
{
|
||||||
|
return get_local_config_path(0);
|
||||||
|
}
|
||||||
|
|
||||||
std::string get_local_config_path(int index)
|
std::string get_local_config_path(int index)
|
||||||
{
|
{
|
||||||
config *cfg = get_global_config();
|
config *cfg = get_global_config();
|
||||||
@ -55,16 +68,6 @@ std::string get_local_config_path(int index)
|
|||||||
return local_config_directories[index];
|
return local_config_directories[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::string get_local_backup_path()
|
|
||||||
{
|
|
||||||
config *cfg = get_global_config();
|
|
||||||
if (!cfg)
|
|
||||||
return std::string();
|
|
||||||
|
|
||||||
return cfg->get_local_backup_path();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string get_local_config_templates_path(int index)
|
std::string get_local_config_templates_path(int index)
|
||||||
{
|
{
|
||||||
std::string config_path = get_local_config_path(index);
|
std::string config_path = get_local_config_path(index);
|
||||||
@ -81,14 +84,6 @@ std::string get_local_config_servers_path(int index)
|
|||||||
return config_path + "/servers";
|
return config_path + "/servers";
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string get_local_config_backups_path(int index)
|
|
||||||
{
|
|
||||||
std::string config_path = get_local_config_path(index);
|
|
||||||
if (config_path.empty())
|
|
||||||
return std::string();
|
|
||||||
return config_path + "/backups";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string get_local_server_path(const std::string &server_name)
|
std::string get_local_server_path(const std::string &server_name)
|
||||||
{
|
{
|
||||||
config *cfg = get_global_config();
|
config *cfg = get_global_config();
|
||||||
@ -133,6 +128,18 @@ std::string get_local_service_env_path(const std::string &server_name, const std
|
|||||||
return (fs::path(servicepath) / "service.env").string();
|
return (fs::path(servicepath) / "service.env").string();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string get_local_service_hash_path(const std::string &server_name, const std::string &service_name)
|
||||||
|
{
|
||||||
|
if (server_name.empty() || service_name.empty())
|
||||||
|
return std::string();
|
||||||
|
|
||||||
|
std::string config_path = get_primary_local_config_path();
|
||||||
|
if (config_path.empty())
|
||||||
|
return std::string();
|
||||||
|
|
||||||
|
return (fs::path(config_path) / ".remote_versions" / server_name / (service_name + ".hash.env")).string();
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
// remote paths
|
// remote paths
|
||||||
|
@ -9,7 +9,6 @@ namespace dropshell {
|
|||||||
std::string get_local_dropshell_config_parent_path();
|
std::string get_local_dropshell_config_parent_path();
|
||||||
std::string get_local_dropshell_config_file();
|
std::string get_local_dropshell_config_file();
|
||||||
std::string get_local_system_templates_path();
|
std::string get_local_system_templates_path();
|
||||||
|
|
||||||
std::string get_local_backup_path();
|
std::string get_local_backup_path();
|
||||||
|
|
||||||
|
|
||||||
@ -28,22 +27,17 @@ namespace dropshell {
|
|||||||
// | |-- example
|
// | |-- example
|
||||||
// | |-- service.env
|
// | |-- service.env
|
||||||
// | |-- (other service config files)
|
// | |-- (other service config files)
|
||||||
|
// |-- .remote_versions
|
||||||
|
// | |-- server_name
|
||||||
|
// | |-- service_name.hash.env
|
||||||
|
|
||||||
|
std::string get_primary_local_config_path();
|
||||||
|
|
||||||
// system config directories (installed from templates in this git repository)
|
|
||||||
// /opt/dropshell
|
|
||||||
// |-- templates
|
|
||||||
// | |-- template_name
|
|
||||||
// | |-- (script files)
|
|
||||||
// | |-- example
|
|
||||||
// | |-- service.env
|
|
||||||
// | |-- (other service config files)
|
|
||||||
|
|
||||||
int getNumConfigDirectories();
|
int getNumConfigDirectories();
|
||||||
std::string get_local_config_path(int index);
|
std::string get_local_config_path(int index);
|
||||||
std::string get_local_config_templates_path(int index);
|
std::string get_local_config_templates_path(int index);
|
||||||
std::string get_local_config_servers_path(int index);
|
std::string get_local_config_servers_path(int index);
|
||||||
std::string get_local_config_backups_path(int index);
|
|
||||||
|
|
||||||
std::string get_local_server_path(const std::string &server_name);
|
std::string get_local_server_path(const std::string &server_name);
|
||||||
std::string get_local_server_env_path(const std::string &server_name);
|
std::string get_local_server_env_path(const std::string &server_name);
|
||||||
@ -51,6 +45,8 @@ namespace dropshell {
|
|||||||
std::string get_local_service_path(const std::string &server_name, const std::string &service_name);
|
std::string get_local_service_path(const std::string &server_name, const std::string &service_name);
|
||||||
std::string get_local_service_env_path(const std::string &server_name, const std::string &service_name);
|
std::string get_local_service_env_path(const std::string &server_name, const std::string &service_name);
|
||||||
|
|
||||||
|
std::string get_local_service_hash_path(const std::string &server_name, const std::string &service_name);
|
||||||
|
|
||||||
// remote paths
|
// remote paths
|
||||||
// DROPSHELL_DIR
|
// DROPSHELL_DIR
|
||||||
// |-- backups
|
// |-- backups
|
||||||
|
Loading…
x
Reference in New Issue
Block a user