SyncRun/CheckForm: add new forms

This commit is contained in:
Thomas Gelf 2016-06-25 23:01:30 +02:00
parent 9387b92da1
commit e71dcea9d6
2 changed files with 111 additions and 0 deletions

View File

@ -0,0 +1,65 @@
<?php
// TODO: Check whether this can be removed
namespace Icinga\Module\Director\Forms;
use Icinga\Module\Director\Objects\SyncRule;
use Icinga\Module\Director\Web\Form\QuickForm;
class SyncCheckForm extends QuickForm
{
protected $rule;
public function setSyncRule(SyncRule $rule)
{
$this->rule = $rule;
return $this;
}
public function setup()
{
$this->submitLabel = $this->translate(
'Check for changes'
);
}
public function onSuccess()
{
if ($this->rule->checkForChanges()) {
$this->setSuccessMessage(
$this->translate(('This Sync Rule would apply new changes'))
);
$html = '';
$sum = array('create' => 0, 'modify' => 0, 'delete' => 0);
// TODO: Preview them? Like "hosta, hostb and 4 more would be...
foreach ($this->rule->getExpectedModifications() as $object) {
if ($object->shouldBeRemoved()) {
$sum['delete']++;
} elseif (! $object->hasBeenLoadedFromDb()) {
$sum['create']++;
} elseif ($object->hasBeenModified()) {
$sum['modify']++;
}
}
/**
if ($sum['modify'] === 1) {
$html .= $this->translate('One object would be modified'
} elseif ($sum['modify'] > 1) {
}
*/
$html = '<pre>' . print_r($sum, 1) . '</pre>';
$this->addHtml($html);
} elseif ($this->rule->sync_state === 'in-sync') {
$this->setSuccessMessage(
$this->translate('Nothing would change, this rule is still in sync')
);
parent::onSuccess();
} else {
$this->addError($this->translate('Checking this sync rule failed'));
}
}
}

View File

@ -0,0 +1,46 @@
<?php
// TODO: Check whether this can be removed
namespace Icinga\Module\Director\Forms;
use Icinga\Module\Director\Objects\SyncRule;
use Icinga\Module\Director\Web\Form\QuickForm;
class SyncRunForm extends QuickForm
{
protected $rule;
public function setSyncRule(SyncRule $rule)
{
$this->rule = $rule;
return $this;
}
public function setup()
{
$this->submitLabel = $this->translate(
'Trigger this Sync'
);
}
public function onSuccess()
{
$rule = $this->rule;
$changed = $rule->applyChanges();
if ($changed) {
$runId = $rule->getCurrentSyncRunId();
$this->setSuccessMessage(
$this->translate(('Source has successfully been synchronized'))
);
} elseif ($rule->sync_state === 'in-sync') {
$this->setSuccessMessage(
$this->translate('Nothing changed, rule is in sync')
);
} else {
$this->addError($this->translate('Synchronization failed'));
}
parent::onSuccess();
}
}