SuperAPI AI 工具集

infrahub-managing-transforms

编程与开发

查看项目

更新于 10-16 03:11

技能介绍

用途:该技能为编写 Infrahub 转换提供指导。转换负责把 Infrahub 数据渲染成 JSON、文本、CSV、设备配置或其他文本输出,入口为 Python 类或 Jinja2 模板;输出可作为 artifact 文件保存,也用于生成设备配置、CSV 报表、线缆矩阵、清单导出,以及把查询数据套入 Jinja2 模板。

主要能力与类型:Python 转换继承 InfrahubTransform 并实现 transform(),返回类型需匹配 artifact 的 content_type(application/json 或 application/yaml 下可为 dict,其余六种需 str);Jinja2 转换输出文本,入口为 .j2 文件;也支持 Python 逻辑与 Jinja2 渲染混合。规则按优先级分为类型选择、Python、Jinja2、混合、artifact、API 参考、模式、测试等类别。

使用要点:先选择转换类型,编写 .gql 查询,再实现转换;如需存为文件则配置 artifact definitions,并在 .infrahub.yml 中注册到 python_transforms 或 jinja2_transforms,注意两者 query 绑定位置不同。Python 转换应声明 watch 块,列出所有导入的本方模块及运行时读取的文件,否则依赖不可信、每次提交都会重渲染;纯字符串拼接建议改用 Jinja2。测试可写 YAML 驱动的 smoke、unit、integration 定义,并用 infrahubctl transform 或 infrahubctl render 本地验证。

限制与依赖:转换与 schema 必须对齐,读节点属性需使用完整 __value 路径;artifact_definitions.transformation 中的注册名必须精确匹配,否则渲染时报 transformation not found;artifact 需目标节点继承 CoreArtifactTarget。若由调用方触发重新生成,需轮询 CoreArtifact 等待内容就绪。删除节点等资料未覆盖的内容暂未提供。