Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
22.4.5. インスタンスの使用
LMIShell インスタンスは、CIMOM が提供するインスタンスを表します。プロパティーの取得や設定、メソッドの一覧表示や呼び出し、ドキュメンテーション文字列の表示、関連オブジェクト一覧の取得、修正されたオブジェクトの CIMOM へのプッシュ、CIMOM から個別インスタンスの削除が行えます。
インスタンスへのアクセス
特定のクラスオブジェクトの利用可能なインスタンスをすべて取得するには、以下のように instances()
メソッドを使用します。
class_object.instances
()
class_object を、検査するクラスオブジェクト名に置き換えます。このメソッドは、LMIInstance
オブジェクトの一覧を返します。
クラスオブジェクトの最初のインスタンスにアクセスするには、first_instance()
メソッドを使用します。
class_object.first_instance
()
このメソッドは、LMIInstance
オブジェクトを返します。
instances()
および first_instance()
は、インスタンスの一覧を表示したり、最初のインスタンスを返したりするほかにも、オプションの引数をサポートして結果をフィルターすることもできます。
class_object.instances
(criteria)
class_object.first_instance
(criteria)
criteria を、鍵と値のペアで設定される辞書に置き換えます。この鍵はインスタンスプロパティーを表し、値はこのプロパティーの必要な値を表します。
例22.14 インスタンスへのアクセス
例22.7「クラスオブジェクトへのアクセス」 で作成した cls
クラスオブジェクトの最初のインスタンスで、eth0
と同等の ElementName
プロパティーがあるものを見つけ、これを変数 device
に割り当てるには、インタラクティブプロンプトに以下のコマンドを入力します。
> device = cls.first_instance({"ElementName": "eth0"}) >
インスタンスの検査
すべてのインスタンスオブジェクトには、そのクラス名と所属するネームスペースに関する情報、およびプロパティーと値に関する詳細なドキュメンテーションが保存されています。さらに、インスタンスオブジェクトを使用すると、一意の ID オブジェクトを検索できます。
特定のインスタンスオブジェクトのクラス名を取得するには、以下の構文を使用します。
instance_object.classname
instance_object を、検査するインスタンスオブジェクト名に置き換えます。これは、クラス名を表す文字列を返します。
インスタンスオブジェクトが所属するネームスペースに関する情報を取得するには、以下を使用します。
instance_object.namespace
これは、名前空間を表す文字列を返します。
インスタンスオブジェクト用に一意の ID オブジェクトを検索するには、以下を使用します。
instance_object.path
これは、LMIInstanceName
オブジェクトを返します。
最後に、詳細なドキュメンテーションを表示するには、以下のように doc()
メソッドを使用します。
instance_object.doc
()
例22.15 インスタンスの検査
例22.14「インスタンスへのアクセス」 で作成した device
インスタンスオブジェクトを検査して、そのクラス名と対応するネームスペースを表示するには、インタラクティブプロンプトに以下のコマンドを入力します。
> device.classname u'LMI_IPNetworkConnection' > device.namespace 'root/cimv2' >
インスタンスオブジェクトのドキュメンテーションにアクセスするには、以下を入力します。
> device.doc() Instance of LMI_IPNetworkConnection [property] uint16 RequestedState = '12' [property] uint16 HealthState [property array] string [] StatusDescriptions ...
新規インスタンスの作成
いくつかの CIM プロバイダーでは、特定のクラスオブジェクトの新規インスタンスを作成できます。クラスオブジェクトの新規インスタンスを作成するには、以下のように create_instance()
メソッドを使用します。
class_object.create_instance
(properties)
class_object を、クラスオブジェクトと properties の名前を、キーと値のペアで設定されるディクショナリーに置き換えます。キーはインスタンスのプロパティーと値はプロパティー値を表します。このメソッドは、LMIInstance
オブジェクトを返します。
例22.16 新規インスタンスの作成
LMI_Group
クラスはシステムグループを表し、LMI_Account
クラスは管理システム上のユーザーアカウントを表します。例22.5「ネームスペースオブジェクトへのアクセス」 で作成した ns
ネームスペースオブジェクトを使用して、システムグループ pegasus
と、ユーザー lmishell-user
用にこれら 2 つのクラスのインスタンスを作成し、そのインスタンスを group
変数および user
変数に割り当てるには、インタラクティブプロンプトに以下のコマンドを入力します。
> group = ns.LMI_Group.first_instance({"Name" : "pegasus"}) > user = ns.LMI_Account.first_instance({"Name" : "lmishell-user"}) >
lmishell-user
ユーザー用に LMI_Identity
クラスのインスタンスを取得するには、以下を入力します。
> identity = user.first_associator(ResultClass="LMI_Identity") >
LMI_MemberOfGroup
クラスは、システムグループのメンバーシップを表します。LMI_MemberOfGroup
クラスを使用して lmishell-user
を pegasus
グループに追加するには、以下のようにこのクラスの新規インスタンスを作成します。
> ns.LMI_MemberOfGroup.create_instance({ ... "Member" : identity.path, ... "Collection" : group.path}) LMIInstance(classname="LMI_MemberOfGroup", ...) >
個別インスタンスの削除
CIMOM から特定のインスタンスを削除するには、以下のように delete()
メソッドを使用します。
instance_object.delete
()
instance_object を、削除するインスタンスオブジェクト名に置き換えます。このメソッドはブール値を返します。インスタンスを削除すると、そのプロパティーとメソッドにはアクセスできなくなることに注意してください。
例22.17 個別インスタンスの削除
LMI_Account
クラスは、管理システム上のユーザーアカウントを表します。例22.5「ネームスペースオブジェクトへのアクセス」 で作成した ns
ネームスペースオブジェクトを使用して、ユーザー lmishell-user
用に LMI_Account
クラスのインスタンスを作成し、それを変数 user
に割り当てるには、インタラクティブプロンプトに以下のコマンドを入力します。
> user = ns.LMI_Account.first_instance({"Name" : "lmishell-user"}) >
このインスタンスを削除して、システムから lmishell-user
を取り除くには、以下を入力します。
> user.delete()
True
>
利用可能なプロパティーの一覧表示とアクセス
特定のインスタンスオブジェクトの利用可能なプロパティーの一覧を表示するには、以下のように print_properties()
メソッドを使用します。
instance_object.print_properties
()
instance_object を、検査するインスタンスオブジェクト名に置き換えます。このメソッドは、利用可能なプロパティーを標準出力に出力します。
利用可能なプロパティー一覧を取得するには、properties()
メソッドを使用します。
instance_object.properties
()
このメソッドは文字列の一覧を返します。
例22.18 利用可能なプロパティーの一覧表示
例22.14「インスタンスへのアクセス」 で作成した device
インスタンスオブジェクトを検査して、利用可能なプロパティーの一覧を表示するには、インタラクティブプロンプトに以下のコマンドを入力します。
> device.print_properties() RequestedState HealthState StatusDescriptions TransitioningToState Generation ... >
このプロパティーの一覧を変数 device_properties
に割り当てるには、以下を入力します。
> device_properties = device.properties() >
特定のプロパティーの現在の値を取得するには、以下の構文を使用します。
instance_object.property_name
property_name を、アクセスするプロパティー名に置き換えます。
特定のプロパティーの値を修正するには、以下のように値を割り当てます。
instance_object.property_name = value
value を、プロパティーの新たな値に置き換えます。CIMOM への変更を伝達するには、push()
メソッドも実行する必要があることに注意してください。
instance_object.push
()
このメソッドは、戻り値、戻り値のパラメーター、およびエラー文字列で設定される 3 項目タプルを返します。
例22.19 個別プロパティーへのアクセス
例22.14「インスタンスへのアクセス」 で作成した device
インスタンスオブジェクトを検査して、プロパティー SystemName
の値を表示するには、インタラクティブプロンプトに以下のコマンドを入力します。
> device.SystemName
u'server.example.com'
>
利用可能なメソッドの一覧表示と使用
特定のインスタンスオブジェクトの利用可能なメソッド一覧を表示するには、以下のように print_methods()
メソッドを使用します。
instance_object.print_methods
()
instance_object を、検査するインスタンスオブジェクト名に置き換えます。このメソッドは、利用可能なメソッドを標準出力に出力します。
利用可能なメソッド一覧を取得するには、methods()
メソッドを使用します。
instance_object.methods
()
このメソッドは文字列の一覧を返します。
例22.20 利用可能なメソッドの一覧表示
例22.14「インスタンスへのアクセス」 で作成した device
インスタンスオブジェクトを検査して利用可能なメソッドの一覧を表示するには、インタラクティブプロンプトに以下のコマンドを入力します。
> device.print_methods() RequestStateChange >
これらメソッドの一覧を変数 network_device_methods
に割り当てるには、以下を入力します。
> network_device_methods = device.methods() >
特定のメソッドを呼び出すには、以下の構文を使用します。
instance_object.method_name( parameter=value, ...)
instance_object を、使用するインスタンスオブジェクト名に、method_name を、呼び出すメソッド名に、parameter を、設定するパラメーター名に、value を、このパラメーターの値に置き換えます。メソッドは、戻り値、戻り値のパラメーター、およびエラー文字列で設定される 3 項目タプルを返します。
LMIInstance
オブジェクトは、自動的にそのコンテンツ (プロパティー、メソッド、修飾子など) を更新しません。自動的に更新するようにするには、以下のように refresh()
メソッドを使用します。
例22.21 メソッドの使用
PG_ComputerSystem
クラスはシステムを表します。例22.5「ネームスペースオブジェクトへのアクセス」 で作成した ns
ネームスペースオブジェクトを使用してこのクラスのインスタンスを作成し、これを変数 sys
に割り当てるには、インタラクティブプロンプトに以下のコマンドを入力します。
> sys = ns.PG_ComputerSystem.first_instance() >
LMI_AccountManagementService
クラスは、システム内でユーザーおよびグループの管理を可能にするメソッドを実装します。このクラスのインスタンスを作成して変数 acc
に割り当てるには、以下を使用します。
> acc = ns.LMI_AccountManagementService.first_instance() >
システムに lmishell-user
という名前の新規ユーザーを作成するには、以下のように CreateAccount()
メソッドを使用します。
> acc.CreateAccount(Name="lmishell-user", System=sys) LMIReturnValue(rval=0, rparams=NocaseDict({u'Account': LMIInstanceName(classname="LMI_Account"...), u'Identities': [LMIInstanceName(classname="LMI_Identity"...), LMIInstanceName(classname="LMI_Identity"...)]}), errorstr='')
LMIShell は、同期メソッド呼び出しをサポートします。同期メソッドを使用するとき、LMIShell は関連のジョブオブジェクトを待ち、finished に状態を変更します。そして、このジョブのリターンパラメーターを返します。LMIShell は、指定のメソッドが以下のクラスの 1 つのオブジェクトを返すと、同期メソッド呼び出しを実行できます。
-
LMI_StorageJob
-
LMI_SoftwareInstallationJob
-
LMI_NetworkJob
LMIShell は、最初に、待機メソッドに indication を使用します。それが失敗すると、代わりにポーリングメソッドを使います。
同期メソッド呼び出しを実行するには、以下の構文を使用します。
instance_object.Sync
method_name(
parameter=value,
...)
instance_object を、使用するインスタンスオブジェクト名に、method_name を、呼び出すメソッド名に、parameter を、設定するパラメーター名に、value を、このパラメーターの値に置き換えます。すべての同期メソッドには、その名前に Sync
接頭辞があり、ジョブの戻り値、ジョブの戻り値のパラメーター、およびジョブのエラー文字列で設定される 3 項目タプルを返します。
また、LMIShell がポーリングメソッドのみを使用するように強制することもできます。これを行うには、以下のように PreferPolling
パラメーターを指定します。
instance_object.Sync
method_name(PreferPolling
=True
parameter=value, ...)
ValueMap パラメーターの一覧表示と閲覧
CIM メソッドには、Managed Object Format (MOF) 定義で ValueMap パラメーター が含まれる場合があります。ValueMap パラメーターには定数値が含まれます。
特定メソッドで利用可能な ValueMap パラメーターの一覧を表示するには、以下のように print_valuemap_parameters()
メソッドを使用します。
instance_object.method_name.print_valuemap_parameters
()
instance_object を、検査するインスタンスオブジェクト名に置き換え、method_name を、検査するメソッド名に置き換えます。このメソッドは、利用可能な ValueMap パラメーターを標準出力に出力します。
利用可能な ValueMap パラメーターの一覧を取得するには、valuemap_parameters()
メソッドを使用します。
instance_object.method_name.valuemap_parameters
()
このメソッドは文字列の一覧を返します。
例22.22 ValueMap パラメーターの一覧表示
例22.21「メソッドの使用」 で作成した acc
インスタンスオブジェクトを検査して、CreateAccount()
メソッドで利用可能な ValueMap パラメーターの一覧を表示するには、インタラクティブプロンプトに以下のコマンドを入力します。
> acc.CreateAccount.print_valuemap_parameters() CreateAccount >
この ValueMap パラメーターの一覧を変数 create_account_parameters
に割り当てるには、以下を入力します。
> create_account_parameters = acc.CreateAccount.valuemap_parameters() >
特定の ValueMap パラメーターにアクセスするには、以下の構文を使用します。
instance_object.method_name.valuemap_parameterValues
valuemap_parameter を、アクセスする ValueMap パラメーター名に置き換えます。
利用可能な定数値の一覧を表示するには、以下のように print_values()
メソッドを使用します。
instance_object.method_name.valuemap_parameterValues
.print_values
()
このメソッドは、名前の付いた利用可能な定数値を標準出力に出力します。また、values()
メソッドを使用して利用可能な定数値の一覧を取得することもできます。
instance_object.method_name.valuemap_parameterValues
.values
()
このメソッドは文字列の一覧を返します。
例22.23 ValueMap パラメーターへのアクセス
例22.22「ValueMap パラメーターの一覧表示」 では、ValueMap パラメーター CreateAccount
について説明しました。このパラメーターを検査して利用可能な定数値の一覧を表示するには、インタラクティブプロンプトに以下のコマンドを入力します。
> acc.CreateAccount.CreateAccountValues.print_values() Operationunsupported Failed Unabletosetpasswordusercreated Unabletocreatehomedirectoryusercreatedandpasswordset Operationcompletedsuccessfully >
この定数値の一覧を変数 create_account_values
に割り当てるには、以下を入力します。
> create_account_values = acc.CreateAccount.CreateAccountValues.values() >
特定の定数値にアクセスするには、以下の構文を使用します。
instance_object.method_name.valuemap_parameterValues
.constant_value_name
constant_value_name を、定数値の名前を置き換えます。また、以下のように value()
メソッドを使用することもできます。
instance_object.method_name.valuemap_parameterValues
.value
("constant_value_name")
特定の定数値の名前を確認するには、value_name()
メソッドを使用します。
instance_object.method_name.valuemap_parameterValues
.value_name
("constant_value")
このメソッドは文字列を返します。
例22.24 定数値へのアクセス
例22.23「ValueMap パラメーターへのアクセス」 では、CreateAccount
ValueMap パラメーターが定数値 Failed
を提供していました。この名前の定数値にアクセスするには、インタラクティブプロンプトに以下のコマンドを入力します。
>acc.CreateAccount.CreateAccountValues.Failed
2 >acc.CreateAccount.CreateAccountValues.value("Failed")
2 >
この定数値の名前を確認するには、以下を入力します。
> acc.CreateAccount.CreateAccountValues.value_name(2) u'Failed' >
インスタンスオブジェクトの更新
LMIShell が使用するローカルオブジェクトは、CIMOM 側での CIM オブジェクトを表し、このオブジェクトが LMIShell のオブジェクトと連携中に変更されると、古くなる場合があります。特定のインスタンスオブジェクトのプロパティーとメソッドを更新するには、以下のように refresh()
メソッドを使用します。
instance_object.refresh
()
instance_object を、更新するオブジェクト名に置き換えます。このメソッドは、戻り値、戻り値のパラメーター、およびエラー文字列で設定される 3 項目タプルを返します。
例22.25 インスタンスオブジェクトの更新
例22.14「インスタンスへのアクセス」 で作成した device
インスタンスオブジェクトのプロパティーとメソッドを更新するには、インタラクティブプロンプトに以下のコマンドを入力します。
> device.refresh()
LMIReturnValue(rval=True, rparams=NocaseDict({}), errorstr='')
>
MOF 表現の表示
インスタンスオブジェクトの MOF (Managed Object Format) 表現を表示するには、以下のように tomof()
メソッドを使用します。
instance_object.tomof
()
instance_object を、検査するインスタンスオブジェクト名に置き換えます。このメソッドは、オブジェクトの MOF 表現を標準出力に出力します。
例22.26 MOF 表現の表示
例22.14「インスタンスへのアクセス」 で作成した device
インスタンスオブジェクトの MOF 表現を表示するには、インタラクティブプロンプトに以下のコマンドを入力します。
> device.tomof() instance of LMI_IPNetworkConnection { RequestedState = 12; HealthState = NULL; StatusDescriptions = NULL; TransitioningToState = 12; ...