'Group for discovered host test' ] ]); $hostgroupid = $hostgroups['groupids'][0]; $hosts = CDataHelper::call('host.create', [ 'host' => 'Test of discovered host', 'groups' => [ ['groupid' => $hostgroupid] ], 'interfaces' => [ 'type'=> 1, 'main' => 1, 'useip' => 1, 'ip' => '127.0.0.1', 'dns' => '', 'port' => 10050 ] ]); self::$hostid = $hosts['hostids'][0]; $interfaceid = CDBHelper::getValue('SELECT interfaceid FROM interface WHERE hostid='.zbx_dbstr(self::$hostid)); // Create discovery rule. $llds = CDataHelper::call('discoveryrule.create', [ 'name' => 'LLD for Discovered host tests', 'key_' => 'vfs.fs.discovery', 'hostid' => self::$hostid, 'type' => ITEM_TYPE_ZABBIX, 'interfaceid' => $interfaceid, 'delay' => 30 ]); $lldid = $llds['itemids'][0]; // Create host prototype. $host_prototypes = CDataHelper::call('hostprototype.create', [ 'host' => 'Host created from host prototype {#KEY}', 'ruleid' => $lldid, 'groupLinks' => [['groupid' => $hostgroupid]], 'groupPrototypes' => [['name' => 'Group created from host prototype {#KEY}']], 'tags' => [ 'tag' => 'prototype', 'value' => 'true' ] ]); $host_prototypeid = $host_prototypes['hostids'][0]; $group_prototypeid = CDBHelper::getValue('SELECT group_prototypeid FROM group_prototype WHERE name='. zbx_dbstr('Group created from host prototype {#KEY}') ); // Emulate host discovery in DB. DBexecute("INSERT INTO hosts (hostid, host, name, status, flags, description) VALUES (".zbx_dbstr(self::DISCOVERED_HOSTID). ",".zbx_dbstr(self::DISCOVERED_HOST).",".zbx_dbstr(self::DISCOVERED_HOST).", 0, 4, '')" ); DBexecute("INSERT INTO hosts (hostid, host, name, status, flags, description) VALUES (".zbx_dbstr(self::DISCOVERED_HOSTID2). ",".zbx_dbstr(self::DISCOVERED_HOST2).",".zbx_dbstr(self::DISCOVERED_HOST2).", 0, 4, '')" ); DBexecute("INSERT INTO host_discovery (hostid, parent_hostid) VALUES (".zbx_dbstr(self::DISCOVERED_HOSTID).", ". zbx_dbstr($host_prototypeid).")" ); DBexecute("INSERT INTO host_discovery (hostid, parent_hostid) VALUES (".zbx_dbstr(self::DISCOVERED_HOSTID2).", ". zbx_dbstr($host_prototypeid).")" ); DBexecute("INSERT INTO interface (interfaceid, hostid, main, type, useip, ip, dns, port) values (". zbx_dbstr(self::DISCOVERED_INTERFACEID).",".zbx_dbstr(self::DISCOVERED_HOSTID).", 1, 1, 1, '127.0.0.1', '', '10050')" ); // Emulate host group discovery. DBexecute("INSERT INTO hstgrp (groupid, name, flags, uuid, type) VALUES (".zbx_dbstr(self::DISCOVERED_GROUPID). ", ".zbx_dbstr(self::DISCOVERED_GROUP).", 4, '', 0)" ); DBexecute("INSERT INTO hstgrp (groupid, name, flags, uuid, type) VALUES (".zbx_dbstr(self::DISCOVERED_GROUPID2). ", ".zbx_dbstr(self::DISCOVERED_GROUP2).", 4, '', 0)" ); DBexecute("INSERT INTO group_discovery (groupid, parent_group_prototypeid, name, lastcheck, ts_delete) VALUES(". zbx_dbstr(self::DISCOVERED_GROUPID).", ".$group_prototypeid.", ".zbx_dbstr(self::DISCOVERED_GROUP).", '1672831234', '1677670843')" ); DBexecute("INSERT INTO group_discovery (groupid, parent_group_prototypeid, name, lastcheck, ts_delete) VALUES(". zbx_dbstr(self::DISCOVERED_GROUPID2).", ".$group_prototypeid.", ".zbx_dbstr(self::DISCOVERED_GROUP2).", '1672831234', '1677670843')" ); DBexecute("INSERT INTO hosts_groups (hostgroupid, hostid, groupid) VALUES (".zbx_dbstr(self::DISCOVERED_HOST_GROUPID). ", ".zbx_dbstr(self::DISCOVERED_HOSTID).", ".$hostgroupid.")" ); DBexecute("INSERT INTO hosts_groups (hostgroupid, hostid, groupid) VALUES (".zbx_dbstr(self::DISCOVERED_HOST_GROUPID2). ", ".zbx_dbstr(self::DISCOVERED_HOSTID2).", ".$hostgroupid.")" ); DBexecute("INSERT INTO hosts_groups (hostgroupid, hostid, groupid) VALUES (".zbx_dbstr(self::DISCOVERED_HOST_GROUP_PROTOTYPEID). ", ".zbx_dbstr(self::DISCOVERED_HOSTID).", ".zbx_dbstr(self::DISCOVERED_GROUPID).")" ); DBexecute("INSERT INTO hosts_groups (hostgroupid, hostid, groupid) VALUES (".zbx_dbstr(self::DISCOVERED_HOST_GROUP_PROTOTYPEID2). ", ".zbx_dbstr(self::DISCOVERED_HOSTID2).",".zbx_dbstr(self::DISCOVERED_GROUPID2).")" ); // Add tags for discovered hosts. DBexecute("INSERT INTO host_tag (hosttagid, hostid, tag, value) VALUES (90000082, ". zbx_dbstr(self::DISCOVERED_HOSTID).", 'action', 'update')" ); DBexecute("INSERT INTO host_tag (hosttagid, hostid, tag) VALUES (90000083, ". zbx_dbstr(self::DISCOVERED_HOSTID).", 'tag without value')" ); DBexecute("INSERT INTO host_tag (hosttagid, hostid, tag, value) VALUES (90000084, ". zbx_dbstr(self::DISCOVERED_HOSTID).", 'test', 'update')" ); DBexecute("INSERT INTO host_tag (hosttagid, hostid, tag, value, automatic) VALUES (90000085, ". zbx_dbstr(self::DISCOVERED_HOSTID2).", 'discovered', 'true', 1)" ); DBexecute("INSERT INTO host_tag (hosttagid, hostid, tag, value, automatic) VALUES (90000086, ". zbx_dbstr(self::DISCOVERED_HOSTID2).", 'discovered without tag value', '', 1)" ); // Create templates. $templates = CDataHelper::createTemplates([ [ 'host' => 'Test of discovered host Template', 'groups' => ['groupid' => 1], 'items' => [ [ 'name' => 'Template item', 'key_' => 'trap.template', 'type' => ITEM_TYPE_TRAPPER, 'value_type' => ITEM_VALUE_TYPE_UINT64 ], [ 'name' => 'Template item with tag', 'key_' => 'template.tags.clone', 'type' => ITEM_TYPE_TRAPPER, 'value_type' => ITEM_VALUE_TYPE_UINT64, 'tags' => [ [ 'tag' => 'a', 'value' => ':a' ] ] ] ], 'discoveryrules' => [ [ 'name' => 'Template discovery rule', 'key_' => 'vfs.fs.discovery', 'type' => ITEM_TYPE_TRAPPER ] ] ], [ 'host' => 'Test of discovered host 1 template for unlink', 'groups' => ['groupid' => 1], 'items' => [ [ 'name' => 'Template1 item1', 'key_' => 'trap.template1', 'type' => ITEM_TYPE_TRAPPER, 'value_type' => ITEM_VALUE_TYPE_UINT64 ], [ 'name' => 'Template1 item2', 'key_' => 'template.item1', 'type' => ITEM_TYPE_TRAPPER, 'value_type' => ITEM_VALUE_TYPE_UINT64 ] ], 'discoveryrules' => [ [ 'name' => 'Template1 discovery rule', 'key_' => 'vfs.fs.discovery2', 'type' => ITEM_TYPE_TRAPPER ] ] ], [ 'host' => 'Test of discovered host 2 template for clear', 'groups' => ['groupid' => 1], 'items' => [ [ 'name' => 'Template2 item1', 'key_' => 'trap.template2', 'type' => ITEM_TYPE_TRAPPER, 'value_type' => ITEM_VALUE_TYPE_UINT64 ], [ 'name' => 'Template2 item2', 'key_' => 'template.item2', 'type' => ITEM_TYPE_TRAPPER, 'value_type' => ITEM_VALUE_TYPE_UINT64 ] ], 'discoveryrules' => [ [ 'name' => 'Template2 discovery rule', 'key_' => 'vfs.fs.discovery3', 'type' => ITEM_TYPE_TRAPPER ] ] ] ]); CDataHelper::call('graph.create', [ [ 'name' => 'Template graph', 'width' => 850, 'height' => 480, 'gitems' => [ [ 'itemid' => $templates['itemids']['Test of discovered host Template:trap.template'] , 'color'=> '00AA00' ] ] ], [ 'name' => 'Template1 graph', 'width' => 850, 'height' => 480, 'gitems' => [ [ 'itemid' => $templates['itemids']['Test of discovered host 1 template for unlink:trap.template1'], 'color'=> 'FFAA00' ] ] ], [ 'name' => 'Template2 graph', 'width' => 850, 'height' => 480, 'gitems' => [ [ 'itemid' => $templates['itemids']['Test of discovered host 2 template for clear:template.item2'], 'color'=> '99AA00' ] ] ] ]); CDataHelper::call('trigger.create', [ [ 'description' => 'Template trigger', 'expression' => 'last(/Test of discovered host Template/trap.template)=0', 'priority' => 3 ], [ 'description' => 'Template1 trigger', 'expression' => 'last(/Test of discovered host 1 template for unlink/trap.template1)=0', 'priority' => 1 ], [ 'description' => 'Template2 trigger', 'expression' => 'last(/Test of discovered host 2 template for clear/trap.template2)=0', 'priority' => 4 ] ]); CDataHelper::call('httptest.create', [ [ 'name' => 'Template web scenario', 'hostid' => $templates['templateids']['Test of discovered host Template'], 'steps' => [ [ 'name' => 'Test name', 'url' => 'http://example.com', 'status_codes' => '200', 'no' => '1' ] ] ], [ 'name' => 'Template web scenario 1', 'hostid' => $templates['templateids']['Test of discovered host 1 template for unlink'], 'steps' => [ [ 'name' => 'Test name 1', 'url' => 'http://example1.com', 'status_codes' => '200', 'no' => '1' ] ] ], [ 'name' => 'Template web scenario 2', 'hostid' => $templates['templateids']['Test of discovered host 2 template for clear'], 'steps' => [ [ 'name' => 'Test name 2', 'url' => 'http://example2.com', 'status_codes' => '200', 'no' => '1' ] ] ] ]); // Link templates. CDataHelper::call('host.update', [ 'hostid' => self::DISCOVERED_HOSTID, 'templates' => [ $templates['templateids']['Test of discovered host Template'], $templates['templateids']['Test of discovered host 1 template for unlink'], $templates['templateids']['Test of discovered host 2 template for clear'] ] ]); return [ 'discovered_hostid' => self::DISCOVERED_HOSTID, 'discovered_interfaceid' => self::DISCOVERED_INTERFACEID ]; } }