python 带有 rhev 4.1 的 ovirtsdk
python ovirtsdk with rhev 4.1
我正在尝试使用 RHEV 4.1 API 通过 python 获取我的管理程序的主机状态。 RHEV 3.6 正在使用我的脚本。但如果我使用以下内容。
host = api.hosts.get(host_name)
host_state = host.status //RHEV 3.6 this was host.state.status
print(host_state)
它给出以下内容
<ovirtsdk.xml.params.Status object at 0x3ce0f10>
dev-dbe101t <ovirtsdk.xml.params.Status object at 0x3ce0f10>
dev-be101t-data1 None master
dev-be101t-data2 None
我可以正确获取主机名和数据中心名称。
即使这个 Status 对象也是不可迭代的。根据 rhvm 3.6 和 rhev 4.1 api 的区别。
在 API 的第 4 版中,此 Status 类型已被删除并替换为枚举类型。 (我上面的代码适用于 rhev 3.6,它给出了主机的正确状态)
如何检索主机状态?我发现 host.status 类型是 class 然后我使用 dir(theobject) 打印出所有相关的 class 方法并发现了以下有用的方法。州,get_state,
但它给出了 none。但是我的 api 状态是 up
根据 api 指南。
status 是 HostStatus ENUM 的类型
HOSTSTATUS ENUM 包含一个名为 "up"
的名称
不确定如何从 api 中获取 host.status。
API returns 这个
<host>
<status>up</status>
</host>
您在这里混合了两个 API。正如您正确写的那样,oVirt 有两个版本 API v3 和 v4。 Python 默认情况下,SDK v3 与 v3 API 一起使用,因此您应该像以前一样将其与 oVirt 4.1/RHV 4.1 一起使用。
如果您使用 API v3 列出主机状态:
GET https://fqdn/ovirt-engine/api/v3/hosts
您将获得:
<status><state>up</state></status>
因此您应该能够获取 state
Python SDK v3 作为:
host = api.hosts.get(host_name)
host_state = host.status.state
print(host_state)
在 APIv4 中你会得到:
GET https://ondra.local:8443/ovirt-engine/api/v4/hosts
<status>up</status>
但这不相关,因为您仍在使用 Python SDK v3,它使用 APIv3。
我正在尝试使用 RHEV 4.1 API 通过 python 获取我的管理程序的主机状态。 RHEV 3.6 正在使用我的脚本。但如果我使用以下内容。
host = api.hosts.get(host_name)
host_state = host.status //RHEV 3.6 this was host.state.status
print(host_state)
它给出以下内容
<ovirtsdk.xml.params.Status object at 0x3ce0f10>
dev-dbe101t <ovirtsdk.xml.params.Status object at 0x3ce0f10>
dev-be101t-data1 None master
dev-be101t-data2 None
我可以正确获取主机名和数据中心名称。 即使这个 Status 对象也是不可迭代的。根据 rhvm 3.6 和 rhev 4.1 api 的区别。
在 API 的第 4 版中,此 Status 类型已被删除并替换为枚举类型。 (我上面的代码适用于 rhev 3.6,它给出了主机的正确状态)
如何检索主机状态?我发现 host.status 类型是 class 然后我使用 dir(theobject) 打印出所有相关的 class 方法并发现了以下有用的方法。州,get_state, 但它给出了 none。但是我的 api 状态是 up
根据 api 指南。
status 是 HostStatus ENUM 的类型
HOSTSTATUS ENUM 包含一个名为 "up"
的名称不确定如何从 api 中获取 host.status。 API returns 这个
<host>
<status>up</status>
</host>
您在这里混合了两个 API。正如您正确写的那样,oVirt 有两个版本 API v3 和 v4。 Python 默认情况下,SDK v3 与 v3 API 一起使用,因此您应该像以前一样将其与 oVirt 4.1/RHV 4.1 一起使用。
如果您使用 API v3 列出主机状态:
GET https://fqdn/ovirt-engine/api/v3/hosts
您将获得:
<status><state>up</state></status>
因此您应该能够获取 state
Python SDK v3 作为:
host = api.hosts.get(host_name)
host_state = host.status.state
print(host_state)
在 APIv4 中你会得到:
GET https://ondra.local:8443/ovirt-engine/api/v4/hosts
<status>up</status>
但这不相关,因为您仍在使用 Python SDK v3,它使用 APIv3。