Junos PyEZアプリケーションでインラインまたは外部のテーブルとビューを読み込む
定義済みのテーブル、インラインテーブル、外部カスタムテーブルをJunos PyEZアプリケーションにインポートします。
Junos PyEZのテーブルとビューは、Junosデバイスの設定や、運用コマンドの出力や設定データから特定の情報を抽出するためのシンプルで効率的な方法を提供します。Junos PyEZには、アプリケーションで使用できる定義済みの運用テーブルとビューのセットが用意されています。また、独自のカスタムの運用テーブルや設定テーブルとビューを作成することもできます。
クイックインラインテーブルとビューは、Pythonアプリケーションで直接複数行の文字列として作成できます。または、外部ファイルに 1 つ以上のテーブルとビューの定義を作成し、テーブルを Python アプリケーションにインポートすることもできます。インラインテーブルとビューは使いやすいですが、外部ファイルを使用すると、一元化された再利用可能なライブラリを作成できます。
Junos PyEZの定義済みテーブルとビューをPythonアプリケーションで使用するには、テーブルをアプリケーションにインポートする必要があります。カスタム表とビューを使用するには、表とビューの定義を作成し、定義がモジュールの内部か外部かに応じて、定義をアプリケーションにロードまたはインポートする必要があります。次のセクションでは、モジュールの内部と外部の両方にあるテーブルとビューのこのプロセスの概要を説明します。
Junos PyEZの定義済みテーブルとビューをインポートする
Junos PyEZ jnpr.junos.op モジュールと jnpr.junos.command モジュールは、いくつかの一般的な操作RPCとコマンド用に定義済みのテーブルとビュー定義を提供します。Junos PyEZの定義済みテーブルとビューをPythonアプリケーションで使用するには、アプリケーションに適切なimportステートメントを含める必要があります。Junos PyEZ Device クラスのインポートに加えて、必要なテーブルもインポートする必要があります。
次の例では、定義済みの運用テーブル EthPortTable を jnpr.junos.op.ethport モジュールからインポートします。
from jnpr.junos import Device from jnpr.junos.op.ethport import EthPortTable
テーブル定義とビュー定義をインポートした後、テーブル とビューの使用の説明に従って使用できます。次の例では、テーブルで定義されたRPCのデータを取得し、インターフェイス名と運用ステータスを出力します。
from jnpr.junos import Device from jnpr.junos.op.ethport import EthPortTable with Device(host='router.example.net') as dev: eth = EthPortTable(dev) eth.get() for item in eth: print ("{}: {}".format(item.name, item.oper))
Junos PyEZの定義済みテーブルとビューの詳細については、 定義済みJunos PyEZ操作テーブル(構造化出力)を参照してください。
インラインテーブルとビューの読み込み
Junos PyEZアプリケーションでカスタムのインラインテーブルとビューを作成、ロード、および使用するには:
テーブル定義とビュー定義が読み込まれた後、モジュールでインラインテーブルと外部テーブルを使用する方法に違いはありません。詳細については、「 テーブルとビューの使用」を参照してください。
外部テーブルとビューのインポート
外部テーブルとビュー定義は、Junos PyEZアプリケーションの外部にあるファイルに配置されます。外部のカスタムテーブルとビューを作成してJunos PyEZアプリケーションにインポートするには、次の手順に従います。
テーブル定義とビュー定義が読み込まれた後、モジュールでインラインテーブルと外部テーブルを使用する方法に違いはありません。詳細については、「 テーブルとビューの使用」を参照してください。
テーブルとビューを使用する
テーブル定義とビュー定義をロードまたはインポートした後、事前定義されたテーブル、カスタムインライン、またはカスタム外部テーブルを同じ方法で使用できます。
テーブルを使用するには:
次の例では、カスタム外部テーブル UserTable をインポートします。アプリケーションはデバイスに接続し、テーブルのget()メソッドを呼び出して、[edit system login]階層レベルからuserオブジェクトを取得します。次に、アプリケーションは各ユーザー名とそれに対応するログインクラスを出力します。
from jnpr.junos import Device from myTables.ConfigTables import UserTable with Device(host='router.example.com') as dev: users = UserTable(dev) users.get() for account in users: print("Username is {}\nUser class is {}".format(account.username, account.userclass))
Junos PyEZテーブルの使用方法の詳細については、以下のトピックを参照してください。