2016-12-21 43 views
0

我想打印的所有信息,該ComputeManagementClient從azure.mgmt.compute庫提供。我打開了一個計算客戶端,並通過匹配名稱找到了我的目標虛擬機。然而,當我從我的調用函數返回該對象(這是期待一個JSON格式的對象)我得到這個錯誤:當我從我的生成函數裏面打印對象瞭解Azure計算梟雄資源和顯示信息

TypeError: <azure.mgmt.compute.models.virtual_machine.VirtualMachine object at 0x10c19b550> is not JSON serializable 

我得到這樣一個結果:

{'os_profile': <azure.mgmt.compute.models.os_profile.OSProfile object 
at 0x104966650>, 'storage_profile': 
<azure.mgmt.compute.models.storage_profile.StorageProfile object at 
0x104966710>, 'availability_set': 
<azure.mgmt.compute.models.sub_resource.SubResource object at 
0x104966850>, 'name': u'azure-test-1b', 'tags': {'cluster': u'server', 
'name': u'azure-test-1b', 'service': u'server'}, 
'diagnostics_profile': None, 'vm_id': u'XXXX-XXXX-XXXX', 
'hardware_profile': 
<azure.mgmt.compute.models.hardware_profile.HardwareProfile object at 
0x104966b90>, 'provisioning_state': u'Failed', 'network_profile': 
<azure.mgmt.compute.models.network_profile.NetworkProfile object at 
0x104966bd0>, 'plan': None, 'license_type': None, 'instance_view': 
None, 'type': u'Microsoft.Compute/virtualMachines', 'id': 
u'/subscriptions/XXXX-XXXX-XXXX/resourceGroups/YYY-YYYY-YYY/providers 
/Microsoft.Compute/virtualMachines/azure-test-1b', 'resources': None, 
'location': u'eastus2'} 

這個結果看起來像一個JSON格式的客體,所以我不知道爲什麼它返回的對象引用。我打電話來返回上述輸出的操作是什麼?第二個問題如何擴展像network_profile這樣的自己引用對象的值?有沒有辦法使用azure python sdks來返回虛擬機的最完整視圖?

回答

0

問題1:我可以得到JSON

的SDK反序列化JSON爲特定對象,你可以有物品對ReadTheDocs一個文檔:http://azure-sdk-for-python.readthedocs.io/en/latest/

例如,VirtualMachine

如果您確實需要JSON而不是物​​體,您有兩種選擇:

  • 使用原始= true在您的來電(見VM.get documentation
  • 使用在Azure的MGMT資源包中的通用resource.get。你會得到GenericResource對象,一半用包含適用於你的對象的屬性的字典的「屬性」解析。

問題2:如何獲得網絡的詳細信息

你得到network_profile返回的ID,分析它,並使用Azure的MGMT的網絡包,以獲得詳細信息。 There is no faster way currently.

問題3:如何獲得更多的細節VM

VM對象使用「擴展」模式(如運行狀態只適用於擴大)更精確。在你的通話中,使用expand =「instanceView」(見VM.get方法)

作爲補充,這是official sample for VM如果有幫助。

(我是MS的Azure SDK for Python的所有者)