Red Hat Training

A Red Hat training course is available for Red Hat JBoss Operations Network

第13章 例: インベントリーを管理するためのスクリプト(すべてのリソースタイプ)

サーバーおよびサービスは、定期的にローカルマシンを追加または削除します。検出スキャンは定期的にスケジュールされますが、実際に JBoss ON インベントリー内でそのリソースの追加または削除は手動です。また、管理者は実際にリソースのインポートを選択する必要があります。
管理者は、新しいリソースを自動的に追加し、定義する基準に基づいて他のリソースを自動的に削除することで、JBoss ON インベントリーを管理できます。

13.1. New Resources の自動インポート: autoimport.js

リソースが検出されると、技術的にはすでに JBoss ON のインベントリーにあります。ステータスには、が含まれ NEWます。JBoss ON はリソースが存在する場合に認識されるため、JBoss ON の状態はリソースがコミットされていないため、JBoss ON が管理できないためです。
スクリプトを作成して、定期的に実行して、新たに検出したリソースをインベントリーに自動的に追加できるようにします。このスクリプトはインベントリーの状態の新しいリソースに基づいて識別を行うため、無視またはインポート済みのリソースが含まれていません。
CLI スクリプトは 3 つの手順で実行されます。
  • を使用して新規リソースを識別します。 findUncommittedResources() メソッド。
  • 新規リソースの ID を取得します。
  • その後、検出システムのインポート操作を呼び出してこれらのリソースをインポートします。
//Usage: autoImport.js
//Description: Imports all auto-discovered inventory into JON
// autoImport.js
rhq.login('rhqadmin', 'rhqadmin');
println("Running autoImport_js");
 
var resources = findUncommittedResources();
var resourceIds = getIds(resources);
DiscoveryBoss.importResources(resourceIds);
 
rhq.logout();
リモート API にすでに定義されている操作の 1 つのみ importResources.他の 2 つの機能 findUncommittedResources および getIds - スクリプトで定義する必要があります。
コミットされていない(新しい)リソースは、 ResourceCriteria 検索するには、インベントリーのステータスに基づいて検索パラメーターを追加します。
// returns a java.util.List of Resource objects
// that have not yet been committed into inventory
function findUncommittedResources() {
    var criteria = ResourceCriteria();
    criteria.addFilterInventoryStatus(InventoryStatus.NEW);
     
    return ResourceManager.findResourcesByCriteria(criteria);
}
2 番目の関数は、インベントリー検索が実際にリソースを返したことを確認します。その場合は、アレイ内の各リソースの ID を取得します。
// returns an array of ids for a given list
// of Resource objects. Note the resources argument
// can actually be any Collection that contains
// elements having an id property.
function getIds(resources) {
	var ids = [];

	if (resources.size() > 0) {
		println("Found resources to import: ");
		for (i = 0; i < resources.size(); i++) {
			resource = resources.get(i);
			ids[i] =  resource.id;
			println("  " + resource.name);
		}
	} else {
		println("No resources found awaiting import...");
	}

    return ids;
}