无法获取带有rest API的VM列表,我设法获得了身份验证会话,但我不知道如何获取vm列表的ger。
我正在寻找很多日子,但是我没有解决方案,我将会话存储在vcenter上以进行连接,但是我不知道如何获取虚拟机列表。我尽力了。
def vcenter_api(request):
is_cached = ('value' in request.session)
context = {}
if not is_cached:
ip_address = request.META.get('HTTP_X_FORWARDED_FOR', '')
response=requests.post
('https://192.168.74.130/rest/com/vmware/cis/session',
verify=False,auth=HTTPBasicAuth(api_user, api_pass))
request.session['value'] = response.json()
x = request.session['value']
vm = request.GET.get('https://192.168.74.130/rest/vcenter/vm/')
context.update({ 'vm' : vm })
return render(request, 'ok.html', context)
在Emplate中,如果取而代之的是x并获得身份验证令牌,则返回值为“ none”。 请帮我,我听不懂。非常感谢!!!
答案 0 :(得分:0)
现在我以这种方式解决了
s = request.session['value']
if is_cached:
listvm_request = requests.get('https://192.168.74.130/rest/vcenter/vm/',
verify=False, headers={'vmware-api-session-id':s})
vm = listvm_request.json()
现在我获得了会话令牌: 8656eecc59f8759158ac909406c8afdc
并获取虚拟机列表:
{'value': [{'memory_size_MiB': 1024, 'vm': 'vm-48', 'name': 'VmA1',
'power_state':
'POWERED_ON', 'cpu_count': 1}, {'memory_size_MiB': 1024, 'vm': 'vm-49', 'name':
'VmA2', 'power_state': 'POWERED_OFF', 'cpu_count': 1}]}
但是,管理json(也许是序列化程序)的最佳方法是什么? 非常感谢!
答案 1 :(得分:0)
要获取模板中的数据,我在模板中写了这些标签,请很好地工作:
<table>
{% for key in vm.value %}
<tr>
<td>{{key.name}}</td>
<td>{{key.power_state}}</td>
</tr>
{% endfor %}
</table>