commit
b7c0559212
|
@ -12,6 +12,7 @@ use Icinga\Module\Director\Web\Table\IcingaHostsMatchingFilterTable;
|
||||||
use Icinga\Module\Director\Web\Table\IcingaServiceSetHostTable;
|
use Icinga\Module\Director\Web\Table\IcingaServiceSetHostTable;
|
||||||
use Icinga\Module\Director\Web\Table\IcingaServiceSetServiceTable;
|
use Icinga\Module\Director\Web\Table\IcingaServiceSetServiceTable;
|
||||||
use gipfl\IcingaWeb2\Link;
|
use gipfl\IcingaWeb2\Link;
|
||||||
|
use Ramsey\Uuid\Uuid;
|
||||||
|
|
||||||
class ServicesetController extends ObjectController
|
class ServicesetController extends ObjectController
|
||||||
{
|
{
|
||||||
|
@ -102,11 +103,11 @@ class ServicesetController extends ObjectController
|
||||||
$name = $this->object->getObjectName();
|
$name = $this->object->getObjectName();
|
||||||
$tabs->add('services', [
|
$tabs->add('services', [
|
||||||
'url' => 'director/serviceset/services',
|
'url' => 'director/serviceset/services',
|
||||||
'urlParams' => ['name' => $name],
|
'urlParams' => ['uuid' => $this->object->getUniqueId()],
|
||||||
'label' => 'Services'
|
'label' => 'Services'
|
||||||
])->add('hosts', [
|
])->add('hosts', [
|
||||||
'url' => 'director/serviceset/hosts',
|
'url' => 'director/serviceset/hosts',
|
||||||
'urlParams' => ['name' => $name],
|
'urlParams' => ['uuid' => $this->object->getUniqueId()],
|
||||||
'label' => 'Hosts'
|
'label' => 'Hosts'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ class IcingaServiceSet extends IcingaObject implements ExportInterface
|
||||||
|
|
||||||
protected $defaultProperties = array(
|
protected $defaultProperties = array(
|
||||||
'id' => null,
|
'id' => null,
|
||||||
|
'uuid' => null,
|
||||||
'host_id' => null,
|
'host_id' => null,
|
||||||
'object_name' => null,
|
'object_name' => null,
|
||||||
'object_type' => null,
|
'object_type' => null,
|
||||||
|
@ -26,6 +27,8 @@ class IcingaServiceSet extends IcingaObject implements ExportInterface
|
||||||
'assign_filter' => null,
|
'assign_filter' => null,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
protected $uuidColumn = 'uuid';
|
||||||
|
|
||||||
protected $keyName = array('host_id', 'object_name');
|
protected $keyName = array('host_id', 'object_name');
|
||||||
|
|
||||||
protected $supportsImports = true;
|
protected $supportsImports = true;
|
||||||
|
|
|
@ -8,6 +8,7 @@ use gipfl\IcingaWeb2\Link;
|
||||||
use gipfl\IcingaWeb2\Table\ZfQueryBasedTable;
|
use gipfl\IcingaWeb2\Table\ZfQueryBasedTable;
|
||||||
use gipfl\IcingaWeb2\Url;
|
use gipfl\IcingaWeb2\Url;
|
||||||
use Icinga\Module\Director\Restriction\FilterByNameRestriction;
|
use Icinga\Module\Director\Restriction\FilterByNameRestriction;
|
||||||
|
use Ramsey\Uuid\Uuid;
|
||||||
|
|
||||||
class ObjectSetTable extends ZfQueryBasedTable
|
class ObjectSetTable extends ZfQueryBasedTable
|
||||||
{
|
{
|
||||||
|
@ -47,7 +48,10 @@ class ObjectSetTable extends ZfQueryBasedTable
|
||||||
if ($row->object_type === 'apply') {
|
if ($row->object_type === 'apply') {
|
||||||
$params['id'] = $row->id;
|
$params['id'] = $row->id;
|
||||||
} else {
|
} else {
|
||||||
$params = array('name' => $row->object_name);
|
$params = [
|
||||||
|
'uuid' => Uuid::fromBytes($row->uuid)->toString(),
|
||||||
|
'name' => $row->object_name
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
$url = Url::fromPath("director/${type}set", $params);
|
$url = Url::fromPath("director/${type}set", $params);
|
||||||
|
@ -70,6 +74,7 @@ class ObjectSetTable extends ZfQueryBasedTable
|
||||||
|
|
||||||
$columns = [
|
$columns = [
|
||||||
'id' => 'os.id',
|
'id' => 'os.id',
|
||||||
|
'uuid' => 'os.uuid',
|
||||||
'object_name' => 'os.object_name',
|
'object_name' => 'os.object_name',
|
||||||
'object_type' => 'os.object_type',
|
'object_type' => 'os.object_type',
|
||||||
'assign_filter' => 'os.assign_filter',
|
'assign_filter' => 'os.assign_filter',
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
ALTER TABLE icinga_service_set ADD COLUMN uuid VARBINARY(16) DEFAULT NULL AFTER id;
|
||||||
|
SET @tmp_uuid = LOWER(CONCAT(
|
||||||
|
LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0'),
|
||||||
|
LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0'), '-',
|
||||||
|
LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0'), '-',
|
||||||
|
'4',
|
||||||
|
LPAD(HEX(FLOOR(RAND() * 0x0fff)), 3, '0'), '-',
|
||||||
|
HEX(FLOOR(RAND() * 4 + 8)),
|
||||||
|
LPAD(HEX(FLOOR(RAND() * 0x0fff)), 3, '0'), '-',
|
||||||
|
LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0'),
|
||||||
|
LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0'),
|
||||||
|
LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0')
|
||||||
|
));
|
||||||
|
UPDATE icinga_service_set SET uuid = UNHEX(LPAD(LPAD(HEX(id), 8, '0'), 32, REPLACE(@tmp_uuid, '-', ''))) WHERE uuid IS NULL;
|
||||||
|
ALTER TABLE icinga_service_set MODIFY COLUMN uuid VARBINARY(16) NOT NULL, ADD UNIQUE INDEX uuid (uuid);
|
||||||
|
|
||||||
|
|
||||||
|
INSERT INTO director_schema_migration
|
||||||
|
(schema_version, migration_time)
|
||||||
|
VALUES ('177', NOW());
|
|
@ -656,12 +656,14 @@ ALTER TABLE icinga_host_template_choice
|
||||||
|
|
||||||
CREATE TABLE icinga_service_set (
|
CREATE TABLE icinga_service_set (
|
||||||
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
uuid VARBINARY(16) NOT NULL,
|
||||||
object_name VARCHAR(128) NOT NULL,
|
object_name VARCHAR(128) NOT NULL,
|
||||||
object_type ENUM('object', 'template', 'external_object') NOT NULL,
|
object_type ENUM('object', 'template', 'external_object') NOT NULL,
|
||||||
host_id INT(10) UNSIGNED DEFAULT NULL,
|
host_id INT(10) UNSIGNED DEFAULT NULL,
|
||||||
description TEXT DEFAULT NULL,
|
description TEXT DEFAULT NULL,
|
||||||
assign_filter TEXT DEFAULT NULL,
|
assign_filter TEXT DEFAULT NULL,
|
||||||
PRIMARY KEY (id),
|
PRIMARY KEY (id),
|
||||||
|
UNIQUE INDEX uuid (uuid),
|
||||||
UNIQUE KEY object_key (object_name, host_id),
|
UNIQUE KEY object_key (object_name, host_id),
|
||||||
CONSTRAINT icinga_service_set_host
|
CONSTRAINT icinga_service_set_host
|
||||||
FOREIGN KEY host (host_id)
|
FOREIGN KEY host (host_id)
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
ALTER TABLE icinga_service_set ADD COLUMN uuid bytea UNIQUE CHECK(LENGTH(uuid) = 16);
|
||||||
|
UPDATE icinga_service_set SET uuid = decode(replace(gen_random_uuid()::text, '-', ''), 'hex') WHERE uuid IS NULL;
|
||||||
|
ALTER TABLE icinga_service_set ALTER COLUMN uuid SET NOT NULL;
|
||||||
|
CREATE UNIQUE INDEX service_set_uuid ON icinga_service_set (uuid);
|
||||||
|
|
||||||
|
INSERT INTO director_schema_migration
|
||||||
|
(schema_version, migration_time)
|
||||||
|
VALUES (177, NOW());
|
|
@ -813,6 +813,7 @@ ALTER TABLE icinga_host_template_choice
|
||||||
|
|
||||||
CREATE TABLE icinga_service_set (
|
CREATE TABLE icinga_service_set (
|
||||||
id serial,
|
id serial,
|
||||||
|
uuid bytea UNIQUE CHECK(LENGTH(uuid) = 16),
|
||||||
host_id integer DEFAULT NULL,
|
host_id integer DEFAULT NULL,
|
||||||
object_name character varying(128) NOT NULL,
|
object_name character varying(128) NOT NULL,
|
||||||
object_type enum_object_type_all NOT NULL,
|
object_type enum_object_type_all NOT NULL,
|
||||||
|
@ -828,6 +829,7 @@ CREATE TABLE icinga_service_set (
|
||||||
|
|
||||||
CREATE UNIQUE INDEX service_set_name ON icinga_service_set (object_name, host_id);
|
CREATE UNIQUE INDEX service_set_name ON icinga_service_set (object_name, host_id);
|
||||||
CREATE INDEX service_set_host ON icinga_service_set (host_id);
|
CREATE INDEX service_set_host ON icinga_service_set (host_id);
|
||||||
|
CREATE UNIQUE INDEX service_set_uuid ON icinga_service_set (uuid);
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE icinga_service_template_choice (
|
CREATE TABLE icinga_service_template_choice (
|
||||||
|
|
Loading…
Reference in New Issue