Skip to content

Commit

Permalink
Removing Runner from Cluster
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel Hilst committed Feb 10, 2025
1 parent 892ae6a commit e4bcaa5
Show file tree
Hide file tree
Showing 45 changed files with 213 additions and 240 deletions.
20 changes: 7 additions & 13 deletions include/cloysterhpc/cluster.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
* environment, including headnode, nodes, networks, provisioner, timezone,
* locale, and more.
*/
template <typename Runner>
class Cluster {
public:
/**
Expand All @@ -57,10 +56,11 @@ class Cluster {
Headnode m_headnode;
Provisioner m_provisioner { Provisioner::xCAT };
std::optional<OFED> m_ofed;
std::optional<std::unique_ptr<QueueSystem<Runner>>> m_queueSystem {};
std::optional<std::unique_ptr<QueueSystem>> m_queueSystem {};
std::optional<Postfix> m_mailSystem {};
std::vector<Node> m_nodes;
std::unique_ptr<BaseRunner> m_runner;
// @TODO Removing m_runner from Cluster
// std::unique_ptr<BaseRunner> m_runner;
std::shared_ptr<DBusClient> m_systemdBus;

bool m_firewall { false };
Expand All @@ -75,16 +75,14 @@ class Cluster {
DiskImage m_diskImage;

// Relace repository with generic repository
std::optional<RepoManager<repository, Runner>> m_repos = std::nullopt;
std::optional<RepoManager<repository, BaseRunner>> m_repos = std::nullopt;

public:
Cluster();

[[nodiscard]] Headnode& getHeadnode();
[[nodiscard]] const Headnode& getHeadnode() const;

std::unique_ptr<Runner> getRunner() const;

[[nodiscard]] std::string_view getName() const;
void setName(std::string_view name);
[[nodiscard]] std::string_view getCompanyName() const;
Expand All @@ -107,10 +105,6 @@ class Cluster {

std::shared_ptr<DBusClient> getDaemonBus();

void initRepoManager();
RepoManager<repository, Runner>& getRepoManager();


/**
* @brief Add a new network to the cluster.
*
Expand Down Expand Up @@ -188,11 +182,11 @@ class Cluster {
std::optional<OFED> getOFED() const;
void setOFED(OFED::Kind kind);

std::optional<std::unique_ptr<QueueSystem<Runner>>>& getQueueSystem();
void setQueueSystem(QueueSystem<Runner>::Kind kind);
std::optional<std::unique_ptr<QueueSystem>>& getQueueSystem();
void setQueueSystem(QueueSystem::Kind kind);

std::optional<Postfix>& getMailSystem();
void setMailSystem(Postfix::Profile profile);
void setMailSystem(Postfix::Profile profile, std::shared_ptr<BaseRunner> runner);

const std::filesystem::path& getDiskImage() const;
void setDiskImage(const std::filesystem::path& diskImagePath);
Expand Down
5 changes: 5 additions & 0 deletions include/cloysterhpc/functions.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#ifndef CLOYSTERHPC_FUNCTIONS_H_
#define CLOYSTERHPC_FUNCTIONS_H_

#include "repos.h"
#include <boost/process/child.hpp>
#include <boost/process/pipe.hpp>
#include <filesystem>
Expand All @@ -12,11 +13,15 @@

#include <boost/asio.hpp>
#include <glibmm/keyfile.h>
#include <cloysterhpc/runner.h>

namespace cloyster {
// Globals
extern bool dryRun;

std::shared_ptr<BaseRunner> getRunner();
std::shared_ptr<RepoManager<repository, BaseRunner>> getRepoManager(const OS& osinfo);

/**
* A command proxy, to us to be able to get the
* command output while the command is running
Expand Down
4 changes: 2 additions & 2 deletions include/cloysterhpc/presenter/Presenter.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class Presenter {
// ref&
// - https://youtu.be/xnqTKD8uD64?t=1145
// - http://tinyurl.com/gotw91
std::unique_ptr<Cluster<BaseRunner>>& m_model;
std::unique_ptr<Cluster>& m_model;
std::unique_ptr<Newt>& m_view;

struct Messages {
Expand All @@ -30,7 +30,7 @@ class Presenter {
};
};

Presenter(std::unique_ptr<Cluster<BaseRunner>>& model, std::unique_ptr<Newt>& view)
Presenter(std::unique_ptr<Cluster>& model, std::unique_ptr<Newt>& view)
: m_model(model)
, m_view(view)
{
Expand Down
2 changes: 1 addition & 1 deletion include/cloysterhpc/presenter/PresenterGeneralSettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class PresenterGeneralSettings : public Presenter {

public:
PresenterGeneralSettings(
std::unique_ptr<Cluster<BaseRunner>>& model, std::unique_ptr<Newt>& view);
std::unique_ptr<Cluster>& model, std::unique_ptr<Newt>& view);
};

#endif // CLOYSTERHPC_PRESENTERGENERALSETTINGS_H_
2 changes: 1 addition & 1 deletion include/cloysterhpc/presenter/PresenterHostId.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class PresenterHostId : public Presenter {

public:
PresenterHostId(
std::unique_ptr<Cluster<BaseRunner>>& model, std::unique_ptr<Newt>& view);
std::unique_ptr<Cluster>& model, std::unique_ptr<Newt>& view);
};

#endif // CLOYSTERHPC_PRESENTERHOSTID_H_
2 changes: 1 addition & 1 deletion include/cloysterhpc/presenter/PresenterInfiniband.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class PresenterInfiniband : public Presenter {
};

public:
PresenterInfiniband(std::unique_ptr<Cluster<BaseRunner>>& model,
PresenterInfiniband(std::unique_ptr<Cluster>& model,
std::unique_ptr<Newt>& view, NetworkCreator& nc);
};

Expand Down
2 changes: 1 addition & 1 deletion include/cloysterhpc/presenter/PresenterInstall.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
class PresenterInstall : public Presenter {
public:
PresenterInstall(
std::unique_ptr<Cluster<BaseRunner>>& model, std::unique_ptr<Newt>& view);
std::unique_ptr<Cluster>& model, std::unique_ptr<Newt>& view);
};

#endif // CLOYSTERHPC_PRESENTERINSTALL_H_
2 changes: 1 addition & 1 deletion include/cloysterhpc/presenter/PresenterInstructions.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class PresenterInstructions : public Presenter {

public:
PresenterInstructions(
std::unique_ptr<Cluster<BaseRunner>>& model, std::unique_ptr<Newt>& view);
std::unique_ptr<Cluster>& model, std::unique_ptr<Newt>& view);
};

#endif // CLOYSTERHPC_PRESENTERINSTRUCTIONS_H_
2 changes: 1 addition & 1 deletion include/cloysterhpc/presenter/PresenterLocale.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class PresenterLocale : public Presenter {

public:
PresenterLocale(
std::unique_ptr<Cluster<BaseRunner>>& model, std::unique_ptr<Newt>& view);
std::unique_ptr<Cluster>& model, std::unique_ptr<Newt>& view);
};

#endif // CLOYSTERHPC_PRESENTERLOCALE_H_
2 changes: 1 addition & 1 deletion include/cloysterhpc/presenter/PresenterMailSystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class PresenterMailSystem : public Presenter {

public:
PresenterMailSystem(
std::unique_ptr<Cluster<BaseRunner>>& model, std::unique_ptr<Newt>& view);
std::unique_ptr<Cluster>& model, std::unique_ptr<Newt>& view);
};

#endif // CLOYSTERHPC_PRESENTERMAILSYSTEM_H_
4 changes: 2 additions & 2 deletions include/cloysterhpc/presenter/PresenterNetwork.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class NetworkCreator {

bool checkIfInterfaceRegistered(std::string_view interface);

void saveNetworksToModel(Cluster<BaseRunner>& model);
void saveNetworksToModel(Cluster& model);

std::size_t getSelectedInterfaces();
};
Expand Down Expand Up @@ -127,7 +127,7 @@ class PresenterNetwork : public Presenter {
const std::vector<std::string>& interfaceList, NetworkCreatorData& ncd);

public:
PresenterNetwork(std::unique_ptr<Cluster<BaseRunner>>& model,
PresenterNetwork(std::unique_ptr<Cluster>& model,
std::unique_ptr<Newt>& view, NetworkCreator& nc,
Network::Profile profile = Network::Profile::External,
Network::Type type = Network::Type::Ethernet);
Expand Down
2 changes: 1 addition & 1 deletion include/cloysterhpc/presenter/PresenterNodes.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ class PresenterNodes : public Presenter {

public:
PresenterNodes(
std::unique_ptr<Cluster<BaseRunner>>& model, std::unique_ptr<Newt>& view);
std::unique_ptr<Cluster>& model, std::unique_ptr<Newt>& view);
};

#endif // CLOYSTERHPC_PRESENTERNODES_H_
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ class PresenterNodesOperationalSystem : public Presenter {

public:
PresenterNodesOperationalSystem(
std::unique_ptr<Cluster<BaseRunner>>& model, std::unique_ptr<Newt>& view);
std::unique_ptr<Cluster>& model, std::unique_ptr<Newt>& view);
};

#endif // CLOYSTERHPC_PRESENTERNODESOPERATIONALSYSTEM_H_
2 changes: 1 addition & 1 deletion include/cloysterhpc/presenter/PresenterQueueSystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class PresenterQueueSystem : public Presenter {

public:
PresenterQueueSystem(
std::unique_ptr<Cluster<BaseRunner>>& model, std::unique_ptr<Newt>& view);
std::unique_ptr<Cluster>& model, std::unique_ptr<Newt>& view);
};

#endif // CLOYSTERHPC_PRESENTERQUEUESYSTEM_H_
2 changes: 1 addition & 1 deletion include/cloysterhpc/presenter/PresenterRepository.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ class PresenterRepository : public Presenter {

public:
PresenterRepository(
std::unique_ptr<Cluster<BaseRunner>>& model, std::unique_ptr<Newt>& view);
std::unique_ptr<Cluster>& model, std::unique_ptr<Newt>& view);
};
2 changes: 1 addition & 1 deletion include/cloysterhpc/presenter/PresenterTime.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class PresenterTime : public Presenter {
};

public:
PresenterTime(std::unique_ptr<Cluster<BaseRunner>>& model, std::unique_ptr<Newt>& view);
PresenterTime(std::unique_ptr<Cluster>& model, std::unique_ptr<Newt>& view);
};

#endif // CLOYSTERHPC_PRESENTERTIMEZONE_H_
2 changes: 1 addition & 1 deletion include/cloysterhpc/presenter/PresenterWelcome.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class PresenterWelcome : public Presenter {

public:
PresenterWelcome(
std::unique_ptr<Cluster<BaseRunner>>& model, std::unique_ptr<Newt>& view);
std::unique_ptr<Cluster>& model, std::unique_ptr<Newt>& view);
};

#endif // CLOYSTERHPC_PRESENTERWELCOME_H_
4 changes: 2 additions & 2 deletions include/cloysterhpc/queuesystem/pbs.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#include <cloysterhpc/runner.h>
#include <cloysterhpc/queuesystem/queuesystem.h>

class PBS : public QueueSystem<BaseRunner> {
class PBS : public QueueSystem {
public:
enum class ExecutionPlace { Shared, Scatter };

Expand All @@ -21,7 +21,7 @@ class PBS : public QueueSystem<BaseRunner> {
ExecutionPlace getExecutionPlace(void);

public:
explicit PBS(const Cluster<BaseRunner>& cluster);
explicit PBS(const Cluster& cluster);
};

#endif // CLOYSTERHPC_PBS_H_
6 changes: 2 additions & 4 deletions include/cloysterhpc/queuesystem/queuesystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,8 @@
#include <cloysterhpc/functions.h>

// Forward declaration of Cluster
template <typename Runner>
class Cluster;

template <typename Runner>
class QueueSystem {
public:
enum class Kind { None, SLURM, PBS };
Expand All @@ -25,7 +23,7 @@ class QueueSystem {
std::string m_defaultQueue;

protected:
const Cluster<Runner>& m_cluster;
const Cluster& m_cluster;

public:
void setKind(Kind kind);
Expand All @@ -34,7 +32,7 @@ class QueueSystem {
void setDefaultQueue(std::string_view);
std::string_view getDefaultQueue();

explicit QueueSystem(const Cluster<Runner>& cluster);
explicit QueueSystem(const Cluster& cluster);
virtual ~QueueSystem() = default;
};

Expand Down
4 changes: 2 additions & 2 deletions include/cloysterhpc/queuesystem/slurm.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@
* @class SLURM
* @brief Manages SLURM server installation and configuration.
*/
class SLURM : public QueueSystem<BaseRunner> {
class SLURM : public QueueSystem {
private:
bool m_accounting { false };

public:
explicit SLURM(const Cluster<BaseRunner>& cluster);
explicit SLURM(const Cluster& cluster);

/**
* @brief Installs the SLURM server package on the system.
Expand Down
4 changes: 2 additions & 2 deletions include/cloysterhpc/services/shell.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
*/
class Shell : public Execution {
private:
const std::unique_ptr<Cluster<BaseRunner>>& m_cluster;
const std::unique_ptr<Cluster>& m_cluster;

private:
/**
Expand Down Expand Up @@ -178,7 +178,7 @@ class Shell : public Execution {
*
* @param cluster A reference to a unique pointer managing a Cluster object.
*/
explicit Shell(const std::unique_ptr<Cluster<BaseRunner>>& cluster);
explicit Shell(const std::unique_ptr<Cluster>& cluster);
/**
* @brief Installs and configures the system.
*
Expand Down
4 changes: 2 additions & 2 deletions include/cloysterhpc/services/xcat.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class XCAT : public Provisioner {
enum class NodeType { Compute, Service };

private:
const std::unique_ptr<Cluster<BaseRunner>>& m_cluster;
const std::unique_ptr<Cluster>& m_cluster;

struct {
std::vector<std::string_view> otherpkgs = {};
Expand Down Expand Up @@ -251,7 +251,7 @@ class XCAT : public Provisioner {
*/
static void resetNodes();

explicit XCAT(const std::unique_ptr<Cluster<BaseRunner>>& cluster);
explicit XCAT(const std::unique_ptr<Cluster>& cluster);
};

#endif // CLOYSTERHPC_XCAT_H_
Loading

0 comments on commit e4bcaa5

Please sign in to comment.