Как настроить Locale перед входом в vmware api call для неанглийского vCenter
Я использую VMware API для выполнения операций vCenter. Используются пены для вызова 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
и исключение будет возвращено на английском языке.
Мы установили locale
и работает нормально с session
создан, но если есть ошибка в создании сеанса или тайм-аут сеанса, то это дает ошибку в неанглийской форме.
Пожалуйста, проверьте этот код (вызов метода без создания 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
?