mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-24 11:08:45 +02:00
Optimize the build of the graph (POC, somewhat hardcoded)
This commit is contained in:
470
impact_server1.sql
Normal file
470
impact_server1.sql
Normal file
@@ -0,0 +1,470 @@
|
||||
-- Impact Analysis Query hardcoded for 'Server 1'
|
||||
WITH RECURSIVE related_impacts(name, class, id, parent_class, parent_id, redundancy, backtracking) as (
|
||||
/* Anchor query */
|
||||
SELECT DISTINCT IF((`SOURCE`.`finalclass` IN ('Middleware', 'DBServer', 'WebServer', 'PCSoftware', 'OtherSoftware')), CAST(CONCAT(COALESCE(`SOURCE`.`name`, ''), COALESCE(' ', ''), COALESCE(`FunctionalCI_system_id`.`name`, '')) AS CHAR), CAST(CONCAT(COALESCE(`SOURCE`.`name`, '')) AS CHAR)) AS `name`,
|
||||
`SOURCE`.`finalclass` AS `class`,
|
||||
`SOURCE`.`id` AS `id`,
|
||||
CAST(null AS CHAR(255)) AS `parent_class`,
|
||||
CAST(null AS UNSIGNED) AS `parent_id`,
|
||||
CAST(null AS CHAR(250)) AS `redundancy`,
|
||||
CAST(0 AS UNSIGNED) AS `backtracking`
|
||||
FROM
|
||||
`functionalci` AS `SOURCE`
|
||||
LEFT JOIN (
|
||||
`softwareinstance` AS `SOURCE_poly_SoftwareInstance`
|
||||
INNER JOIN
|
||||
`functionalci` AS `FunctionalCI_system_id`
|
||||
ON `SOURCE_poly_SoftwareInstance`.`functionalci_id` = `FunctionalCI_system_id`.`id`
|
||||
) ON `SOURCE`.`id` = `SOURCE_poly_SoftwareInstance`.`id`
|
||||
WHERE (`SOURCE`.`name` = 'Server1')
|
||||
|
||||
UNION DISTINCT
|
||||
/* Recursive part */
|
||||
(
|
||||
SELECT IF((`DOWN`.`finalclass` IN ('Team', 'Contact')), CAST(CONCAT(COALESCE(`DOWN`.`name`, '')) AS CHAR), CAST(CONCAT(COALESCE(`DOWN_poly_Person`.`first_name`, ''), COALESCE(' ', ''), COALESCE(`DOWN`.`name`, '')) AS CHAR)) AS `name`,
|
||||
`DOWN`.`finalclass` AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`functionalci` AS `UP`
|
||||
INNER JOIN (
|
||||
`contact` AS `DOWN`
|
||||
INNER JOIN
|
||||
`lnkcontacttofunctionalci` AS `lnk`
|
||||
ON `DOWN`.`id` = `lnk`.`contact_id`
|
||||
LEFT JOIN
|
||||
`person` AS `DOWN_poly_Person`
|
||||
ON `DOWN`.`id` = `DOWN_poly_Person`.`id`
|
||||
) ON (`lnk`.`functionalci_id` = `UP`.id)
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class IN ('PhysicalDevice', 'ConnectableCI', 'DatacenterDevice', 'NetworkDevice', 'Server', 'ApplicationSolution', 'BusinessProcess', 'SoftwareInstance', 'Middleware', 'DBServer', 'WebServer', 'PCSoftware', 'OtherSoftware', 'MiddlewareInstance', 'DatabaseSchema', 'WebApplication', 'Rack', 'Enclosure', 'PowerConnection', 'PowerSource', 'PDU', 'TelephonyCI', 'Phone', 'MobilePhone', 'IPPhone', 'Tablet', 'PC', 'Printer', 'Peripheral', 'StorageSystem', 'SANSwitch', 'TapeLibrary', 'NAS', 'VirtualDevice', 'VirtualHost', 'Hypervisor', 'Farm', 'VirtualMachine', 'FunctionalCI')
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
CAST(CONCAT(COALESCE('redundancy=', ''), COALESCE(`DOWN`.`redundancy`, '')) AS CHAR) AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`functionalci` AS `UP`
|
||||
INNER JOIN (
|
||||
`applicationsolution` AS `DOWN`
|
||||
INNER JOIN
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
ON `DOWN`.`id` = `DOWN_FunctionalCI`.`id`
|
||||
INNER JOIN
|
||||
`lnkapplicationsolutiontofunctionalci` AS `lnk`
|
||||
ON `DOWN`.`id` = `lnk`.`applicationsolution_id`
|
||||
) ON (`lnk`.`functionalci_id` = `UP`.id)
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class IN ('PhysicalDevice', 'ConnectableCI', 'DatacenterDevice', 'NetworkDevice', 'Server', 'ApplicationSolution', 'BusinessProcess', 'SoftwareInstance', 'Middleware', 'DBServer', 'WebServer', 'PCSoftware', 'OtherSoftware', 'MiddlewareInstance', 'DatabaseSchema', 'WebApplication', 'Rack', 'Enclosure', 'PowerConnection', 'PowerSource', 'PDU', 'TelephonyCI', 'Phone', 'MobilePhone', 'IPPhone', 'Tablet', 'PC', 'Printer', 'Peripheral', 'StorageSystem', 'SANSwitch', 'TapeLibrary', 'NAS', 'VirtualDevice', 'VirtualHost', 'Hypervisor', 'Farm', 'VirtualMachine', 'FunctionalCI')
|
||||
WHERE 1
|
||||
UNION SELECT IF((`DOWN`.`finalclass` IN ('Middleware', 'DBServer', 'WebServer', 'PCSoftware', 'OtherSoftware')), CAST(CONCAT(COALESCE(`DOWN`.`name`, ''), COALESCE(' ', ''), COALESCE(`FunctionalCI_system_id`.`name`, '')) AS CHAR), CAST(CONCAT(COALESCE(`DOWN`.`name`, '')) AS CHAR)) AS `name`,
|
||||
`DOWN`.`finalclass` AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
1 AS `backtracking`
|
||||
FROM
|
||||
`applicationsolution` AS `UP`
|
||||
INNER JOIN (
|
||||
`functionalci` AS `DOWN`
|
||||
INNER JOIN
|
||||
`lnkapplicationsolutiontofunctionalci` AS `lnk`
|
||||
ON `DOWN`.`id` = `lnk`.`functionalci_id`
|
||||
LEFT JOIN (
|
||||
`softwareinstance` AS `DOWN_poly_SoftwareInstance`
|
||||
INNER JOIN
|
||||
`functionalci` AS `FunctionalCI_system_id`
|
||||
ON `DOWN_poly_SoftwareInstance`.`functionalci_id` = `FunctionalCI_system_id`.`id`
|
||||
) ON `DOWN`.`id` = `DOWN_poly_SoftwareInstance`.`id`
|
||||
) ON (`lnk`.`applicationsolution_id` = `UP`.id)
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class = 'ApplicationSolution'
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, ''), COALESCE(' ', ''), COALESCE(`FunctionalCI_system_id`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`functionalci` AS `UP`
|
||||
INNER JOIN (
|
||||
`softwareinstance` AS `DOWN`
|
||||
INNER JOIN
|
||||
`functionalci` AS `FunctionalCI_system_id`
|
||||
ON `DOWN`.`functionalci_id` = `FunctionalCI_system_id`.`id`
|
||||
INNER JOIN
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
ON `DOWN`.`id` = `DOWN_FunctionalCI`.`id`
|
||||
) ON (`DOWN`.`functionalci_id` = `UP`.id)
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class IN ('PhysicalDevice', 'ConnectableCI', 'DatacenterDevice', 'NetworkDevice', 'Server', 'ApplicationSolution', 'BusinessProcess', 'SoftwareInstance', 'Middleware', 'DBServer', 'WebServer', 'PCSoftware', 'OtherSoftware', 'MiddlewareInstance', 'DatabaseSchema', 'WebApplication', 'Rack', 'Enclosure', 'PowerConnection', 'PowerSource', 'PDU', 'TelephonyCI', 'Phone', 'MobilePhone', 'IPPhone', 'Tablet', 'PC', 'Printer', 'Peripheral', 'StorageSystem', 'SANSwitch', 'TapeLibrary', 'NAS', 'VirtualDevice', 'VirtualHost', 'Hypervisor', 'Farm', 'VirtualMachine', 'FunctionalCI')
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN_FunctionalCI`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`applicationsolution` AS `UP`
|
||||
INNER JOIN (
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
INNER JOIN
|
||||
`lnkapplicationsolutiontobusinessprocess` AS `lnk`
|
||||
ON `DOWN_FunctionalCI`.`id` = `lnk`.`businessprocess_id`
|
||||
) ON ((`lnk`.`applicationsolution_id` = `UP`.id) AND COALESCE((`DOWN_FunctionalCI`.`finalclass` IN ('BusinessProcess')), 1))
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class = 'ApplicationSolution'
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`middleware` AS `UP`
|
||||
INNER JOIN (
|
||||
`middlewareinstance` AS `DOWN`
|
||||
INNER JOIN
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
ON `DOWN`.`id` = `DOWN_FunctionalCI`.`id`
|
||||
) ON (`DOWN`.`middleware_id` = `UP`.id)
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class = 'Middleware'
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`dbserver` AS `UP`
|
||||
INNER JOIN (
|
||||
`databaseschema` AS `DOWN`
|
||||
INNER JOIN
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
ON `DOWN`.`id` = `DOWN_FunctionalCI`.`id`
|
||||
) ON (`DOWN`.`dbserver_id` = `UP`.id)
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class = 'DBServer'
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`webserver` AS `UP`
|
||||
INNER JOIN (
|
||||
`webapplication` AS `DOWN`
|
||||
INNER JOIN
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
ON `DOWN`.`id` = `DOWN_FunctionalCI`.`id`
|
||||
) ON (`DOWN`.`webserver_id` = `UP`.id)
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class = 'WebServer'
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN_FunctionalCI`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`networkdevice` AS `UP`
|
||||
INNER JOIN (
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
INNER JOIN
|
||||
`lnkconnectablecitonetworkdevice` AS `l1`
|
||||
ON `DOWN_FunctionalCI`.`id` = `l1`.`connectableci_id`
|
||||
) ON (((`l1`.`networkdevice_id` = `UP`.id) AND (`l1`.`type` = 'downlink')) AND COALESCE((`DOWN_FunctionalCI`.`finalclass` IN ('DatacenterDevice', 'NetworkDevice', 'Server', 'PC', 'Printer', 'StorageSystem', 'SANSwitch', 'TapeLibrary', 'NAS', 'ConnectableCI')), 1))
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class = 'NetworkDevice'
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`server` AS `UP`
|
||||
INNER JOIN (
|
||||
`hypervisor` AS `DOWN`
|
||||
INNER JOIN
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
ON `DOWN`.`id` = `DOWN_FunctionalCI`.`id`
|
||||
) ON (`DOWN`.`server_id` = `UP`.id)
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class = 'Server'
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`StorageSystem_storagesystem_id_FunctionalCI`.`name`, ''), COALESCE(' ', ''), COALESCE(`DOWN`.`name`, '')) AS CHAR) AS `name`,
|
||||
'LogicalVolume' AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`storagesystem` AS `UP`
|
||||
INNER JOIN (
|
||||
`logicalvolume` AS `DOWN`
|
||||
INNER JOIN
|
||||
`functionalci` AS `StorageSystem_storagesystem_id_FunctionalCI`
|
||||
ON `DOWN`.`storagesystem_id` = `StorageSystem_storagesystem_id_FunctionalCI`.`id`
|
||||
) ON ((`DOWN`.`storagesystem_id` = `UP`.id) AND COALESCE((`StorageSystem_storagesystem_id_FunctionalCI`.`finalclass` IN ('StorageSystem')), 1))
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class = 'StorageSystem'
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN_FunctionalCI`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`sanswitch` AS `UP`
|
||||
INNER JOIN (
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
INNER JOIN
|
||||
`lnkdatacenterdevicetosan` AS `lnk`
|
||||
ON `DOWN_FunctionalCI`.`id` = `lnk`.`datacenterdevice_id`
|
||||
) ON ((`lnk`.`san_id` = `UP`.id) AND COALESCE((`DOWN_FunctionalCI`.`finalclass` IN ('NetworkDevice', 'Server', 'StorageSystem', 'SANSwitch', 'TapeLibrary', 'NAS', 'DatacenterDevice')), 1))
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class = 'SANSwitch'
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN`.`name`, '')) AS CHAR) AS `name`,
|
||||
'Tape' AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`tapelibrary` AS `UP`
|
||||
INNER JOIN
|
||||
`tape` AS `DOWN`
|
||||
ON (`DOWN`.`tapelibrary_id` = `UP`.id)
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class = 'TapeLibrary'
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN`.`name`, '')) AS CHAR) AS `name`,
|
||||
'NASFileSystem' AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`nas` AS `UP`
|
||||
INNER JOIN
|
||||
`nasfilesystem` AS `DOWN`
|
||||
ON (`DOWN`.`nas_id` = `UP`.id)
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class = 'NAS'
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
CAST(CONCAT(COALESCE('redundancy=', ''), COALESCE(`DOWN`.`redundancy`, '')) AS CHAR) AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`hypervisor` AS `UP`
|
||||
INNER JOIN (
|
||||
`farm` AS `DOWN`
|
||||
INNER JOIN
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
ON `DOWN`.`id` = `DOWN_FunctionalCI`.`id`
|
||||
) ON (`DOWN`.`id` = `UP`.farm_id)
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class = 'Hypervisor'
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
1 AS `backtracking`
|
||||
FROM
|
||||
`farm` AS `UP`
|
||||
INNER JOIN (
|
||||
`hypervisor` AS `DOWN`
|
||||
INNER JOIN
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
ON `DOWN`.`id` = `DOWN_FunctionalCI`.`id`
|
||||
) ON (`DOWN`.`farm_id` = `UP`.id)
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class = 'Farm'
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`enclosure` AS `UP`
|
||||
INNER JOIN (
|
||||
`datacenterdevice` AS `DOWN`
|
||||
INNER JOIN
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
ON `DOWN`.`id` = `DOWN_FunctionalCI`.`id`
|
||||
) ON (`DOWN`.`enclosure_id` = `UP`.id)
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class = 'Enclosure'
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
CAST(CONCAT(COALESCE('redundancy=', ''), COALESCE(`DOWN`.`redundancy`, '')) AS CHAR) AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`powerconnection` AS `UP`
|
||||
INNER JOIN (
|
||||
`datacenterdevice` AS `DOWN`
|
||||
INNER JOIN
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
ON `DOWN`.`id` = `DOWN_FunctionalCI`.`id`
|
||||
) ON ((`DOWN`.`powera_id` = `UP`.id) OR (`DOWN`.`powerB_id` = `UP`.id))
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class IN ('PowerSource', 'PDU', 'PowerConnection')
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN_FunctionalCI`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
1 AS `backtracking`
|
||||
FROM
|
||||
`datacenterdevice` AS `UP`
|
||||
INNER JOIN
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
ON (((`DOWN_FunctionalCI`.`id` = `UP`.powerA_id) OR (`DOWN_FunctionalCI`.`id` = `UP`.powerB_id)) AND COALESCE((`DOWN_FunctionalCI`.`finalclass` IN ('PowerSource', 'PDU', 'PowerConnection')), 1))
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class IN ('NetworkDevice', 'Server', 'StorageSystem', 'SANSwitch', 'TapeLibrary', 'NAS', 'DatacenterDevice')
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`powerconnection` AS `UP`
|
||||
INNER JOIN (
|
||||
`pdu` AS `DOWN`
|
||||
INNER JOIN
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
ON `DOWN`.`id` = `DOWN_FunctionalCI`.`id`
|
||||
) ON (`DOWN`.`powerstart_id` = `UP`.id)
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class IN ('PowerSource', 'PDU', 'PowerConnection')
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN_FunctionalCI`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`logicalvolume` AS `UP`
|
||||
INNER JOIN (
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
INNER JOIN
|
||||
`lnkservertovolume` AS `lnk`
|
||||
ON `DOWN_FunctionalCI`.`id` = `lnk`.`server_id`
|
||||
) ON ((`lnk`.`volume_id` = `UP`.id) AND COALESCE((`DOWN_FunctionalCI`.`finalclass` IN ('Server')), 1))
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class = 'LogicalVolume'
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN_FunctionalCI`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`logicalvolume` AS `UP`
|
||||
INNER JOIN (
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
INNER JOIN
|
||||
`lnkvirtualdevicetovolume` AS `lnk`
|
||||
ON `DOWN_FunctionalCI`.`id` = `lnk`.`virtualdevice_id`
|
||||
) ON ((`lnk`.`volume_id` = `UP`.id) AND COALESCE((`DOWN_FunctionalCI`.`finalclass` IN ('VirtualHost', 'Hypervisor', 'Farm', 'VirtualMachine', 'VirtualDevice')), 1))
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class = 'LogicalVolume'
|
||||
WHERE 1
|
||||
UNION SELECT CAST(CONCAT(COALESCE(`DOWN_FunctionalCI`.`name`, '')) AS CHAR) AS `name`,
|
||||
`DOWN_FunctionalCI`.`finalclass` AS `class`,
|
||||
`DOWN`.`id` AS `id`,
|
||||
`FOUND`.`class` AS `parent_class`,
|
||||
`FOUND`.`id` AS `parent_id`,
|
||||
NULL AS `redundancy`,
|
||||
0 AS `backtracking`
|
||||
FROM
|
||||
`virtualhost` AS `UP`
|
||||
INNER JOIN (
|
||||
`virtualmachine` AS `DOWN`
|
||||
INNER JOIN
|
||||
`functionalci` AS `DOWN_FunctionalCI`
|
||||
ON `DOWN`.`id` = `DOWN_FunctionalCI`.`id`
|
||||
) ON (`DOWN`.`virtualhost_id` = `UP`.id)
|
||||
INNER JOIN
|
||||
`related_impacts` AS `FOUND`
|
||||
ON `UP`.id = `FOUND`.id AND `FOUND`.backtracking = 0 AND `FOUND`.class IN ('Hypervisor', 'Farm', 'VirtualHost')
|
||||
WHERE 1
|
||||
|
||||
)
|
||||
)
|
||||
SELECT name, class, id, parent_class, parent_id, redundancy, backtracking FROM related_impacts
|
||||
Reference in New Issue
Block a user