Как получить openstacksdk возвращенные данные `openstack.compute.v2.server.ServerDetail`?

Как вернуть openstacksdk openstack.compute.v2.server.ServerDetail данные?

Ниже это openstack.compute.v2.server.ServerDetail данные экземпляра:

[openstack.compute.v2.server.ServerDetail(
OS-EXT-AZ:availability_zone=, 
key_name=None, 
hostId=, 
os-extended-volumes:volumes_attached=[], 
OS-SRV-USG:launched_at=None, 
OS-EXT-STS:vm_state=error, 
flavor={'id': '5c5dca53-9f96-4851-afd4-60de75faf896', 'links': [{'href': 'http://controller:8774/233cf23186bf4c52afc464ee008cdf7f/flavors/5c5dca53-9f96-4851-afd4-60de75faf896', 'rel': 'bookmark'}]}, updated=2017-11-27T10:29:50Z, 
accessIPv4=, 
image={'id': '60f4005e-5daf-4aef-a018-4c6b2ff06b40', 'links': [{'href': 'http://controller:8774/233cf23186bf4c52afc464ee008cdf7f/images/60f4005e-5daf-4aef-a018-4c6b2ff06b40', 'rel': 'bookmark'}]}, 
created=2017-11-27T10:29:49Z, 
metadata={}, 
links=[{'href': 'http://controller:8774/v2.1/233cf23186bf4c52afc464ee008cdf7f/servers/3db46b7b-a641-49ce-97ef-f17c9a11f58a', 'rel': 'self'}, {'href': 'http://controller:8774/233cf23186bf4c52afc464ee008cdf7f/servers/3db46b7b-a641-49ce-97ef-f17c9a11f58a', 'rel': 'bookmark'}], 
OS-DCF:diskConfig=MANUAL, 
id=3db46b7b-a641-49ce-97ef-f17c9a11f58a, user_id=41bb48ee30e449d5868f7af9e6251156, 
OS-SRV-USG:terminated_at=None, 
name=123456, 
config_drive=, 
accessIPv6=, 
OS-EXT-STS:power_state=0, 
addresses={}, 
OS-EXT-STS:task_state=None, 
status=ERROR, 
tenant_id=233cf23186bf4c52afc464ee008cdf7f),]

Вы видите, я могу использовать instance.property чтобы получить значение, ниже server_generator это генератор серверов openstack:

for sd in server_generator:
    print (sd.addresses)

Но, однако, есть два момента, с которыми я не могу справиться:

  1. как бороться с OS-EXT-STS:power_state ключ или os-extended-volumes:volumes_attached ключ?

  2. когда я использую sd.hostId там сообщит об ошибке, говорит, что нет hostId.

1 ответ

Вы должны сначала использовать to_dict функция, чтобы получить dict objcet.then вы можете получить то, что вы хотите.

server_dict = server.to_dict()
## get all keys 
print server_dict.keys()
## get volumes_attached 
print server_dict['volumes_attached']
Другие вопросы по тегам