From f66ab8dae2f3d0418759f81a3a64dc9517a62449 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 14 Apr 2024 15:17:31 +0200 Subject: Adding upstream version 1.10.2. Signed-off-by: Daniel Baumann --- application/controllers/ServicesetController.php | 141 +++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 application/controllers/ServicesetController.php (limited to 'application/controllers/ServicesetController.php') diff --git a/application/controllers/ServicesetController.php b/application/controllers/ServicesetController.php new file mode 100644 index 0000000..684d2fc --- /dev/null +++ b/application/controllers/ServicesetController.php @@ -0,0 +1,141 @@ +assertPermission('director/servicesets'); + } + + public function init() + { + if (null !== ($host = $this->params->get('host'))) { + $this->host = IcingaHost::load($host, $this->db()); + } + + parent::init(); + if ($this->object) { + $this->addServiceSetTabs(); + } + } + + protected function onObjectFormLoaded(DirectorObjectForm $form) + { + if ($this->host) { + /** @var IcingaServiceSetForm $form */ + $form->setHost($this->host); + } + } + + public function addAction() + { + parent::addAction(); + if ($this->host) { + $this->addTitle( + $this->translate('Add a service set to "%s"'), + $this->host->getObjectName() + ); + } + } + + public function servicesAction() + { + /** @var IcingaServiceSet $set */ + $set = $this->object; + $name = $set->getObjectName(); + $this->tabs()->activate('services'); + $this->addTitle( + $this->translate('Services in this set: %s'), + $name + ); + $this->actions()->add(Link::create( + $this->translate('Add service'), + 'director/service/add', + ['set' => $name], + ['class' => 'icon-plus'] + )); + + IcingaServiceSetServiceTable::load($set) + ->setBranch($this->getBranch()) + ->renderTo($this); + } + + public function hostsAction() + { + /** @var IcingaServiceSet $set */ + $set = $this->object; + $this->tabs()->activate('hosts'); + $this->addTitle( + $this->translate('Hosts using this set: %s'), + $set->getObjectName() + ); + + $table = IcingaServiceSetHostTable::load($set); + if ($table->count()) { + $table->renderTo($this); + } + $filter = $set->get('assign_filter'); + if ($filter !== null && \strlen($filter) > 0) { + $this->content()->add( + IcingaHostsMatchingFilterTable::load(Filter::fromQueryString($filter), $this->db()) + ); + } + } + + protected function addServiceSetTabs() + { + $hexUuid = $this->object->getUniqueId()->toString(); + $tabs = $this->tabs(); + $tabs->add('services', [ + 'url' => 'director/serviceset/services', + 'urlParams' => ['uuid' => $hexUuid], + 'label' => 'Services' + ]); + if ($this->branch->isBranch()) { + return $this; + } + $tabs->add('hosts', [ + 'url' => 'director/serviceset/hosts', + 'urlParams' => ['uuid' => $hexUuid], + 'label' => 'Hosts' + ]); + + return $this; + } + + protected function loadObject() + { + if ($this->object === null) { + if (null !== ($name = $this->params->get('name'))) { + $params = ['object_name' => $name]; + $db = $this->db(); + + if ($this->host) { + $params['host_id'] = $this->host->get('id'); + } + + $this->object = IcingaServiceSet::load($params, $db); + } else { + parent::loadObject(); + } + } + + return $this->object; + } +} -- cgit v1.2.3