added installController with logic for server/container installation
This commit is contained in:
parent
03a0e2084a
commit
acca85b99a
19 changed files with 519 additions and 151 deletions
|
@ -33,7 +33,7 @@ bool ConnectionController::openVpnConnection()
|
|||
DockerContainer container = m_containersModel->getDefaultContainer();
|
||||
QModelIndex containerModelIndex = m_containersModel->index(container);
|
||||
const QJsonObject &containerConfig = qvariant_cast<QJsonObject>(m_containersModel->data(containerModelIndex,
|
||||
ContainersModel::ContainersModelRoles::ConfigRole));
|
||||
ContainersModel::Roles::ConfigRole));
|
||||
|
||||
//todo error handling
|
||||
qApp->processEvents();
|
||||
|
|
82
client/ui/controllers/installController.cpp
Normal file
82
client/ui/controllers/installController.cpp
Normal file
|
@ -0,0 +1,82 @@
|
|||
#include "installController.h"
|
||||
|
||||
#include <QJsonObject>
|
||||
|
||||
#include "core/servercontroller.h"
|
||||
|
||||
InstallController::InstallController(const QSharedPointer<ServersModel> &serversModel,
|
||||
const QSharedPointer<ContainersModel> &containersModel,
|
||||
const std::shared_ptr<Settings> &settings,
|
||||
QObject *parent) : QObject(parent), m_serversModel(serversModel), m_containersModel(containersModel), m_settings(settings)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
ErrorCode InstallController::install(DockerContainer container, int port, TransportProto transportProto)
|
||||
{
|
||||
Proto mainProto = ContainerProps::defaultProtocol(container);
|
||||
|
||||
QJsonObject containerConfig {
|
||||
{ config_key::port, QString::number(port) },
|
||||
{ config_key::transport_proto, ProtocolProps::transportProtoToString(transportProto, mainProto) }
|
||||
};
|
||||
QJsonObject config {
|
||||
{ config_key::container, ContainerProps::containerToString(container) },
|
||||
{ ProtocolProps::protoToString(mainProto), containerConfig }
|
||||
};
|
||||
|
||||
if (m_shouldCreateServer) {
|
||||
return installServer(container, config);
|
||||
} else {
|
||||
return installContainer(container, config);
|
||||
}
|
||||
}
|
||||
|
||||
ErrorCode InstallController::installServer(DockerContainer container, QJsonObject& config)
|
||||
{
|
||||
//todo check if container already installed
|
||||
ServerController serverController(m_settings);
|
||||
ErrorCode errorCode = serverController.setupContainer(m_currentlyInstalledServerCredentials, container, config);
|
||||
if (errorCode == ErrorCode::NoError) {
|
||||
QJsonObject server;
|
||||
server.insert(config_key::hostName, m_currentlyInstalledServerCredentials.hostName);
|
||||
server.insert(config_key::userName, m_currentlyInstalledServerCredentials.userName);
|
||||
server.insert(config_key::password, m_currentlyInstalledServerCredentials.password);
|
||||
server.insert(config_key::port, m_currentlyInstalledServerCredentials.port);
|
||||
server.insert(config_key::description, m_settings->nextAvailableServerName());
|
||||
|
||||
server.insert(config_key::containers, QJsonArray{ config });
|
||||
server.insert(config_key::defaultContainer, ContainerProps::containerToString(container));
|
||||
|
||||
m_settings->addServer(server);
|
||||
m_settings->setDefaultServer(m_settings->serversCount() - 1);
|
||||
}
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
|
||||
ErrorCode InstallController::installContainer(DockerContainer container, QJsonObject& config)
|
||||
{
|
||||
//todo check if container already installed
|
||||
ServerCredentials serverCredentials = m_serversModel->getCurrentlyProcessedServerCredentials();
|
||||
|
||||
ServerController serverController(m_settings);
|
||||
ErrorCode errorCode = serverController.setupContainer(serverCredentials, container, config);
|
||||
if (errorCode == ErrorCode::NoError) {
|
||||
m_containersModel->setData(m_containersModel->index(container), config, ContainersModel::Roles::ConfigRole);
|
||||
emit installContainerFinished();
|
||||
}
|
||||
|
||||
//todo error processing
|
||||
return errorCode;
|
||||
}
|
||||
|
||||
void InstallController::setCurrentlyInstalledServerCredentials(const QString &hostName, const QString &userName, const QString &password, const int &port)
|
||||
{
|
||||
m_currentlyInstalledServerCredentials = { hostName, userName, password, port };
|
||||
}
|
||||
|
||||
void InstallController::setShouldCreateServer(bool shouldCreateServer)
|
||||
{
|
||||
m_shouldCreateServer = shouldCreateServer;
|
||||
}
|
40
client/ui/controllers/installController.h
Normal file
40
client/ui/controllers/installController.h
Normal file
|
@ -0,0 +1,40 @@
|
|||
#ifndef INSTALLCONTROLLER_H
|
||||
#define INSTALLCONTROLLER_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
#include "core/defs.h"
|
||||
#include "containers/containers_defs.h"
|
||||
#include "ui/models/servers_model.h"
|
||||
#include "ui/models/containers_model.h"
|
||||
|
||||
class InstallController : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit InstallController(const QSharedPointer<ServersModel> &serversModel,
|
||||
const QSharedPointer<ContainersModel> &containersModel,
|
||||
const std::shared_ptr<Settings> &settings,
|
||||
QObject *parent = nullptr);
|
||||
|
||||
public slots:
|
||||
ErrorCode install(DockerContainer container, int port, TransportProto transportProto);
|
||||
void setCurrentlyInstalledServerCredentials(const QString &hostName, const QString &userName, const QString &password, const int &port);
|
||||
void setShouldCreateServer(bool shouldCreateServer);
|
||||
|
||||
signals:
|
||||
void installContainerFinished();
|
||||
private:
|
||||
ErrorCode installServer(DockerContainer container, QJsonObject& config);
|
||||
ErrorCode installContainer(DockerContainer container, QJsonObject& config);
|
||||
|
||||
QSharedPointer<ServersModel> m_serversModel;
|
||||
QSharedPointer<ContainersModel> m_containersModel;
|
||||
std::shared_ptr<Settings> m_settings;
|
||||
|
||||
ServerCredentials m_currentlyInstalledServerCredentials;
|
||||
|
||||
bool m_shouldCreateServer;
|
||||
};
|
||||
|
||||
#endif // INSTALLCONTROLLER_H
|
Loading…
Add table
Add a link
Reference in a new issue