.NET SDK

最終公開日 : Sep 25, 2026
SDX NITRO APIは、APIのスコープと目的に応じて、システムAPIと構成APIに分類されます。NITRO操作のトラブルシューティングも可能です。
Related information

システムAPI

NITROを使用するための最初のステップは、SDXアプライアンスとのセッションを確立し、その後、管理者の資格情報を使用してセッションを認証することです。
アプライアンスのIPアドレスと、アプライアンスに接続するためのプロトコル(HTTPまたはHTTPS)を指定して、nitro_serviceクラスのオブジェクトを作成します。次に、このオブジェクトを使用して、管理者のユーザー名とパスワードを指定してアプライアンスにログオンします。
注記:そのアプライアンスにユーザーアカウントが必要です。実行できる構成操作は、アカウントに割り当てられている管理ロールによって制限されます。
次のサンプルコードは、HTTPSプロトコルを使用してIPアドレス10.102.31.16のSDXアプライアンスに接続します。
//Specify the IP address of the appliance and service type
nitro_service nitroservice = new nitro_service ("10.102.31.16", "https");

//Specify the login credentials
nitroservice.login("nsroot", "verysecret");
注記: アプライアンスでの今後のすべてのNITRO操作で、 nitro_service オブジェクトを使用します。
アプライアンスから切断するには、次のようにlogout()メソッドを呼び出します。
nitroservice.logout();

構成API

NITROプロトコルは、SDXアプライアンスのリソースを構成するために使用できます。
リソースを構成するためのAPIは、com.citrix.sdx.nitro.resource.config.<resource_type>という形式のパッケージまたは名前空間にグループ化されています。これらの各パッケージまたは名前空間には、リソースを構成するためのAPIを提供する<resource_type>という名前のクラスが含まれています。
たとえば、NetScalerリソースには、com.citrix.sdx.nitro.resource.config.nsパッケージまたは名前空間があります。
リソースクラスは、他の操作を実行するためのAPIを提供します。これらの操作には、リソースの作成、リソースとリソースプロパティの取得、リソースの更新、リソースの削除、およびリソースに対する一括操作の実行が含まれます。

リソースの作成

SDXアプライアンス上にリソース(例:NetScalerインスタンス)を作成するには:
  1. 対応するプロパティ名を使用して、リソースの必須プロパティの値を設定します。その結果、リソースに必要な詳細情報を含むリソースオブジェクトが作成されます。 注:これらの値はクライアントにローカルに設定されます。オブジェクトがアップロードされるまで、値はアプライアンスに反映されません。
  2. 静的 add() メソッドを使用して、リソースオブジェクトをアプライアンスにアップロードします。
次のサンプルコードは、SDXアプライアンス上に「ns_instance」という名前のNetScalerインスタンスを作成します。
ns newns = new ns();

//Set the properties of the NetScaler locally
newns.name = "ns_instance";
newns.ip_address = "10.70.136.5";
newns.netmask = "255.255.255.0";
newns.gateway = "10.70.136.1";
newns.image_name = "nsvpx-9.3.45_nc.xva";
newns.profile_name = "ns_nsroot_profile";
newns.vm_memory_total = 2048;
newns.throughput = 1000;
newns.pps = 1000000;
newns.license = "Standard";
newns.username = "admin";
newns.password = "admin";

int number_of_interfaces = 2;
network_interface[] interface_array = new network_interface[number_of_interfaces];

//Adding 10/1
interface_array[0] = new network_interface();
interface_array[0].port_name = "10/1";

//Adding 10/2
interface_array[1] = new network_interface();
interface_array[1].port_name = "10/2";

newns.network_interfaces = interface_array;

//Upload the NetScaler instance
ns result = ns.add(nitroservice, newns);

リソースの詳細を取得する

SDXアプライアンス上のリソースのプロパティを取得するには、次の手順を実行します。
  1. get() メソッドを使用して、アプライアンスから構成を取得します。その結果、リソースオブジェクトが作成されます。
  2. 対応するプロパティ名を使用して、オブジェクトから必要なプロパティを抽出します。
次のサンプルコードは、すべてのNetScaler®リソースの詳細を取得します。
//Retrieve the resource object from the SDX appliance
ns[] returned_ns = ns.get(nitroservice);

