Cisco UCS Director Open Automation の手順書、リリース 5.4
インベント リコレクタの管理
インベント リコレクタの管理

インベント リコレクタの管理

この章は、次の項で構成されています。

インベントリ コレクタの作成

コレクタ フレームワークを使用して独自のインベントリ コレクタを実装することで、新規デバイスのサポートを導入できます。新規デバイスのサポートを追加する際は、データベース内のデータの収集と持続性を処理するインベントリ コレクタを実装する必要があります。インベントリ コレクタは、インベントリ データの収集、保持、および削除のコア タスクを実行します。インベントリ収集タスクは、各インベントリ オブジェクトの収集ハンドラに組み込まれています。

インベントリ収集ハンドラ

インベントリ収集ハンドラでは、インベントリ データの収集が可能です。インベントリ収集のためのインベントリ収集ハンドラを登録する必要があります。これらのハンドラは AbstractInventoryItemHandler を拡張する必要があります。

次のコード スニペットでは、インベントリ コレクタを登録して、特定のモデル オブジェクトのインベントリ収集を可能にします。

ConfigItemDef item1 = entry.createInventoryRoot(“foo.inventory.root”, FooInventoryItemHandler.class);
説明:
  • foo.inventory.root は一意の登録 ID です。

  • FooInventoryItemHandler.class は、インベントリを収集し、インベントリをクリーンアップするメソッドを実装するハンドラ クラスです。

インベントリ収集が必要な各オブジェクトに対し AbstractInventoryItemHandler クラスの個別の実装を登録する必要があります。詳細については、FooModule.java および FooInventoryItemHandler.java のドキュメントを参照してください。

インベントリ リスナー

インベントリ収集の前後にコードを入力できるように、インベントリ収集の前後に呼び出されるインベントリ リスナーを定義できます。この実装は、ユース ケースベースです。詳細については、FooInventoryListener.java クラスを参照してください。

アカウント タイプ エントリの作成

システムに新しいインベントリ コレクタを登録するには、各アカウント タイプに対し AccountTypeEntry クラスを作成する必要があります。

次のコード スニペットは、新しい AccountTypeEntry クラスの作成方法を示しています。
// This is mandatory, holds the information for device credential details
entry.setCredentialClass(FooAccount.class);
		
// This is mandatory, type of the Account will be shown in GUI as drill
// down box
entry.setAccountType(FooConstants.INFRA_ACCOUNT_TYPE);
		
// This is mandatory, label of the Account
entry.setAccountLabel(FooConstants.INFRA_ACCOUNT_LABEL);
		
// This is mandatory, specify the category of the account type ie.,
// Network / Storage / Compute
entry.setCategory(InfraAccountTypes.CAT_STORAGE);
		
//This is mandatory for setting report context for the new account type.
//Ensure that prior to this step the specified report context has been registered in 
//module initialization i.e onStart method
//Refer to Registering Report Context section
entry.setContextType(ReportContextRegistry.getInstance().getContextByName(FooConstants.INFRA_ACCOUNT_TYPE).getType());
		
// This is mandatory, it associates the new account type with either physical or 
// virtual account
entry.setAccountClass(AccountTypeEntry.PHYSICAL_ACCOUNT);

// Optional, prefix for tasks associated with this connector
entry.setInventoryTaskPrefix("Open Automation Inventory Task");

// Optional ,configurable inventory frequency in mins
entry.setInventoryFrequencyInMins(15);

// Supported POD types for this connector. The new account type will be associated
// with this pod. Note that this account type will be appended to list of account 
// types defined in pod definition XML. Refer to section “Adding a Pod Type” for pod // definition XML 
entry.setPodTypes(new String[] { "FooPod" });

// This is mandatory, to test the connectivity of the new account. The
// Handler should be of type PhysicalConnectivityTestHandler. Account creation is 
// is successful if this returns true.
entry.setTestConnectionHandler(new FooTestConnectionHandler());

// This is mandatory, associate inventory listener .Inventory listener will be called // before and after inventory is done
entry.setInventoryListener(new FooInventoryListener());
		
// Set device icon path
entry.setIconPath(“/app/images/icons/menu/tree/cisco_16x16.png”);

// set device vendor
entry.setVendor(“Cisco”);

// This is mandatory, in order to properly display your device in the Converged tab // of the UI
entry.setConvergedStackComponentBuilder(new DummyConvergedStackBuilder());
		
// If the Credential Policy support is
// required for this Account type then this is mandatory, can implement
// credential check against the policy name.
entry.setCredentialParser(new FooAccountCredentialParser());

// This is mandatory. Register Inventory Collectors for this account type.
// Refer to section “Creating Inventory Collectors” for more detail.
ConfigItemDef item1 = entry.createInventoryRoot(“foo.inventory.root”, FooInventoryItemHandler.class);

// Register the new account entry with the system.
PhysicalAccountTypeManager.getInstance().addNewAccountType(entry);

コレクタの登録

次のようにコレクタを登録する必要があります。

PhysicalAccountTypeManager.getInstance().addNewAccountType(entry);