하지만 Playbook은 예외 / fortinet 관계자들 이상한 fortinet 문법 만들지 말고.. python 써라 쫌..
jsx, jquery가 html에서 쓰이는 형식과유사해 보였는데 실제로 jsx처럼 템플릿 언어로서 역할을 수행함
JSX란
문제는 솔루션 위의 각 node? step 별로 돌아가는 건데 일단 json 형태로 받는 값들을 재 구조화시켜 list로 만들어야 한다.
결국 찾아보니 list 형태로 들어오고있었는데 사전에 전~혀 공유 안되었다.
계속 리스트 json 딕셔너리를 번갈아가며 설명하던 열정만 넘치는 담당자...
정적인 데이터가 니 맘대로 바뀌는 거니
결국 각 스텝(노드별로) 야근하며 알아봤다 하하
조건문 돌리기 위해서 list를 또 다른 list나 dictionary나 json중 하나로 바꾸라던데 뭐 어쩌라는건지
얼른 해결해줘버리자
# 1
{
"data": {
"code_output": [
"172.16.111.40",
"172.16.111.160"
]
},
"status": "Success",
"message": "",
"operation": null,
"execution_time": "149 ms"
}
# 2
{
"input": "[\"172.16.111.40\", \"172.16.111.160\"]"
}
필요한건 ip 값이여서 일단 set variables을 통해 2번 input 값으로 도출함
문제는 dictionary 형태가 아니라 list의 형태가 필요한 거 같은데..?
output
["172.16.111.40", "172.16.111.160"]
{{%- -%}}
넣으면 된다for, join jinja 문법
{varaibles_name|join(",")}
# for ~ in 문법
{% for obj in list %}
- loop.index() (0부터 횟수 세기)
- loop.first (반복 처음일 경우 T/ 아니면 F)
{{}}
이 선언될때마다 return 이 되는 것이다. (div같이 태그가 출력이 되는 모양)<script>
로 넘겨버리면 깔끔하게 None이 사라지지만, 현재 Playbook에서 다음 node로 넘겨주기 위해 쓰는 문법이다 보니 좀 아쉬운게 있었음 boolean인가? 근데 True/False 대신 다른 변수가 들어가면 어떤 값이 나온다는 거지..?
not not(vars.ip)
{%- set arr1 = [] -%}
{%- for v in vars.point -%}
{{- arr1.append(v)-}}
{%- endfor -%}
{{- arr1 -}}
"resultpoint": "NoneNone['172.16.111.40', '172.16.111.160']"