$this->translate('Host'), 'hostgroup' => $this->translate('Host Group'), 'service' => $this->translate('Service'), 'servicegroup' => $this->translate('Service Group'), 'serviceSet' => $this->translate('Service Set'), 'user' => $this->translate('User'), 'usergroup' => $this->translate('User Group'), 'datalistEntry' => $this->translate('Data List Entry'), 'command' => $this->translate('Command'), 'timePeriod' => $this->translate('Time Period'), 'notification' => $this->translate('Notification'), 'scheduledDowntime' => $this->translate('Scheduled Downtime'), 'dependency' => $this->translate('Dependency'), 'endpoint' => $this->translate('Endpoint'), 'zone' => $this->translate('Zone'), ]; $this->addElement('text', 'rule_name', [ 'label' => $this->translate('Rule name'), 'description' => $this->translate('Please provide a rule name'), 'required' => true, ]); $this->addElement('textarea', 'description', [ 'label' => $this->translate('Description'), 'description' => $this->translate( 'An extended description for this Sync Rule. This should explain' . ' what this Rule is going to accomplish.' ), 'rows' => '3', ]); $this->addElement('select', 'object_type', [ 'label' => $this->translate('Object Type'), 'description' => $this->translate('Choose an object type'), 'required' => true, 'multiOptions' => $this->optionalEnum($availableTypes) ]); $this->addElement('select', 'update_policy', [ 'label' => $this->translate('Update Policy'), 'description' => $this->translate( 'Define what should happen when an object with a matching key' . " already exists. You could merge its properties (import source" . ' wins), replace it completely with the imported object or ignore' . ' it (helpful for one-time imports). "Update only" means that this' . ' Rule would never create (or delete) full Objects.' ), 'required' => true, 'multiOptions' => $this->optionalEnum([ 'merge' => $this->translate('Merge'), 'override' => $this->translate('Replace'), 'ignore' => $this->translate('Ignore'), 'update-only' => $this->translate('Update only'), ]) ]); $this->addBoolean('purge_existing', [ 'label' => $this->translate('Purge'), 'description' => $this->translate( 'Whether to purge existing objects. This means that objects of' . ' the same type will be removed from Director in case they no' . ' longer exist at your import source.' ), 'required' => true, 'class' => 'autosubmit', ]); if ($this->getSentOrObjectValue('purge_existing') === 'y') { $this->addElement('select', 'purge_action', [ 'label' => $this->translate('Purge Action'), 'description' => $this->translate( 'Whether to delete or to disable objects subject to purge' ), 'multiOptions' => $this->optionalEnum([ 'delete' => $this->translate('Delete'), 'disable' => $this->translate('Disable'), ]), 'required' => true, ]); } $this->addElement('text', 'filter_expression', [ 'label' => $this->translate('Filter Expression'), 'description' => sprintf( $this->translate( 'Sync only part of your imported objects with this rule. Icinga Web 2' . ' filter syntax is allowed, so this could look as follows: %s' ), '(host=a|host=b)&!ip=127.*' ) . ' ' . $this->translate( 'Be careful: this is usually NOT what you want, as it makes Sync "blind"' . ' for objects matching this filter. This means that "Purge" will not' . ' work as expected. The "Black/Whitelist" Import Property Modifier' . ' is probably what you\'re looking for.' ), ]); $this->setButtons(); } }