From c456f79c4cb2df8918a2e6679ebf8166501189e2 Mon Sep 17 00:00:00 2001 From: Thomas Gelf Date: Fri, 28 Aug 2015 23:47:35 +0200 Subject: [PATCH] Import: do nothing if matching last import --- application/controllers/ImportsourceController.php | 7 +++++-- library/Director/Import/Import.php | 7 +++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/application/controllers/ImportsourceController.php b/application/controllers/ImportsourceController.php index 653fc6a1..536384a6 100644 --- a/application/controllers/ImportsourceController.php +++ b/application/controllers/ImportsourceController.php @@ -6,6 +6,7 @@ use Icinga\Module\Director\Objects\ImportSource; use Icinga\Module\Director\Import\Import; use Icinga\Exception\InvalidPropertyException; use Icinga\Web\Notification; +use Icinga\Web\Url; class Director_ImportsourceController extends ActionController { @@ -22,9 +23,11 @@ class Director_ImportsourceController extends ActionController public function runAction() { if ($runId = Import::run($id = ImportSource::load($this->params->get('id'), $this->db()))) { - Notification::success('adf' . $runId); - $this->redirectNow('director/list/importrun'); + Notification::success('Import succeeded'); + $this->redirectNow(Url::fromPath('director/importrun', array('id' => $runId))); } else { + Notification::success('Import skipped, no changes detected'); + $this->redirectNow('director/list/importrun'); } } diff --git a/library/Director/Import/Import.php b/library/Director/Import/Import.php index da0fb0ff..00aeceb8 100644 --- a/library/Director/Import/Import.php +++ b/library/Director/Import/Import.php @@ -3,6 +3,7 @@ namespace Icinga\Module\Director\Import; use Icinga\Module\Director\Objects\ImportSource; +use Icinga\Module\Director\Util; use Icinga\Module\Director\Web\Hook\ImportSourceHook; class Import @@ -84,6 +85,12 @@ continue; $rowSums = array_keys($rows); $rowset = sha1(implode(';', $rowSums), true); + if ($this->rowSetExists($rowset)) { + if ($connection->getLatestImportedChecksum($source->id) === Util::binary2hex($rowset)) { + return false; + } + } + $db->beginTransaction(); if (! $this->rowSetExists($rowset)) {