Blitz 便利技#
変数の保存#
```py ""
- execute:
device: Router1
command: show interface
save:
- filter: ^(?P## プロンプトの返りに対応
* [参考: Replying to the prompt dialogue](https://pubhub.devnetcloud.com/media/pyats-development-guide/docs/writeblitz/writeblitz.html#replying-to-the-prompt-dialogue)
* reload 時などコマンド実行後に y/n など入力が必要になる場面があります。
* `reply`設定しておくことでpromptの戻りへの対応が可能です。
```yml
# Looking for the parse_output variable in the action execute
- apply_configuration:
- execute:
device: R1
command: write erase
reply:
- pattern: .*Do you wish to proceed anyway\? \(y/n\)\s*\[n\]
action: sendline(y)
loop_continue: True
continue_timer: False
条件文の実行#
- run_condition
run_condition
と記述することで条件文を追加することが可能です。- 例えば以下では、前のstep が正常に完了しなかったら試験をfailedにします。
- process_2:
- run_condition:
if: "%VARIABLES{process_2} != passed"
function: failed
actions:
- loop:
loop_variable_name: device
value: "%VARIABLES{device_list}"
actions:
- execute:
device: "%VARIABLES{device}"
command: "show run"
並行処理#
- 他の筐体と並行してstatus確認を実行したいときなど並行処理には
- parallel
を記述します。
# config の確認
- verify_configuration
- parallel:
- api:
device: PE1
function: get_interface_mtu_size
arguments:
interface: GigabitEthernet1
- parse:
command: show version
device: PE2
include:
- contains("version_short")
- learn:
device: PE1
feature: bgp
include:
- contains("info")
Note
- 変数を並列に保存して、同じ並列ブロックで実行されている別のアクションですぐに使用することはできないことに注意。
- 並列実行中のアクションで変数を使用したい場合は、その変数をその並列ブロック外のアクションに事前に保存しておく必要があります。
loop#
Warning
range: x, x
は loop_variable_name: range_num
と併用しないと無限ループになるため注意
ネガティブテスト#
- 失敗が予想されるアクションの結果を Passed することができます。
- negative
失敗時のスクリプト終了#
- 失敗時にスクリプトが停止するように調整できます。
- Script termination on failure
Warning
Blitz が使用する pyATS ライブラリの一部に制限があるため、現在、parallel キーワードの下に
continue: False
を設定して、失敗時にセクションを終了することはできません。