【问题标题】:Django connect vcenter and list VMDjango 连接 vCenter 并列出虚拟机
【发布时间】:2020-01-14 20:43:51
【问题描述】:

无法使用 rest API 获取 VM 列表,我设法获取了身份验证会话,但我不知道如何获取 vm 列表的 ger。

我正在寻找 fot 天,但我没有解决方案,我将会话存储在 vcenter 上,但我不知道如何获取 vm 列表。我什么都试。

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)

在模板中,如果我取 x 的值,它会返回值“无”,我得到了身份验证令牌。 请帮助我,我不明白。非常感谢!!!

【问题讨论】:

  • 你能告诉我们'print(vars(request.GET))'的结果吗
  • '.get(“key”) 的默认行为是如果未定义密钥,则返回 None。所以我猜“192.168.74.130/rest/vcenter/vm”不在请求字典中
  • 返回 x = request.session['value'] 是会话的令牌(响应 200) {'value': '5037b409066682fe0edea1e16290b6b0'} 是正确的,现在这个令牌被缓存了,但我没有'不知道如何通过 header 中的 sessione 调用“192.168.74.130/rest/vcenter/vm”来获取 vm 列表

标签: django rest api vcenter


【解决方案1】:

目前我是这样解决的:

    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(可能是序列化程序)的最佳方法是什么? 非常感谢!

【讨论】:

    【解决方案2】:

    为了在模板中获取数据,我写了那些标签(在模板中),效果很好:

    <table>
    {%  for key in vm.value %}
    
    <tr>
        <td>{{key.name}}</td>
        <td>{{key.power_state}}</td>
    </tr>
    
    {% endfor %}
    </table>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-06
      • 1970-01-01
      • 2011-10-14
      • 2018-03-28
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 2022-12-09
      相关资源
      最近更新 更多