<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>Great, it works like a charm!</p>
    <p>But how could I obtain a several map display?</p>
    <p>For example, I need to display the vm name ; its relative
      snaphost id and snaphot description.</p>
    <p> I tried to change filter, but notyhing works<br>
    </p>
    <p>msg: "{{ ovirt_snapshots | map(attribute='description') |
      map(attribute='id') | join(' ') }}"</p>
    <p>or something like<br>
    </p>
    <p>msg: "{{ ovirt_snapshots.vm | map(attribute='name') |
      map(attribute='id') | join(' ') }}"</p>
    <p>Thanks for helping.</p>
    <p>ps: I tried nearly all modules, and the permissions one is
      bugged, only internal-authz domain displays users, none of ldap
      one can display.<br>
    </p>
    <br>
    <div class="moz-cite-prefix">Le 11/05/2017 à 20:14, Ondra Machacek a
      écrit :<br>
    </div>
    <blockquote
cite="mid:CAJCqMsWhWVHGrXdtaOonqp93_p8jbjG6k4+7333+M+vT3-TmvA@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>
          <div>
            <div>
              <div>
                <div>
                  <div>
                    <div>I am not Ansible expert, this maybe worth
                      asking on Ansible users list,<br>
                    </div>
                    but one thing which you can do is following:<br>
                    <br>
                  </div>
                  in tasks/main.yml<br>
                  <br>
                </div>
                - include: "{{ item }}"<br>
              </div>
                with_items: "{{ resources | default('vms') }}.yml"<br>
              <br>
              then have following files:<br>
               - tasks/vms.yml<br>
               - tasks/clusters.yml<br>
               - tasks/disks.yml<br>
               - ...<br>
              <br>
            </div>
            then run it as:<br>
            <br>
          </div>
           $ ansible-playbook -e "resources: [vms,disks]" play.yml<br>
           $ ansible-playbook -e "resources: [clusters]
          clusters_pattern=name=x*" play.yml<br>
          <br>
        </div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On Thu, May 11, 2017 at 6:34 PM,
          Nathanaël Blanchet <span dir="ltr">&lt;<a
              moz-do-not-send="true" href="mailto:blanchet@abes.fr"
              target="_blank">blanchet@abes.fr</a>&gt;</span> wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div bgcolor="#FFFFFF" text="#000000">
              <p>Thanks, all works as expected.</p>
              <p>Now, I try make roles.</p>
              <p>here it is : <br>
              </p>
              <p><b>cat /etc/ansible/roles/ovirt_vm_<wbr>facts/tasks/main.yml</b></p>
              <p>  - name: get vm facts<br>
                    ovirt_vms_facts:<br>
                      auth:<br>
                        url: <a moz-do-not-send="true"
                  class="m_7298570659494759391moz-txt-link-freetext">https://</a>{{
                engine }}.<a moz-do-not-send="true"
                  href="http://v100.abes.fr/ovirt-engine/api"
                  target="_blank">v100.abes.fr/ovirt-engine/<wbr>api</a><br>
                        username: "{{ username }}"<br>
                        password: "{{ password }}"<br>
                        insecure: "{{ insecure }}"<br>
                      pattern: "{{ pattern }}"<br>
                  - debug:<br>
                      msg: "{{ ovirt_vms | map(attribute='name') |
                join(' ') }}"</p>
              <p><b>cat /etc/ansible/roles/ovirt_vm_<wbr>facts/vars/main.yml</b></p>
              <p>pattern: "os=rhel_5x64 or os=rhel_5"<br>
                engine: air<span class=""><br>
                  username: admin@internal<br>
                  password: ovirt123<br>
                  insecure: true</span></p>
              <p>and I call those files with <b>/tmp/ovirt_vm_facts.yml</b>
                with extra variables if needed<br>
              </p>
              <p><span class="">- hosts: localhost<br>
                    connection: local<br>
                </span>   roles:<br>
                    - ovirt_vm_fact</p>
              <p>running ansible-playbook /tmp/ovirt_vm_facts.ym -e
                'pattern="name=acier* and cluster=Dev"'<br>
              </p>
              <p><b>But..</b></p>
              <p>I don't want to do the same for each ansible module
                shipped with 2.3.</p>
              <p>Knowing that each *facts module has the same structure
                auth/pattern, is there a way to play a generic playbook
                independant from the role, like:</p>
              <p><span class="">- hosts: localhost<br>
                    connection: local<br>
                </span>   roles:<br>
                    - ovirt_facts (with somewhere a variable "myfact")<br>
              </p>
              <p>which would play an unique role <b>/etc/ansible/roles/ovirt_<wbr>facts/tasks/main.yml
                  with</b></p>
              <p><br>
                - name: get vm facts<br>
                    myfact<br>
                      auth:<br>
                        ....<br>
              </p>
              <p>Hope to be clear enough, thank your for your help.<br>
              </p>
              <div>
                <div class="h5"> <br>
                  <div class="m_7298570659494759391moz-cite-prefix">Le
                    10/05/2017 à 13:14, Ondra Machacek a écrit :<br>
                  </div>
                  <blockquote type="cite">
                    <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">&lt;<a
                              moz-do-not-send="true"
                              href="mailto:blanchet@abes.fr"
                              target="_blank">blanchet@abes.fr</a>&gt;</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="m_7298570659494759391gmail-"> 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
                                              moz-do-not-send="true"
                                              href="https://ovirt.example.com/ovirt-engine/api"
                                              target="_blank">https://ovirt.example.com/ovir<wbr>t-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="m_7298570659494759391gmail-"><br>
                                  - name: Get stopped VMs<br>
                                    ovirt_vms_facts:<br>
                                      auth:<br>
                              </span>         url: <a
                                moz-do-not-send="true"
