[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