tree afeccec93a64ccccef567ade5f276321878c9521
parent ce8d5cd5b5f96e8dfde46c94bbf6934f73e171d2
author Mahesh <92411857+pimpalemahesh@users.noreply.github.com> 1758814499 +0530
committer GitHub <noreply@github.com> 1758814499 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJo1WEjCRC1aQ7uu5UhlAAAupYQAKBGNLIZhVT46tzjmRyUPdd8
 +ku4ydcO2M3KNyI6oczpPDRPFkZaCF8Z1YZKlHBrkYifdbCuhI9Ir6RHEPaXgCJb
 3T3fEfRHpWWiH0wmjlaLjavasIw7WSL4ZBKyVmDOrXyo16RpO8B0ZyAbu9LIcFJK
 M9lfKGPGbRbkJiGos5hG/ANfRwQGRnat2J0iUHSk9n480kd4bWuL3S/uU6emuG1G
 vJczOrwQ1ERp6IvMLhsqbvzl8/nGrOasG8MTPnhtD+xEtSRgTT+91VeixKLFQ0qV
 7iN0mkRLj3hyaDVvuuyxmXfQIwvYKN1TAu/acJeGo01YSOoR5rW53nedZiz6SXm3
 AS1Ivp0TswjleTaWnvzMHyamamMgkpianImc0D3nOCkrd+mFLUhMAxYrqga05Anp
 cFucNzDDxN7cSaHKLcSRJSozzWVCsVBRnAcEVtNrsIc1J0Jh0azs9NiW9tZv5Z6m
 JBW4uaqbIElGm2Osn51exOeempfPZIdf5F80+jTwJ/6w/mTPkwachHIiDGRypXpr
 0yT5FzvjUiQ2oLmUGYp2mefO0k8yf2gCp8dDTYd8PvwErFNxn8KkXhD3qRkxSrMa
 fbw12f0UIffWbHCt6g61s11SQvjjKgnNhKwy22gYhhHBHJNLHLrd7E/4XGpaSsNW
 +eToQ4MdnkD+L2aHRQLu
 =XLr3
 -----END PGP SIGNATURE-----
 

ServerClusterInterface: decouple Diagnostic Logs cluster. (#40585)

* Initial implementation of code driven diagnostic logs cluster

* Codegen Integration changes
- Introduce shim diagnostic logs server file
- declare dynamic array for delegate table

* Add tests for diagnostic logs cluster

* Restyled changes. fix ci and typos

* Run zap generation for current cluster changes

* Update codegenIntegration as per the Centralize codegen integration approach

* Create singletone diagnostic logs cluster
    - use cluster server and shutdown callbacks

* fix: Return command status as std::nullopt if status added in response

* fix CI failure because of two Invalid command responses
- convert featuremap attribute to callback

* Addressed review comments

* Restyled by whitespace

* Fix tests failure

* Changes that likely decrease size:

- use a single global  singleton for CodegenIntegration. have less
  code/logic.
- Force the cluster to use kRootEndpoint

* Mark diagnostic logs revision and feature map as AAI.

* Some code clarity cleanup which saves some flash.

* Restyle

* Add instance method, update readme

* Remove global instance for classes

* Documentation changes

* Readme update

* Merge logic into cluster class

* Changes as per the migration doc

* Change cluster server and shutdown callback

* Add remaining zap file changes
- run zap_convert_all.py and zap_regen_all.py

* fix tests: assert before optional value

* fix ci

* Added diagnostic cluster to code driven clusters in config-data.yaml
run zap regen

---------

Co-authored-by: Andrei Litvin <andy314@gmail.com>