Questi sono i cambiamenti più importanti di cui devi essere consapevole quando migri il tua plug-in a questa versione delle API.
Da notare che le modifiche sono espresse in relazione alla versione 1 dell'API.
In doc/treasures/migration_helpers/agent_based_v1_v2.py si trova uno script che eseguirà la maggior parte della migrazione. Assicurarsi di leggere i testi di aiuto chiamandolo con l'argomento --help
Modifiche all'architettura
Questi plug-in si trovavano in precedenza all'indirizzo local/lib/check_mk/base/plugins/agent_based
Per essere rilevati da Checkmk, ora devono trovarsi in local/lib/python3/cmk_addons/plugins/<YOUR PLUGIN FAMILY NAME>/agent_based
Modifiche funzionali
il modulo type_defs è stato rimosso
Il modulo type_defs è stato rimosso. Tutti i tipi sono ora importati direttamente dal modulo v2.
La firma check_levels è stata modificata
La nuova funzione check_levels() è stata progettata per lavorare bene con gli elementi dei livelli delle nuove API v1 dei ruleset, che si trovano in cmk.rulesets.v1.form_specs
I tipi di argomenti sono stati aggiunti all'API e si trovano in cmk.agent_based.v2
La registrazione è sostituita da un approccio di scoperta
Questo è il motivo principale dell'introduzione di questa nuova versione dell'API. I plugin non vengono più registrati durante l'importazione, ma solo creati e rilevati successivamente dal backend. Per realizzare ciò, abbiamo introdotto quattro nuove classi:
- AgentSection che sostituisce register.agent_section()
- SimpleSNMPSection e SNMPSection che sostituiscono register.snmp_section()
- CheckPlugin che sostituisce register.check_plugin()
- InventoryPlugin sostituisce register.inventory_plugin()
Gli argomenti di questi sono appena cambiati (si veda il prossimo paragrafo), con il risultato di modifiche facili da automatizzare (si veda ad esempio questo commit).
Argomenti modificati e validazione per le sezioni Agent e SNMP
Abbiamo leggermente modificato gli argomenti delle classi Section di cui sopra. Ora preferiamo le annotazioni di tipo alla validazione a runtime. Per ottenere annotazioni di tipo leggermente più semplici, parse_function non è più opzionale.
Rimosso il wrapper per la creazione di regex regex()
È stato rimosso. Si veda la documentazione per le motivazioni. Si può usare pythons re.compile() come sostituto.
Aggiunta la funzione di rendering time_offset()
A grande richiesta è stata aggiunta una funzione per rendere un numero di secondi che potrebbe essere negativo.
Ulteriori riferimenti
È possibile trovare l'intera documentazione per entrambe le Check API v1 e v2 basate su agenti in un sito Checkmk a partire dalla versione 2.3.0, alla voce Aiuto > Riferimenti alle API dei plug-in > API basate su agenti ("Check API").
Se volete vedere come abbiamo "migrato in blocco" i plugin dalla v1 alla v2: esempio 1, esempio 2 e esempio 3.