タスクを開発するには、最初に TaskConfigIf を実装する必要があります。タスク設定インターフェイスの設定プロセス中、タスクの実行に必要なデータを決定します。
次の例では、EnableSNMPConfig
が TaskConfigIf の開発プロセスの詳細情報を公開しています。Enable SNMP タスクは、Cisco Nexus デバイスで SNMP を有効にするように設計されています。
処理を進めるには、Nexus デバイスの IP アドレス、ログイン、パスワードが必要です。
EnableSNMPConfig の先頭に注釈が付いています。
@PersistenceCapable(detachable= "true", table = "foo_enable_snmp_config")
public class EnableSNMPConfig implements TaskConfigIf
{
PersistenceCapable
の注釈には、モジュール ID のプレフィックスが付いたテーブル名を指定する必要があります。モジュール ID のプレフィックスが付いていないテーブル名を使用しようとすると、Cisco UCS Director によってタスクの登録が妨げられるため、この規則には必ず従う必要があります。
続いて、次のフィールドを見ていきます。
- handler name
- configEntryId
- actionId
public static finald String HANDLER_NAME = "Enable SNMP for Nexus";
//configEntryId and actionId are mandatory fields
@Persistent
private long configEntryId
@Persistent
private long actionId
handler name はタスクの名前です。この名前は必ず一意の文字列にします。複数のタスクで同じハンドラ名を使用すると、問題が生じることになります。
上の例に示しているとおり、各タスクには、configEntryId
と actionId が必要です。これらの 2 つのフィールドに対応する getter と setter を定義する必要があります。これらの 2 つのフィールドは不可欠です。これらのフィールドは config オブジェクトに設定する必要があります。
次に、タスクを実行する上で実際に必要なデータを見ていきます。
//This is the ip address for the Nexus device on which you want to enable SNMP.
@FormField(label = "Host IP Address", help = "Host AP Address", mandatory = true,
type = FormFieldDefinition.FIELD_TYPE_EMBEDDED_LOV,
lovProvider = ModuleConstants.NEXUS_DEVICES_LOV_PROVIDER)
@USerInputField(type = ModuleConstants.NEXUS_DEVICE_LIST)
@Peristent
private String ipAddress = "";
@FormField(label = "Login", help = "Login", mandatory = true
@Persistent
private String login;
@FormField(label = "Password", help = "Password", mandatory = true
@Persistent
private String password;
上のコード サンプルを確認して、開発者が次の項目を含める必要があることに注意します。
config オブジェクトの定義が終了したら、Java Data Object(JDO)の拡張としてマーキングします。
ハンドラ オブジェクトは、カスタム コードを実際に実行する場所です。ハンドラ オブジェクトは AbstractTask を実装する必要があります。executeCustomAction メソッドを使用して、コードの実行のために以前に開発した、対応する config オブジェクトを取得できます。