第8章 リソースへのアクセス
Automation Controller はプライマリーキーを使用して個々のリソースオブジェクトにアクセスします。名前付き URL 機能を通じて、リソース固有で、人間が判読できる識別子を使用して、Automation Controller リソースにアクセスできます。
次の例は、補助クエリー文字列なしでリソースオブジェクトにアクセスできる名前付き URL パスを示しています。
/api/v2/hosts/host_name++inv_name++org_name/
/api/v2/hosts/host_name++inv_name++org_name/
Copy to clipboardCopied8.1. 設定オプション
/api/v2/settings/named-url/: NAMED_URL_FORMATS
および NAMED_URL_GRAPH_NODES
という 2 つの名前付き URL 関連の設定があります。
NAMED_URL_FORMATS
は、使用可能なすべての名前付き URL 識別子形式の読み取り専用のキーと値のペアのリストです。以下は NAMED_URL_FORMATS
の例になります。
"NAMED_URL_FORMATS": { "organizations": "<name>", "teams": "<name>++<organization.name>", "credential_types": "<name>+<kind>", "credentials": "<name>++<credential_type.name>+<credential_type.kind>++<organization.name>", "notification_templates": "<name>++<organization.name>", "job_templates": "<name>++<organization.name>", "projects": "<name>++<organization.name>", "inventories": "<name>++<organization.name>", "hosts": "<name>++<inventory.name>++<organization.name>", "groups": "<name>++<inventory.name>++<organization.name>", "inventory_sources": "<name>++<inventory.name>++<organization.name>", "inventory_scripts": "<name>++<organization.name>", "instance_groups": "<name>", "labels": "<name>++<organization.name>", "workflow_job_templates": "<name>++<organization.name>", "workflow_job_template_nodes": "<identifier>++<workflow_job_template.name>++<organization.name>", "applications": "<name>++<organization.name>", "users": "<username>", "instances": "<hostname>" }
"NAMED_URL_FORMATS": {
"organizations": "<name>",
"teams": "<name>++<organization.name>",
"credential_types": "<name>+<kind>",
"credentials": "<name>++<credential_type.name>+<credential_type.kind>++<organization.name>",
"notification_templates": "<name>++<organization.name>",
"job_templates": "<name>++<organization.name>",
"projects": "<name>++<organization.name>",
"inventories": "<name>++<organization.name>",
"hosts": "<name>++<inventory.name>++<organization.name>",
"groups": "<name>++<inventory.name>++<organization.name>",
"inventory_sources": "<name>++<inventory.name>++<organization.name>",
"inventory_scripts": "<name>++<organization.name>",
"instance_groups": "<name>",
"labels": "<name>++<organization.name>",
"workflow_job_templates": "<name>++<organization.name>",
"workflow_job_template_nodes": "<identifier>++<workflow_job_template.name>++<organization.name>",
"applications": "<name>++<organization.name>",
"users": "<username>",
"instances": "<hostname>"
}
Copy to clipboardCopied
NAMED_URL_FORMATS
の各項目のキーは、名前付き URL を持つリソースの API 名です。値は、人間が判読できる、そのリソースの一意識別子を形成する方法を示す文字列です。NAMED_URL_FORMATS
には、名前付き URL を持つことができるリソースのみがリストされ、そこにリストされていないリソースには名前付き URL はありません。リソースに名前付き URL を設定できる場合、そのオブジェクトには、オブジェクト固有の名前付き URL を表す named_url
フィールドが必要です。このフィールドはリストビューではなく詳細ビューでのみ表示されます。正確に生成された名前付き URL を使用して、指定されたリソースオブジェクトにアクセスできます。これはオブジェクトとそれに関連する URL です。たとえば、/api/v2/res_name/obj_slug/
が有効な場合、/api/v2/res_name/obj_slug/related_res_name/
も有効です。
NAMED_URL_FORMATS
は、人間が判読できる一意の識別子と名前付き URL 自体を作成するのに十分な情報を提供します。使いやすさを考慮して、名前付き URL を指定できるリソースのオブジェクトにはすべて、そのオブジェクトの名前付き URL を表示する関連フィールド named_url
があります。そのフィールドをコピーして貼り付け、独自のカスタム用途に使用できます。詳細は、リソースオブジェクトに名前付き URL がある場合、API ブラウザーのヘルプテキストを参照してください。
名前付き URL ラベル (ID 5 など) を手動で決定できます。NAMED_URL_FORMATS
を使用してこの特定のリソースオブジェクトの名前付き URL を作成するには、まず NAMED_URL_FORMATS
の labels フィールドを参照して、識別子形式 <name>++<organization.name>
を取得します。
-
URL 形式の最初の部分は
<name>
です。つまり、ラベルリソースの詳細が/api/v2/labels/5/
にあり、返された JSON でname
フィールドを探すことができます。名前
フィールドの値がFoo
の場合、一意の識別子の最初の部分はFoo
になります。 -
形式の 2 番目の部分は二重プラス記号 ++ です。これは、一意の識別子の異なる部分を分ける区切り文字です。これらを一意の識別子に追加すると、
Foo++
が得られます。 形式の 3 番目の部分は
<organization.name>
です。これは、フィールドが調査中の現在のラベルオブジェクト内ではなく、ラベルオブジェクトが指す組織内にあることを示します。形式が示すように、現在返されている JSON の関連フィールドで組織を検索します。そのフィールドは存在しない可能性があります。存在する場合は、そのフィールドに指定された URL (例:/api/v2/organizations/3/)
に従って特定の組織の詳細を取得し、その名前フィールド (例: "Default") を抽出して、現在の一意の識別子に追加します。<organizations.name>
は、形式の最後の部分なので、/api/v2/labels/Foo++Default/
のように、名前付き URL が生成されます。ラベルオブジェクトの詳細の関連フィールドに組織が存在しない場合は、代わりに空の文字列を追加します。これにより現在の識別子は変更されません。したがって、
Foo++
が最終的な一意の識別子になり、結果として生成される名前付き URL は/api/v2/labels/Foo++/
になります。
名前付き URL の一意の識別子を生成する際の重要な側面は、予約文字に関係しています。識別子は URL の一部であるため、;/?:@=&[]
などの、URL 標準による予約文字はパーセント記号でエンコードされます。たとえば、組織の名前が ;/?:@=&[]
の場合、その一意の識別子は %3B%2F%3F%3A%40%3D%26%5B%5D
になります。もう 1 つの特別な予約文字は +
です。これは URL 標準では予約されていませんが、名前付き URL によって識別子のさまざまな部分をリンクするために使用されます。[+]
でエンコードされます。たとえば、組織名が [+]
の場合、その一意の識別子は %5B[+]%5D
になります。ここで、元の [
と ]
はパーセントにエンコードされ、+
は [+]
に変換されます。
NAMED_URL_FORMATS
は、手動で変更できませんが、変更は自動的に行われ、時間の経過とともに拡張され、基礎となるリソースの変更と拡張を反映します。名前付き URL 機能を使用する同じクラスターの NAMED_URL_FORMATS
を参照してください。
NAMED_URL_GRAPH_NODES
は、キーと値のペアのもう 1 つの読み取り専用リスト、名前付き URL を管理するために使用される内部グラフデータ構造を公開します。これは人間が読める形式ではありませんが、プログラムで名前付き URL を生成するために使用する必要があります。任意のリソースオブジェクトのプライマリーキーに NAMED_URL_GRAPH_NODES
の情報を使用して、名前付きの URL を指定できる場合の、名前付き URL を生成するスクリプトのサンプルは、GitHub にあります。