Scope alarm tracking to selected templates and surface endpoint/security state on the dashboard so operators can deploy in large galaxies without drowning clients in irrelevant alarms or guessing what the server is advertising
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -17,7 +17,41 @@
|
||||
-- 17 = $DIObject (DI objects)
|
||||
-- 24 = $DDESuiteLinkClient
|
||||
-- 26 = $OPCClient
|
||||
--
|
||||
-- template_chain (new): pipe-delimited list of template tag_names walking
|
||||
-- gobject.derived_from_gobject_id from the instance upward. Index 0 is the
|
||||
-- object's own immediate template, the last entry is the most ancestral
|
||||
-- template before $Object. Mirrors the deployed_package_chain CTE pattern
|
||||
-- in attributes.sql. Consumed by AlarmObjectFilter for template-based
|
||||
-- alarm filtering with wildcard support.
|
||||
|
||||
;WITH template_chain AS (
|
||||
-- Start from each non-template deployed instance's own template
|
||||
SELECT
|
||||
g.gobject_id AS instance_gobject_id,
|
||||
t.gobject_id AS template_gobject_id,
|
||||
t.tag_name AS template_tag_name,
|
||||
t.derived_from_gobject_id,
|
||||
0 AS depth
|
||||
FROM gobject g
|
||||
INNER JOIN gobject t
|
||||
ON t.gobject_id = g.derived_from_gobject_id
|
||||
WHERE g.is_template = 0
|
||||
AND g.deployed_package_id <> 0
|
||||
AND g.derived_from_gobject_id <> 0
|
||||
UNION ALL
|
||||
-- Walk up the template derivation chain
|
||||
SELECT
|
||||
tc.instance_gobject_id,
|
||||
t.gobject_id,
|
||||
t.tag_name,
|
||||
t.derived_from_gobject_id,
|
||||
tc.depth + 1
|
||||
FROM template_chain tc
|
||||
INNER JOIN gobject t
|
||||
ON t.gobject_id = tc.derived_from_gobject_id
|
||||
WHERE tc.derived_from_gobject_id <> 0 AND tc.depth < 10
|
||||
)
|
||||
SELECT DISTINCT
|
||||
g.gobject_id,
|
||||
g.tag_name,
|
||||
@@ -33,7 +67,17 @@ SELECT DISTINCT
|
||||
CASE WHEN td.category_id = 13
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END AS is_area
|
||||
END AS is_area,
|
||||
ISNULL(
|
||||
STUFF((
|
||||
SELECT '|' + tc.template_tag_name
|
||||
FROM template_chain tc
|
||||
WHERE tc.instance_gobject_id = g.gobject_id
|
||||
ORDER BY tc.depth
|
||||
FOR XML PATH('')
|
||||
), 1, 1, ''),
|
||||
''
|
||||
) AS template_chain
|
||||
FROM gobject g
|
||||
INNER JOIN template_definition td
|
||||
ON g.template_definition_id = td.template_definition_id
|
||||
|
||||
Reference in New Issue
Block a user