5

VMware API を使用して vCenter 操作を実行しています。suds を使用して SDK 呼び出しを行いました。私の vCenter は、英語以外 (日本語) のサポート用に構成されています。

import suds

client = suds.client.Client("http://localhost/sdk/vimService.wsdl", location="https://localhost/sdk")

mo = suds.sudsobject.Property("ServiceInstance")
mo._type = "ServiceInstance"
service_content = client.service.RetrieveServiceContent(mo)

try:
    client.service.Login(service_content.sessionManager, username='test', password='test', locale='en_US')
    var = client.factory.create('ns0:WaitOptions')
    kwargs = {'maxWaitSeconds': "2", 'maxObjectUpdates': "3"} 
    [setattr(var, key, value) for key, value in kwargs.items()] 
    client.service.WaitForUpdatesEx(service_content.propertyCollector, version=1, options=var)
except suds.WebFault as e:
    print e.args

を設定localeしない場合、vCenter でエラーが発生しますか? 英語以外のテキストで返されます。私は設定localeし、例外は英語で返されます。

を設定し、 createdlocaleで正常に動作しsessionますが、セッションの作成にエラーがあるか、セッションがタイムアウトした場合、英語以外の形式でエラーが発生します。

このコードを確認してください ( create なしでメソッドを呼び出しますsession)

...
...
mo._type = "ServiceInstance"
service_content = client.service.RetrieveServiceContent(mo)

try:
    var = client.factory.create('ns0:WaitOptions')
    kwargs = {'maxWaitSeconds': "2", 'maxObjectUpdates': "3"} 
    [setattr(var, key, value) for key, value in kwargs.items()] 
    client.service.WaitForUpdatesEx(service_content.propertyCollector, version=1, options=var)
except suds.WebFault as e:
    print e.args

出力:

(u"Server raised fault: '\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u8a8d\u8a3c\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002'",)

翻訳 :

(u"Server raised fault: 'セッションが認証されていません。'",)
# English
(u"Server raised fault: 'Session is not authenticated.',)

localeのように wsdl urlに設定する方法はありますhttp://localhost/sdk/vimService.wsdl?local=en_USか?

4

0 に答える 0