Skip to content

Blitz 便利技#

変数の保存#

```py "" - execute: device: Router1 command: show interface save: - filter: ^(?P[0-9A-Za-z]+).* regex: true - print: item: value: "%VARIABLES{COUNT}"

## プロンプトの返りに対応

* [参考: 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, xloop_variable_name: range_num と併用しないと無限ループになるため注意

ネガティブテスト#

  • 失敗が予想されるアクションの結果を Passed することができます。
  • negative

失敗時のスクリプト終了#

Warning

Blitz が使用する pyATS ライブラリの一部に制限があるため、現在、parallel キーワードの下にcontinue: Falseを設定して、失敗時にセクションを終了することはできません。