//Extract the properties of the resource from the object
Console.WriteLine(returned_ns[i].ip_address);
Console.WriteLine(returned_ns[i].netmask);

リソースの統計情報を取得する

SDXアプライアンスは、その機能の使用状況に関する統計情報を収集します。これらの統計情報はNITROを使用して取得できます。
次のサンプルコードは、ID 123456a のNetScalerインスタンスの統計情報を取得します。
ns obj = new ns();
obj.id = "123456a";
ns stats = ns.get(nitroservice, obj);
Console.WriteLine("CPU Usage:" + stats.ns_cpu_usage);
Console.WriteLine("Memory Usage:" + stats.ns_memory_usage);
Console.WriteLine("Request rate/sec:" +stats.http_req);

リソースを更新する

アプライアンス上の既存のリソースのプロパティを更新するには、次の手順を実行します。
  1. id プロパティを、更新するリソースのIDに設定します。
  2. 対応するプロパティ名を使用して、リソースの必須プロパティの値を設定します。結果はリソースオブジェクトになります。 注:これらの値はクライアントにローカルで設定されます。オブジェクトがアップロードされるまで、これらの値はアプライアンスに反映されません。
  3. update() メソッドを使用して、リソースオブジェクトをアプライアンスにアップロードします。
次のサンプルコードは、ID 123456a の NetScaler インスタンスの名前を 'ns_instance_new' に更新します。
ns update_obj = new ns();

//Set the ID of the NetScaler to be updated
update_obj.id = "123456a";

//Get existing NetScaler details
update_obj = ns.get(nitroservice, update_obj);

//Update the name of the NetScaler to "ns_instance_new" locally
update_obj.name = "ns_instance_new";

//Upload the updated NetScaler details
ns result = ns.update(nitroservice, update_obj);

リソースを削除する

既存のリソースを削除するには、削除するリソースの ID を引数として渡し、リソースクラスの静的メソッド delete() を呼び出します。
次のサンプルコードは、ID 1 の NetScaler インスタンスを削除します。
ns obj = new ns();
obj.id = "123456a";
ns.delete(nitroservice, obj);

一括操作

複数のリソースを同時に照会または変更できるため、ネットワークトラフィックを最小限に抑えることができます。たとえば、同じ操作で複数の NetScaler SDX アプライアンスを追加できます。
各リソースクラスには、リソースの追加、更新、削除のためにリソースの配列を受け取るメソッドがあります。一括操作を実行するには、各操作の詳細をローカルで指定し、その詳細を一度にサーバーに送信します。
一括操作内の一部の操作の失敗を考慮するために、NITRO では次のいずれかの動作を構成できます。
  • 終了。 最初のエラーが発生すると、実行は停止します。エラーの前に実行されたコマンドはコミットされます。
  • 続行。 一部のコマンドが失敗しても、リスト内のすべてのコマンドが実行されます。
注: アプライアンスとの接続を確立する際に、必要な動作を構成するには、 onerror パラメータを nitro_service() メソッドで設定します。
次のサンプルコードは、1回の操作で2つのADCアプライアンスを追加します。
ns[] newns = new ns[2];

//Specify details of first NetScaler
newns[0] = new ns();
newns[0].name = "ns_instance1";
newns[0].ip_address = "10.70.136.5";
newns[0].netmask = "255.255.255.0";
newns[0].gateway = "10.70.136.1";
...
...

//Specify details of second NetScaler
newns[1] = new ns();
newns[1].name = "ns_instance2";
newns[1].ip_address = "10.70.136.8";
newns[1].netmask = "255.255.255.0";
newns[1].gateway = "10.70.136.1";
...
...

//upload the details of the ADC appliances to the NITRO server
ns[] result = ns.add(nitroservice, newns);

例外処理

エラーコードフィールドは、操作のステータスを示します。
  • エラーコードが0の場合、操作は成功しています。
  • ゼロ以外のエラーコードは、NITROリクエストの処理中にエラーが発生したことを示します。
エラーメッセージフィールドには、簡単な説明と障害の性質が記載されています。
com.citrix.sdx.nitro.exception.nitro_exception クラスは、NITRO APIの実行におけるすべての例外をキャッチします。例外に関する情報を取得するには、getErrorCode() メソッドを使用できます。
エラーコードの詳細については、<NITRO_SDK_HOME>/doc フォルダーにあるAPIリファレンスを参照してください。