[icinga-checkins] icinga.org: icingaweb2-module-director/next: CoreApi: Use DeploymentApiInterface
git at icinga.org
git at icinga.org
Fri Nov 4 14:13:16 CET 2016
Module: icingaweb2-module-director
Branch: next
Commit: 1786d08321f1576e9d9030a2b54bda1d12cab9a0
URL: https://git.icinga.org/?p=icingaweb2-module-director.git;a=commit;h=1786d08321f1576e9d9030a2b54bda1d12cab9a0
Author: Markus Frosch <markus.frosch at icinga.com>
Date: Fri Nov 4 14:13:07 2016 +0100
CoreApi: Use DeploymentApiInterface
refs #13049
---
application/forms/DeployConfigForm.php | 6 +-
library/Director/Core/CoreApi.php | 4 +-
library/Director/Core/DeploymentApiInterface.php | 75 ++++++++++++++++++++++
3 files changed, 80 insertions(+), 5 deletions(-)
diff --git a/application/forms/DeployConfigForm.php b/application/forms/DeployConfigForm.php
index e0e8846..e387394 100644
--- a/application/forms/DeployConfigForm.php
+++ b/application/forms/DeployConfigForm.php
@@ -3,7 +3,7 @@
namespace Icinga\Module\Director\Forms;
use Icinga\Exception\IcingaException;
-use Icinga\Module\Director\Core\CoreApi;
+use Icinga\Module\Director\Core\DeploymentApiInterface;
use Icinga\Module\Director\Db;
use Icinga\Module\Director\IcingaConfig\IcingaConfig;
// use Icinga\Module\Director\Objects\DirectorDeploymentLog;
@@ -12,7 +12,7 @@ use Icinga\Module\Director\Web\Form\QuickForm;
class DeployConfigForm extends QuickForm
{
- /** @var CoreApi */
+ /** @var DeploymentApiInterface */
private $api;
/** @var Db */
@@ -114,7 +114,7 @@ class DeployConfigForm extends QuickForm
return $this;
}
- public function setApi(CoreApi $api)
+ public function setApi(DeploymentApiInterface $api)
{
$this->api = $api;
return $this;
diff --git a/library/Director/Core/CoreApi.php b/library/Director/Core/CoreApi.php
index 535c260..328479d 100644
--- a/library/Director/Core/CoreApi.php
+++ b/library/Director/Core/CoreApi.php
@@ -11,7 +11,7 @@ use Icinga\Module\Director\Objects\IcingaCommand;
use Icinga\Module\Director\Objects\DirectorDeploymentLog;
use Icinga\Module\Director\Objects\IcingaZone;
-class CoreApi
+class CoreApi implements DeploymentApiInterface
{
protected $client;
@@ -614,7 +614,7 @@ constants
$this->client->request('post', $url, null, false, true);
}
- public function dumpConfig(IcingaConfig $config, $db, $moduleName = 'director')
+ public function dumpConfig(IcingaConfig $config, Db $db, $moduleName = 'director')
{
$start = microtime(true);
$deployment = DirectorDeploymentLog::create(array(
diff --git a/library/Director/Core/DeploymentApiInterface.php b/library/Director/Core/DeploymentApiInterface.php
new file mode 100644
index 0000000..1e42e97
--- /dev/null
+++ b/library/Director/Core/DeploymentApiInterface.php
@@ -0,0 +1,75 @@
+<?php
+
+namespace Icinga\Module\Director\Core;
+
+use Icinga\Module\Director\Db;
+use Icinga\Module\Director\IcingaConfig\IcingaConfig;
+
+/**
+ * Interface to a deployment API of the monitoring configuration
+ *
+ * @package Icinga\Module\Director\Core
+ */
+interface DeploymentApiInterface
+{
+ /**
+ * Collecting log files from the deployment system
+ * and write them into the database.
+ *
+ * @param Db $db
+ */
+ public function collectLogFiles(Db $db);
+
+ /**
+ * Cleanup old stages that are collected and not active
+ *
+ * @param Db $db
+ */
+ public function wipeInactiveStages(Db $db);
+
+ /**
+ * Returns the active configuration stage
+ *
+ * @return string
+ */
+ public function getActiveStageName();
+
+ /**
+ * List files in a named stage
+ *
+ * @param string $stage name of the stage
+ * @return string[]
+ */
+ public function listStageFiles($stage);
+
+ /**
+ * Retrieve a raw file from the named stage
+ *
+ * @param string $stage Stage name
+ * @param string $file Relative file path
+ *
+ * @return string
+ */
+ public function getStagedFile($stage, $file);
+
+ /**
+ * Explicitly delete a stage
+ *
+ * @param string $moduleName
+ * @param string $stageName
+ *
+ * @return bool
+ */
+ public function deleteStage($moduleName, $stageName);
+
+ /**
+ * Deploy the config and activate it
+ *
+ * @param IcingaConfig $config
+ * @param Db $db
+ * @param string $moduleName
+ *
+ * @return mixed
+ */
+ public function dumpConfig(IcingaConfig $config, Db $db, $moduleName = 'director');
+}
More information about the icinga-checkins
mailing list