class="m_7298570659494759391gmail-m_344037001981379143moz-txt-link-freetext"
href="https://acore.v100.abes.fr/ovirt-engine/api" target="_blank">https://acore.v100.abes.fr/ovi<wbr>rt-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
                                moz-do-not-send="true"
                                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="m_7298570659494759391gmail-im"><br>
                                - name: Get VMs from datacenter X<br>
                                  ovirt_vms_facts:</span><br>
                            <span class="m_7298570659494759391gmail-im">
                                    pattern: datacenter=X<br>
                                    auth:<br>
                            </span>         url: <a
                              moz-do-not-send="true"
class="m_7298570659494759391gmail-m_344037001981379143moz-txt-link-freetext"
href="https://acore.v100.abes.fr/ovirt-engine/api" target="_blank">https://acore.v100.abes.fr/ovi<wbr>rt-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 border="1" cellpadding="4">
                                <tbody>
                                  <tr>
                                    <th
                                      class="m_7298570659494759391gmail-m_344037001981379143head">name</th>
                                    <th
                                      class="m_7298570659494759391gmail-m_344037001981379143head">description</th>
                                    <th
                                      class="m_7298570659494759391gmail-m_344037001981379143head">returned</th>
                                    <th
                                      class="m_7298570659494759391gmail-m_344037001981379143head">type</th>
                                    <th
                                      class="m_7298570659494759391gmail-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
                                        moz-do-not-send="true"
class="m_7298570659494759391gmail-m_344037001981379143moz-txt-link-freetext"
href="https://ovirt.example.com/ovirt-engine/api/model#types/vm"
                                        target="_blank">https://ovirt.example.com/ovir<wbr>t-engine/api/model#types/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.<wbr>cluster)<br>
                          </div>
                          <div> print <a moz-do-not-send="true"
                              href="http://vm_cluster.name"
                              target="_blank">vm_cluster.name</a><br>
                            <br>
                          </div>
                          <div> # Same for datacenter:<br>
                          </div>
                          <div> vm_dc = connection.follow_link(vm_<wbr>cluster.data_center)<br>
                          </div>
                          <div> print <a moz-do-not-send="true"
                              href="http://vm_dc.name" target="_blank">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 moz-do-not-send="true"
                              href="http://ovirt.github.io/ovirt-engine-api-model/master/#types/vm"
                              target="_blank">http://ovirt.github.io/ovirt-<wbr>engine-api-model/master/#<wbr>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="m_7298570659494759391gmail-h5"><br>
                                  <blockquote type="cite">
                                    <div dir="ltr">
                                      <div>
                                        <div>
                                          <div>
                                            <div>
                                              <div>
                                                <div>
                                                  <div>
                                                    <div>
                                                      <div>
                                                        <div><br>
                                                          [1] <a
                                                          moz-do-not-send="true"
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">&lt;<a
                                            moz-do-not-send="true"
                                            href="mailto:blanchet@abes.fr"
                                            target="_blank">blanchet@abes.fr</a>&gt;</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="m_7298570659494759391gmail-m_344037001981379143h5">
                                                <br>
                                                <div
class="m_7298570659494759391gmail-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">&lt;<a
moz-do-not-send="true" href="mailto:blanchet@abes.fr" target="_blank">blanchet@abes.fr</a>&gt;</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
                                                          &lt;module&gt;<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
                                                          moz-do-not-send="true"
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
                                                          &lt;genexpr&gt;<br>
                                                              (<a
                                                          moz-do-not-send="true"
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
                                                          moz-do-not-send="true"
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
                                                          moz-do-not-send="true"
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/e<wbr>xamples/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
                                                          moz-do-not-send="true"
href="mailto:blanchet@abes.fr" target="_blank">blanchet@abes.fr</a><br>
                                                          <br>
______________________________<wbr>_________________<br>
                                                          Users mailing
                                                          list<br>
                                                          <a
                                                          moz-do-not-send="true"
href="mailto:Users@ovirt.org" target="_blank">Users@ovirt.org</a><br>
                                                          <a
                                                          moz-do-not-send="true"
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="m_7298570659494759391gmail-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 moz-do-not-send="true" class="m_7298570659494759391gmail-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="m_7298570659494759391gmail-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 moz-do-not-send="true" class="m_7298570659494759391gmail-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>
                  </blockquote>
                  <br>
                  <pre class="m_7298570659494759391moz-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 moz-do-not-send="true" class="m_7298570659494759391moz-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="moz-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="moz-txt-link-abbreviated" href="mailto:blanchet@abes.fr">blanchet@abes.fr</a> </pre>
  </body>
</html>