Мне нужно прочитать Jinja
файл, и мне нужно получить определенный атрибут из файла.
Рассмотрим пример ниже:
У меня есть demo.jinja
файл, содержащий:
resources:
- name: a-new-network
type: compute.v1.network
properties:
IPv4Range: 10.0.0.1/16
Мне нужно получить значение атрибута type
, т.е. compute.v1.network
.
Я пытался:
Рассмотренный выше код как yaml
. И попробовал:
a = """resources:
- name: a-new-network
type: compute.v1.network
properties:
IPv4Range: 10.0.0.1/16"""
print yaml.load(a)
который печатает {'resources': [{'type': 'compute.v1.network', 'name': 'a-new-network', 'properties': {'IPv4Range': '10.0.0.1/16'}}]}
Итак, из этого я могу легко получить type
: ["resources"][0]["type"]
Работает, как и ожидалось, для файла .jinja
.
У меня есть и другой формат jinja, который содержит {% --- %}
код.
{% for i in range(properties['readReplicas']) %}
- name: {{ ID }}-rr-{{ i }}
type: sqladmin.v1beta4.instance
properties:
backendType: SECOND_GEN
instanceType: READ_REPLICA_INSTANCE
databaseVersion: {{ properties['cloudsql']['databaseVersion'] }}
region: {{ properties['cloudsql']['region'] }}
masterInstanceName: $(ref.{{ ID }}-master.name)
replicaConfiguration:
failoverTarget: false
settings:
tier: {{ properties['cloudsql']['tier'] }}
{% if properties['failover'] %}
metadata:
dependsOn:
- {{ ID }}-failover
{% endif %}
{% endfor %}
Как я могу получить значение type
, т.е. sqladmin.v1beta4.instance
в этом случае? Потому что для выше jinja
контента, я не могу рассматривать его как yaml
.