<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, May 10, 2017 at 12:38 PM, Nathanaël Blanchet <span dir="ltr"><<a href="mailto:blanchet@abes.fr" target="_blank">blanchet@abes.fr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div bgcolor="#FFFFFF"><span class="gmail-">
Le 10/05/2017 à 10:29, Ondra Machacek a écrit :<br>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>Not sure I understand. You can use
Ansible module to list VMs, you<br>
</div>
can use ovirt_vms _facts[1] module.<br>
<br>
</div>
For example to get only stopped VMs, you can use
following:<br>
<br>
</div>
- name: Get stopped VMs<br>
</div>
ovirt_vms_facts:<br>
</div>
auth:<br>
</div>
url: <a href="https://ovirt.example.com/ovirt-engine/api" target="_blank">https://ovirt.example.com/<wbr>ovirt-engine/api</a><br>
</div>
username: admin@internal<br>
</div>
password: password<br>
</div>
ca_file: /etc/pki/ovirt-engine/ca.pem<br>
</div>
pattern: "status = down"<br>
</div>
</blockquote></span>
I want a list of vms sorted by any possible attributes, i.e. sorted
by datacenter or cluster, not only by status.<br>
<ul>
<li>For example, ovirt_vms_facts doesn't allow to get the
datacenter the vm belongs to , and the pattern filter doesn't
return a list of vms as expected:</li>
</ul>
<br>
- hosts: localhost<br>
connection: local<br>
tasks:<span class="gmail-"><br>
- name: Get stopped VMs<br>
ovirt_vms_facts:<br>
auth:<br></span>
url: <a class="gmail-m_344037001981379143moz-txt-link-freetext" href="https://acore.v100.abes.fr/ovirt-engine/api" target="_blank">https://acore.v100.abes.fr/<wbr>ovirt-engine/api</a><br>
username: admin@internal<br>
password: ovirt123<br>
insecure: true<br>
pattern: name=centos* and cluster=west<br>
- debug:<br>
var: ovirt_vms<br>
- shell: echo "{{ <a href="http://ovirt_vms.name" target="_blank">ovirt_vms.name</a> }}"<br></div></blockquote><div><br><br></div><div>Ok, I understand, now.<br></div><div>You have few options here.<br></div><div>If you want for example only VMs from datacenter 'X', you can use following:<br><br>- hosts: localhost<br>
connection: local<br>
tasks:<span class="gmail-im"><br>
- name: Get VMs from datacenter X<br>
ovirt_vms_facts:</span><br><span class="gmail-im">
pattern: datacenter=X<br> auth:<br></span>
url: <a class="gmail-m_344037001981379143moz-txt-link-freetext" href="https://acore.v100.abes.fr/ovirt-engine/api" target="_blank">https://acore.v100.abes.fr/<wbr>ovirt-engine/api</a><br>
username: admin@internal<br>
password: ovirt123<br>
insecure: true<br>
- debug:<br>
msg: "{{ ovirt_vms | map(attribute='name') | list }}"<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div bgcolor="#FFFFFF">
<br>
How can I successfully display this list of vms like described here
:<br>
<table cellpadding="4" border="1">
<tbody>
<tr>
<th class="gmail-m_344037001981379143head">name</th>
<th class="gmail-m_344037001981379143head">description</th>
<th class="gmail-m_344037001981379143head">returned</th>
<th class="gmail-m_344037001981379143head">type</th>
<th class="gmail-m_344037001981379143head">sample</th>
</tr>
<tr>
<td> ovirt_vms </td>
<td> List of dictionaries describing the VMs. VM attribues are
mapped to dictionary keys, all VMs attributes can be found
at following url:
<a class="gmail-m_344037001981379143moz-txt-link-freetext" href="https://ovirt.example.com/ovirt-engine/api/model#types/vm" target="_blank">https://ovirt.example.com/<wbr>ovirt-engine/api/model#types/<wbr>vm</a>. </td>
<td align="center"> On success. </td>
<td align="center"> list </td>
<td align="center"> <br>
</td>
</tr>
</tbody>
</table>
<br>
<ul>
<li>About the python SDK:</li>
</ul>
list_vms.py could be what I expect, but vm.datacenter_name doesn't
exist</div></blockquote><div><br></div><div>Yes, because the 'data_center' parameter isn't part of the VM type. Take a look here[1],<br></div><div>you will find there all attributes the VM has. As you can see there is no 'datacenter', but<br></div><div>there is a 'cluster', but as said in documentation, it's just a reference to the cluster. That<br></div><div>means that it contains the ID of the cluster and the 'href' to the cluster, so you can get<br></div><div>the cluster object by following that reference using this code:<br><br></div><div> vm_cluster = connection.follow_link(vm.cluster)<br></div><div> print <a href="http://vm_cluster.name">vm_cluster.name</a><br><br></div><div> # Same for datacenter:<br></div><div> vm_dc = connection.follow_link(vm_cluster.data_center)<br></div><div> print <a href="http://vm_dc.name">vm_dc.name</a><br><br></div>What you need to understand is, what is the difference between the 'full'<br></div><div class="gmail_quote">object and the reference to the object. It's good to take a look at the XML<br></div><div class="gmail_quote">output of the API and learn to read the API specification documentation,<br></div><div class="gmail_quote">when working with oVirt Ansible and Python SDK.<br></div><div class="gmail_quote"><div><br>[1] <a href="http://ovirt.github.io/ovirt-engine-api-model/master/#types/vm">http://ovirt.github.io/ovirt-engine-api-model/master/#types/vm</a><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div bgcolor="#FFFFFF"><div><div class="gmail-h5"><br>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div><br>
[1] <a href="http://docs.ansible.com/ansible/ovirt_vms_facts_module.html" target="_blank">http://docs.ansible.com/ansibl<wbr>e/ovirt_vms_facts_module.html</a></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Wed, May 10, 2017 at 10:13 AM,
Nathanaël Blanchet <span dir="ltr"><<a href="mailto:blanchet@abes.fr" target="_blank">blanchet@abes.fr</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div bgcolor="#FFFFFF">
<p>Thanks, I knew this python script, but I believed it
was possible to do the same with an ansible module.</p>
<p>That's mean we need several tools to do different
tasks, it is not a very convergent way to proceed... but
it is feasable.<br>
</p>
<div>
<div class="gmail-m_344037001981379143h5"> <br>
<div class="gmail-m_344037001981379143m_-2614652977139427754moz-cite-prefix">Le
10/05/2017 à 07:56, Ondra Machacek a écrit :<br>
</div>
<blockquote type="cite">
<div dir="ltr"><br>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Tue, May 9, 2017 at
6:52 PM, Nathanaël Blanchet <span dir="ltr"><<a href="mailto:blanchet@abes.fr" target="_blank">blanchet@abes.fr</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello,<br>
<br>
I didn't find anyway to easy list all my vms
thanks to the ansible modules...<br>
I tried the ovirt4.py script which is able
to list the whole facts, so vms list, when
the number of them is small in a test
datacenter, but in a production datacenter,
I get an issue:<br>
<br>
File "./ovirt4.py", line 262, in
<module><br>
main()<br>
File "./ovirt4.py", line 254, in main<br>
vm_name=args.host,<br>
File "./ovirt4.py", line 213, in get_data<br>
vms[name] =
get_dict_of_struct(connection, vm)<br>
File "./ovirt4.py", line 185, in
get_dict_of_struct<br>
(<a href="http://device.name" rel="noreferrer" target="_blank">device.name</a>,
[ip.address for ip in device.ips]) for
device in devices<br>
File "./ovirt4.py", line 185, in
<genexpr><br>
(<a href="http://device.name" rel="noreferrer" target="_blank">device.name</a>,
[ip.address for ip in device.ips]) for
device in devices<br>
TypeError: 'NoneType' object is not iterable<br>
</blockquote>
<div><br>
</div>
<div>This error was fixed already, try to
download latest ovirt4.py file.<br>
<br>
</div>
<div>The other way is to use fatcs[1] module.<br>
<br>
[1] <a href="http://docs.ansible.com/ansible/ovirt_vms_facts_module.html" target="_blank">http://docs.ansible.com/ansibl<wbr>e/ovirt_vms_facts_module.html</a><br>
</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br>
<br>
What is the simpliest way to get this basic
information with sdk4??? (with sdk3 :
ovirt-shell -E "list vms")<br>
</blockquote>
<div><br>
</div>
<div>Please take a look at the following
example:<br>
<br>
<a href="https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/examples/list_vms.py" target="_blank">https://github.com/oVirt/ovir<wbr>t-engine-sdk/blob/master/sdk/<wbr>examples/list_vms.py</a><br>
</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br>
<br>
<br>
-- <br>
Nathanaël Blanchet<br>
<br>
Supervision réseau<br>
Pôle Infrastrutures Informatiques<br>
227 avenue Professeur-Jean-Louis-Viala<br>
34193 MONTPELLIER CEDEX 5 <br>
Tél. 33 (0)4 67 54 84 55<br>
Fax 33 (0)4 67 54 84 14<br>
<a href="mailto:blanchet@abes.fr" target="_blank">blanchet@abes.fr</a><br>
<br>
______________________________<wbr>_________________<br>
Users mailing list<br>
<a href="mailto:Users@ovirt.org" target="_blank">Users@ovirt.org</a><br>
<a href="http://lists.ovirt.org/mailman/listinfo/users" rel="noreferrer" target="_blank">http://lists.ovirt.org/mailman<wbr>/listinfo/users</a><br>
</blockquote>
</div>
<br>
</div>
</div>
</blockquote>
<br>
<pre class="gmail-m_344037001981379143m_-2614652977139427754moz-signature" cols="72">--
Nathanaël Blanchet
Supervision réseau
Pôle Infrastrutures Informatiques
227 avenue Professeur-Jean-Louis-Viala
34193 MONTPELLIER CEDEX 5         
Tél. 33 (0)4 67 54 84 55
Fax 33 (0)4 67 54 84 14
<a class="gmail-m_344037001981379143m_-2614652977139427754moz-txt-link-abbreviated" href="mailto:blanchet@abes.fr" target="_blank">blanchet@abes.fr</a> </pre>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
<pre class="gmail-m_344037001981379143moz-signature" cols="72">--
Nathanaël Blanchet
Supervision réseau
Pôle Infrastrutures Informatiques
227 avenue Professeur-Jean-Louis-Viala
34193 MONTPELLIER CEDEX 5         
Tél. 33 (0)4 67 54 84 55
Fax 33 (0)4 67 54 84 14
<a class="gmail-m_344037001981379143moz-txt-link-abbreviated" href="mailto:blanchet@abes.fr" target="_blank">blanchet@abes.fr</a> </pre>
</div></div></div>
</blockquote></div><br></div></div>