Request for oVirt Ansible modules testing feedback

Hello all, I would like to kindly ask everyone who is Ansible or oVirt user for testing of the new Ansible oVirt modules. For everyone who is familiar with the Ansible and oVirt, this[1] describes the steps you need to do, to setup oVirt modules library and start using those modules (Most of those modules will be available in Ansible 2.3, some of them are already in 2.2). If you have any issue setting this up, please contact me, I will do the best to help you. If you have an issue, which you think is a bug, please open an issue here[2]. Please note that Ansible is merging it's repositories, so since next week it will actually be stored here[3]. If you are missing anything please open an issue as well, or just contact me, and I will do fix it. You are also very welcome to sent PR with fixes. For those who don't have testing environment which can test against, I've created an Vagrant project which will deploy you the oVirt instance using Ansible playbooks. You can find how to use it here[4]. The repository also contains few examples[5], so you don't have to copy-paste them from the source. Thanks all for reading this and any feedback, Ondra [1] https://github.com/machacekondra/ovirt-tests/releases/tag/0.1 [2] https://github.com/ansible/ansible-modules-extras/issues [3] https://github.com/ansible/ansible [4] https://github.com/machacekondra/ovirt-tests [5] https://github.com/machacekondra/ovirt-tests/tree/master/examples

This is a multi-part message in MIME format. --------------F3B82204041E8AEDBE75F1BE Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: quoted-printable Interesting work and thank you for this stuff. I played with some=20 modules (ovirt_vms_facts) to get some vms name for example. * [root@acore ovirt]# ansible-playbook All_Vms_list.yml * with - name: List vms ovirt_vms_facts: auth: "{{ ovirt_auth }}" pattern: name=3Dtest_cloud fetch_nested: true nested_attributes: name register: ovirt_vms - shell: echo "{{ ovirt_vms.name }} > vms_name" // doesn't work * - shell: echo "{{ ovirt_vms }} > vms_name // returns an unicode json file, that's surely why we can't parse it. Can you help me to solve this into the ovirt_vms_facts.py file? * I have no such problem with ovirt_snaphots_module and I can easily get the snaphot.id variable.... but: o I had to manually copy the ovirt_snaphsots_module because it is not present on the git tree. This is very curious: we can find it here http://ovirt-ansible-modules.readthedocs.io/en/latest/_modules/ov= irt_snapshots_module.htm, but it is not available on the main ansible git tre. o On the doc, return values are not described For the moment, my opinion is that ansible can't be as much convinient=20 as the current CLI, e.g. ovirt-shell -E "list vms", out of the box. Is=20 there a really reason to deprecate it? Le 02/12/2016 =E0 14:12, Ondra Machacek a =E9crit :
Hello all,
I would like to kindly ask everyone who is Ansible or oVirt user for testing of the new Ansible oVirt modules. For everyone who is familiar with the Ansible and oVirt, this[1] describes the steps you need to do, to setup oVirt modules library and start using those modules (Most of=20 those modules will be available in Ansible 2.3, some of them are=20 already in 2.2).
If you have any issue setting this up, please contact me, I will do the best to help you.
If you have an issue, which you think is a bug, please open an issue here[2]. Please note that Ansible is merging it's repositories, so sinc= e next week it will actually be stored here[3]. If you are missing anything please open an issue as well, or just contact me, and I will do fix it. You are also very welcome to sent PR with fixes.
For those who don't have testing environment which can test against, I've created an Vagrant project which will deploy you the oVirt instanc= e using Ansible playbooks. You can find how to use it here[4].
The repository also contains few examples[5], so you don't have to copy-paste them from the source.
Thanks all for reading this and any feedback, Ondra
[1] https://github.com/machacekondra/ovirt-tests/releases/tag/0.1 [2] https://github.com/ansible/ansible-modules-extras/issues [3] https://github.com/ansible/ansible [4] https://github.com/machacekondra/ovirt-tests [5] https://github.com/machacekondra/ovirt-tests/tree/master/examples _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
--=20 Nathana=EBl Blanchet Supervision r=E9seau P=F4le Infrastrutures Informatiques 227 avenue Professeur-Jean-Louis-Viala 34193 MONTPELLIER CEDEX 5 =09 T=E9l. 33 (0)4 67 54 84 55 Fax 33 (0)4 67 54 84 14 blanchet@abes.fr --------------F3B82204041E8AEDBE75F1BE Content-Type: text/html; charset=windows-1252 Content-Transfer-Encoding: quoted-printable <html> <head> <meta content=3D"text/html; charset=3Dwindows-1252" http-equiv=3D"Content-Type"> </head> <body text=3D"#000000" bgcolor=3D"#FFFFFF"> <p>Interesting work and thank you for this stuff. I played with some modules (ovirt_vms_facts) to get some vms name for example.<br> </p> <ul> <li>[root@acore ovirt]# ansible-playbook All_Vms_list.yml =A0=A0=A0= =A0=A0=A0=A0 <br> </li> <li>with <br> =A0 - name: List vms<br> =A0=A0=A0 ovirt_vms_facts:<br> =A0=A0=A0=A0=A0 auth: "{{ ovirt_auth }}"<br> =A0=A0=A0=A0=A0 pattern: name=3Dtest_cloud<br> =A0 =A0 =A0 fetch_nested: true<br> =A0=A0 =A0=A0 nested_attributes: name<br> =A0=A0=A0 register: ovirt_vms<br> =A0=A0=A0=A0 <br> =A0 - shell: echo "{{ ovirt_vms.name }} > vms_name" // doesn't work</li> </ul> <ul> <li>=A0 - shell: echo "{{ ovirt_vms }} > vms_name // returns an unicode json file, that's surely why we can't parse it. Can you help me to solve this into the ovirt_vms_facts.py file?</li> </ul> <ul> <li>I have no such problem with ovirt_snaphots_module and I can easily get the snaphot.id variable.... but:</li> <ul> <li>I had to manually copy the ovirt_snaphsots_module because it is not present on the git tree. This is very curious: we can find it here <a class=3D"moz-txt-link-freetext" href=3D"http://ovirt-ansible-modules.r= eadthedocs.io/en/latest/_modules/ovirt_snapshots_module.htm">http://ovirt= -ansible-modules.readthedocs.io/en/latest/_modules/ovirt_snapshots_module= .htm</a>, but it is not available on the main ansible git tre.</li> <li>On the doc, return values are not described</li> </ul> </ul> <p>For the moment, my opinion is that ansible can't be as much convinient as the current CLI, e.g. ovirt-shell -E "list vms", out of the box. Is there a really reason to deprecate it?<br> </p> <br> <div class=3D"moz-cite-prefix">Le 02/12/2016 =E0 14:12, Ondra Machace= k a =E9crit=A0:<br> </div> <blockquote cite=3D"mid:3c316338-eb1d-b34c-f17c-663c5e53e4b0@redhat.com" type=3D"cite">Hello all, <br> <br> I would like to kindly ask everyone who is Ansible or oVirt user for <br> testing of the new Ansible oVirt modules. For everyone who is familiar <br> with the Ansible and oVirt, this[1] describes the steps you need to do, <br> to setup oVirt modules library and start using those modules (Most of those modules will be available in Ansible 2.3, some of them are already in 2.2). <br> <br> If you have any issue setting this up, please contact me, I will do the <br> best to help you. <br> <br> If you have an issue, which you think is a bug, please open an issue <br> here[2]. Please note that Ansible is merging it's repositories, so since <br> next week it will actually be stored here[3]. If you are missing <br> anything please open an issue as well, or just contact me, and I will <br> do fix it. You are also very welcome to sent PR with fixes. <br> <br> For those who don't have testing environment which can test against, <br> I've created an Vagrant project which will deploy you the oVirt instance <br> using Ansible playbooks. You can find how to use it here[4]. <br> <br> The repository also contains few examples[5], so you don't have to <br> copy-paste them from the source. <br> <br> Thanks all for reading this and any feedback, <br> Ondra <br> <br> [1] <a class=3D"moz-txt-link-freetext" href=3D"https://github.com/m= achacekondra/ovirt-tests/releases/tag/0.1">https://github.com/machacekond= ra/ovirt-tests/releases/tag/0.1</a> <br> [2] <a class=3D"moz-txt-link-freetext" href=3D"https://github.com/a= nsible/ansible-modules-extras/issues">https://github.com/ansible/ansible-= modules-extras/issues</a> <br> [3] <a class=3D"moz-txt-link-freetext" href=3D"https://github.com/a= nsible/ansible">https://github.com/ansible/ansible</a> <br> [4] <a class=3D"moz-txt-link-freetext" href=3D"https://github.com/m= achacekondra/ovirt-tests">https://github.com/machacekondra/ovirt-tests</a=
<br> [5] <a class=3D"moz-txt-link-freetext" href=3D"https://github.com/macha= cekondra/ovirt-tests/tree/master/examples">https://github.com/machacekond= ra/ovirt-tests/tree/master/examples</a> <br> _______________________________________________ <br> Users mailing list <br> <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:Users@ovirt.or= g">Users@ovirt.org</a> <br> <a class=3D"moz-txt-link-freetext" href=3D"http://lists.ovirt.org/m= ailman/listinfo/users">http://lists.ovirt.org/mailman/listinfo/users</a> <br> </blockquote> <br> <pre class=3D"moz-signature" cols=3D"72">--=20 Nathana=EBl Blanchet Supervision r=E9seau P=F4le Infrastrutures Informatiques 227 avenue Professeur-Jean-Louis-Viala 34193 MONTPELLIER CEDEX 5 =09 T=E9l. 33 (0)4 67 54 84 55 Fax 33 (0)4 67 54 84 14 <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:blanchet@abes.fr">bl= anchet@abes.fr</a> </pre> </body> </html> --------------F3B82204041E8AEDBE75F1BE--

I personally found that she'll isn't as useful as the python sdk. I usually open up ipython, load the sdk and interact with ovirt directly. This is faster and much more powerful than the shell could ever be. On Dec 30, 2016 11:22 AM, "Nathanaël Blanchet" <blanchet@abes.fr> wrote:
Interesting work and thank you for this stuff. I played with some modules (ovirt_vms_facts) to get some vms name for example.
- [root@acore ovirt]# ansible-playbook All_Vms_list.yml - with - name: List vms ovirt_vms_facts: auth: "{{ ovirt_auth }}" pattern: name=test_cloud fetch_nested: true nested_attributes: name register: ovirt_vms
- shell: echo "{{ ovirt_vms.name }} > vms_name" // doesn't work
- - shell: echo "{{ ovirt_vms }} > vms_name // returns an unicode json file, that's surely why we can't parse it. Can you help me to solve this into the ovirt_vms_facts.py file?
- I have no such problem with ovirt_snaphots_module and I can easily get the snaphot.id variable.... but: - I had to manually copy the ovirt_snaphsots_module because it is not present on the git tree. This is very curious: we can find it here http://ovirt-ansible-modules.readthedocs.io/en/latest/_ modules/ovirt_snapshots_module.htm <http://ovirt-ansible-modules.readthedocs.io/en/latest/_modules/ovirt_snapshots_module.htm>, but it is not available on the main ansible git tre. - On the doc, return values are not described
For the moment, my opinion is that ansible can't be as much convinient as the current CLI, e.g. ovirt-shell -E "list vms", out of the box. Is there a really reason to deprecate it?
Le 02/12/2016 à 14:12, Ondra Machacek a écrit :
Hello all,
I would like to kindly ask everyone who is Ansible or oVirt user for testing of the new Ansible oVirt modules. For everyone who is familiar with the Ansible and oVirt, this[1] describes the steps you need to do, to setup oVirt modules library and start using those modules (Most of those modules will be available in Ansible 2.3, some of them are already in 2.2).
If you have any issue setting this up, please contact me, I will do the best to help you.
If you have an issue, which you think is a bug, please open an issue here[2]. Please note that Ansible is merging it's repositories, so since next week it will actually be stored here[3]. If you are missing anything please open an issue as well, or just contact me, and I will do fix it. You are also very welcome to sent PR with fixes.
For those who don't have testing environment which can test against, I've created an Vagrant project which will deploy you the oVirt instance using Ansible playbooks. You can find how to use it here[4].
The repository also contains few examples[5], so you don't have to copy-paste them from the source.
Thanks all for reading this and any feedback, Ondra
[1] https://github.com/machacekondra/ovirt-tests/releases/tag/0.1 [2] https://github.com/ansible/ansible-modules-extras/issues [3] https://github.com/ansible/ansible [4] https://github.com/machacekondra/ovirt-tests [5] https://github.com/machacekondra/ovirt-tests/tree/master/examples _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
-- 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 14blanchet@abes.fr
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

This is a multi-part message in MIME format. --------------92C444A34583BD0A939A6910 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Le 30/12/2016 =C3=A0 20:53, Dan Yasny a =C3=A9crit :
I personally found that she'll isn't as useful as the python sdk. I=20 usually open up ipython, load the sdk and interact with ovirt=20 directly. This is faster and much more powerful than the shell could=20 ever be. okay, I suppose you to be a regular python user. Can you imagine how=20 much time I spent just to understand how it works? That is to say:
* installing pip and not pip3 because provided python-ovirt-engine-sdk4 is default installed to /usr/lib64/python2.7= , * installing ipython, * importing the good modules, * finding pertinent examples, * understand differences between sdk3 and 4 * correcting some wrong examples * adapting example to my need? I can't see how it can be fast for the newbie. What's the first goal of a CLI? to abstract all this stuff for the=20 python newbie. If you want a easy-to-use webadmin for attracting a large=20 public, you should provide easy-to-use CLI as well. Ovirt-shell was a=20 part of my choice to use ovirt. Yes we can learn to use SDK (I dit it), but I don't think a lot people=20 who chose ovirt for simplicity wll use it except advanced users. A new time, thank you for the great stuff for the great oVirt project,=20 but I find there is too much distance between devs and users. What do really think the community about this?
On Dec 30, 2016 11:22 AM, "Nathana=C3=ABl Blanchet" <blanchet@abes.fr=20 <mailto:blanchet@abes.fr>> wrote:
Interesting work and thank you for this stuff. I played with some modules (ovirt_vms_facts) to get some vms name for example.
* [root@acore ovirt]# ansible-playbook All_Vms_list.yml * with - name: List vms ovirt_vms_facts: auth: "{{ ovirt_auth }}" pattern: name=3Dtest_cloud fetch_nested: true nested_attributes: name register: ovirt_vms
- shell: echo "{{ ovirt_vms.name <http://ovirt_vms.name> }} > vms_name" // doesn't work
* - shell: echo "{{ ovirt_vms }} > vms_name // returns an unicode json file, that's surely why we can't parse it. Can you help me to solve this into the ovirt_vms_facts.py file?
* I have no such problem with ovirt_snaphots_module and I can easily get the snaphot.id <http://snaphot.id> variable.... but: o I had to manually copy the ovirt_snaphsots_module because it is not present on the git tree. This is very curious: we can find it here http://ovirt-ansible-modules.readthedocs.io/en/latest/_modu=
les/ovirt_snapshots_module.htm
<http://ovirt-ansible-modules.readthedocs.io/en/latest/_mod=
ules/ovirt_snapshots_module.htm>,
but it is not available on the main ansible git tre. o On the doc, return values are not described
For the moment, my opinion is that ansible can't be as much convinient as the current CLI, e.g. ovirt-shell -E "list vms", out of the box. Is there a really reason to deprecate it?
Le 02/12/2016 =C3=A0 14:12, Ondra Machacek a =C3=A9crit :
Hello all,
I would like to kindly ask everyone who is Ansible or oVirt user f=
or
testing of the new Ansible oVirt modules. For everyone who is familiar with the Ansible and oVirt, this[1] describes the steps you need to do, to setup oVirt modules library and start using those modules (Most of those modules will be available in Ansible 2.3, some of them are already in 2.2).
If you have any issue setting this up, please contact me, I will do the best to help you.
If you have an issue, which you think is a bug, please open an iss=
ue
here[2]. Please note that Ansible is merging it's repositories, so since next week it will actually be stored here[3]. If you are missing anything please open an issue as well, or just contact me, and I will do fix it. You are also very welcome to sent PR with fixes.
For those who don't have testing environment which can test agains=
t,
I've created an Vagrant project which will deploy you the oVirt instance using Ansible playbooks. You can find how to use it here[4].
The repository also contains few examples[5], so you don't have to copy-paste them from the source.
Thanks all for reading this and any feedback, Ondra
[1] https://github.com/machacekondra/ovirt-tests/releases/tag/0.1 <https://github.com/machacekondra/ovirt-tests/releases/tag/0.1> [2] https://github.com/ansible/ansible-modules-extras/issues <https://github.com/ansible/ansible-modules-extras/issues> [3] https://github.com/ansible/ansible <https://github.com/ansible/ansible> [4] https://github.com/machacekondra/ovirt-tests <https://github.com/machacekondra/ovirt-tests> [5] https://github.com/machacekondra/ovirt-tests/tree/master/examples <https://github.com/machacekondra/ovirt-tests/tree/master/examples=
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
--=20 Nathana=C3=ABl Blanchet
Supervision r=C3=A9seau P=C3=B4le Infrastrutures Informatiques 227 avenue Professeur-Jean-Louis-Viala 34193 MONTPELLIER CEDEX 5 =09 T=C3=A9l. 33 (0)4 67 54 84 55 Fax 33 (0)4 67 54 84 14 blanchet@abes.fr <mailto:blanchet@abes.fr> =20
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
--=20 Nathana=C3=ABl Blanchet Supervision r=C3=A9seau P=C3=B4le Infrastrutures Informatiques 227 avenue Professeur-Jean-Louis-Viala 34193 MONTPELLIER CEDEX 5 =09 T=C3=A9l. 33 (0)4 67 54 84 55 Fax 33 (0)4 67 54 84 14 blanchet@abes.fr --------------92C444A34583BD0A939A6910 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable <html> <head> <meta content=3D"text/html; charset=3Dutf-8" http-equiv=3D"Content-Ty= pe"> </head> <body text=3D"#000000" bgcolor=3D"#FFFFFF"> <p><br> </p> <br> <div class=3D"moz-cite-prefix">Le 30/12/2016 =C3=A0 20:53, Dan Yasny = a =C3=A9crit=C2=A0:<br> </div> <blockquote cite=3D"mid:CALLXwb69edHu7dJhf3cmXYkOHn9wAg-1OO99FZr6N820fHDR=3Dg@mail.gm= ail.com" type=3D"cite"> <div dir=3D"auto">I personally found that she'll isn't as useful as the python sdk. I usually open up ipython, load the sdk and interact with ovirt directly. This is faster and much more powerful than the shell could ever be. <br> </div> </blockquote> okay, I suppose you to be a regular python user. Can you imagine how much time I spent just to understand how it works? <br> That is to say:<br> <ul> <li>installing pip and not pip3 because provided python-ovirt-engine-sdk4 is default installed to /usr/lib64/python2.7, <br> </li> <li>installing ipython, <br> </li> <li>importing the good modules, <br> </li> <li>finding pertinent examples, </li> <li>understand differences between sdk3 and 4 </li> <li>correcting some wrong examples</li> <li>adapting example to my need?</li> </ul> I can't see how it can be fast for the newbie.<br> What's the first goal of a CLI? to abstract all this stuff for the python newbie. If you want a easy-to-use webadmin for attracting a large public, you should provide easy-to-use CLI as well. Ovirt-shell was a part of my choice to use ovirt.<br> Yes we can learn to use SDK (I dit it), but I don't think a lot people who chose ovirt for simplicity wll use it except advanced users.<br> A new time, thank you for the great stuff for the great oVirt project, but I find there is too much distance between devs and users.<br> What do really think the community about this?<br> <blockquote cite=3D"mid:CALLXwb69edHu7dJhf3cmXYkOHn9wAg-1OO99FZr6N820fHDR=3Dg@mail.gm= ail.com" type=3D"cite"> <div class=3D"gmail_extra"><br> <div class=3D"gmail_quote">On Dec 30, 2016 11:22 AM, "Nathana=C3=AB= l Blanchet" <<a moz-do-not-send=3D"true" href=3D"mailto:blanchet@abes.fr">blanchet@abes.fr</a>> wrote:<br type=3D"attribution"> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <div text=3D"#000000" bgcolor=3D"#FFFFFF"> <p>Interesting work and thank you for this stuff. I played with some modules (ovirt_vms_facts) to get some vms name for example.<br> </p> <ul> <li>[root@acore ovirt]# ansible-playbook All_Vms_list.yml =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 <br> </li> <li>with <br> =C2=A0 - name: List vms<br> =C2=A0=C2=A0=C2=A0 ovirt_vms_facts:<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 auth: "{{ ovirt_auth }}"= <br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 pattern: name=3Dtest_clo= ud<br> =C2=A0 =C2=A0 =C2=A0 fetch_nested: true<br> =C2=A0=C2=A0 =C2=A0=C2=A0 nested_attributes: name<br> =C2=A0=C2=A0=C2=A0 register: ovirt_vms<br> =C2=A0=C2=A0=C2=A0=C2=A0 <br> =C2=A0 - shell: echo "{{ <a moz-do-not-send=3D"true" href=3D"http://ovirt_vms.name" target=3D"_blank">ovir= t_vms.name</a> }} > vms_name" // doesn't work</li> </ul> <ul> <li>=C2=A0 - shell: echo "{{ ovirt_vms }} > vms_name /= / returns an unicode json file, that's surely why we can't parse it. Can you help me to solve this into the ovirt_vms_facts.py file?</li> </ul> <ul> <li>I have no such problem with ovirt_snaphots_module and I can easily get the <a moz-do-not-send=3D"true" href=3D"http://snaphot.id" target=3D"_blank">snaphot.= id</a> variable.... but:</li> <ul> <li>I had to manually copy the ovirt_snaphsots_module because it is not present on the git tree. This is very curious: we can find it here <a moz-do-not-send=3D"true" class=3D"m_5747256721902447049moz-txt-link-freetext= " href=3D"http://ovirt-ansible-modules.readthedocs.io/en/latest/_modules/ov= irt_snapshots_module.htm" target=3D"_blank">http://ovirt-ansible-modules.<wbr=
readthedocs.io/en/latest/_<wbr>modules/ovirt_snapshots_<wbr>module.htm</= a>, but it is not available on the main ansible git tre.<= /li> <li>On the doc, return values are not described</li> </ul> </ul> <p>For the moment, my opinion is that ansible can't be as much convinient as the current CLI, e.g. ovirt-shell -E "list vms", out of the box. Is there a really reason to deprecate it?<br> </p> <br> <div class=3D"m_5747256721902447049moz-cite-prefix">Le 02/12/2016 =C3=A0 14:12, Ondra Machacek a =C3=A9crit=C2=A0= :<br> </div> <blockquote type=3D"cite">Hello all, <br> <br> I would like to kindly ask everyone who is Ansible or oVirt user for <br> testing of the new Ansible oVirt modules. For everyone who is familiar <br> with the Ansible and oVirt, this[1] describes the steps you need to do, <br> to setup oVirt modules library and start using those modules (Most of those modules will be available in Ansible 2.3, some of them are already in 2.2). <br> <br> If you have any issue setting this up, please contact me, I will do the <br> best to help you. <br> <br> If you have an issue, which you think is a bug, please open an issue <br> here[2]. Please note that Ansible is merging it's repositories, so since <br> next week it will actually be stored here[3]. If you are missing <br> anything please open an issue as well, or just contact me, and I will <br> do fix it. You are also very welcome to sent PR with fixes. <br> <br> For those who don't have testing environment which can test against, <br> I've created an Vagrant project which will deploy you the oVirt instance <br> using Ansible playbooks. You can find how to use it here[4]. <br> <br> The repository also contains few examples[5], so you don't have to <br> copy-paste them from the source. <br> <br> Thanks all for reading this and any feedback, <br> Ondra <br> <br> [1] <a moz-do-not-send=3D"true" class=3D"m_5747256721902447049moz-txt-link-freetext" href=3D"https://github.com/machacekondra/ovirt-tests/re= leases/tag/0.1" target=3D"_blank">https://github.com/<wbr>machacekondra= /ovirt-tests/<wbr>releases/tag/0.1</a> <br> [2] <a moz-do-not-send=3D"true" class=3D"m_5747256721902447049moz-txt-link-freetext" href=3D"https://github.com/ansible/ansible-modules-extr= as/issues" target=3D"_blank">https://github.com/ansible/<wbr>ansib= le-modules-extras/issues</a> <br> [3] <a moz-do-not-send=3D"true" class=3D"m_5747256721902447049moz-txt-link-freetext" href=3D"https://github.com/ansible/ansible" target=3D"_blank">https://github.com/ansible/<wbr>ansib= le</a> <br> [4] <a moz-do-not-send=3D"true" class=3D"m_5747256721902447049moz-txt-link-freetext" href=3D"https://github.com/machacekondra/ovirt-tests" target=3D"_blank">https://github.com/<wbr>machacekondra= /ovirt-tests</a> <br> [5] <a moz-do-not-send=3D"true" class=3D"m_5747256721902447049moz-txt-link-freetext" href=3D"https://github.com/machacekondra/ovirt-tests/tr= ee/master/examples" target=3D"_blank">https://github.com/<wbr>machacekondra= /ovirt-tests/<wbr>tree/master/examples</a> <br> ______________________________<wbr>_________________ <br> Users mailing list <br> <a moz-do-not-send=3D"true" class=3D"m_5747256721902447049moz-txt-link-abbreviated" href=3D"mailto:Users@ovirt.org" target=3D"_blank">Users= @ovirt.org</a> <br> <a moz-do-not-send=3D"true" class=3D"m_5747256721902447049moz-txt-link-freetext" href=3D"http://lists.ovirt.org/mailman/listinfo/users" target=3D"_blank">http://lists.ovirt.org/<wbr>mailman/l= istinfo/users</a> <br> </blockquote> <br> <pre class=3D"m_5747256721902447049moz-signature" cols=3D"7= 2">--=20 Nathana=C3=ABl Blanchet
Supervision r=C3=A9seau P=C3=B4le Infrastrutures Informatiques 227 avenue Professeur-Jean-Louis-Viala 34193 MONTPELLIER CEDEX 5 =09 T=C3=A9l. 33 (0)4 67 54 84 55 Fax 33 (0)4 67 54 84 14 <a moz-do-not-send=3D"true" class=3D"m_5747256721902447049moz-txt-link-ab= breviated" href=3D"mailto:blanchet@abes.fr" target=3D"_blank">blanchet@ab= es.fr</a> </pre> </div> <br> ______________________________<wbr>_________________<br> Users mailing list<br> <a moz-do-not-send=3D"true" href=3D"mailto:Users@ovirt.org">U= sers@ovirt.org</a><br> <a moz-do-not-send=3D"true" href=3D"http://lists.ovirt.org/mailman/listinfo/users" rel=3D"noreferrer" target=3D"_blank">http://lists.ovirt.org= /<wbr>mailman/listinfo/users</a><br> <br> </blockquote> </div> </div> </blockquote> <br> <pre class=3D"moz-signature" cols=3D"72">--=20 Nathana=C3=ABl Blanchet Supervision r=C3=A9seau P=C3=B4le Infrastrutures Informatiques 227 avenue Professeur-Jean-Louis-Viala 34193 MONTPELLIER CEDEX 5 =09 T=C3=A9l. 33 (0)4 67 54 84 55 Fax 33 (0)4 67 54 84 14 <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:blanchet@abes.fr">bl= anchet@abes.fr</a> </pre> </body> </html> --------------92C444A34583BD0A939A6910--

--_000_CY4PR14MB16872F07318B2136C5CC851EE9610CY4PR14MB1687namp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UGVyc29uYWxseSBJIGRvbuKAmXQgdGhpbmsgYW5zaWJsZSBhbmQgb3ZpcnQtc2hlbGwgYXJlIG11 dHVhbGx5IGV4Y2x1c2l2ZS4NClRob3NlIHdobyBhcmUgaW4gYW5zaWJsZSBhbmQgZGV2b3BzIHJl YWxtcyBhcmUgbm90IHJlYWxseSBzY2FyZWQgYnkgbWFraW5nIHB5dGhvbi9hbnNpYmxlIHdvcmsg d2l0aCBvdmlydC4NCkZyb20gd2hhdCBJIGdhdGhlciwgcGxheWJvb2tzIGFyZSBxdWl0ZSBhIGRl LWZhY3RvIHByZS1yZXF1aXNpdGUgdG8gYnVpbGQgdXAgYSByZWFsIFNhYUMg4oCcU29mdHdhcmUg YXMgYSBDb2Rl4oCdIGVudmlyb25tZW50Lg0KDQpPbiB0aGUgb3RoZXIgaGFuZCwgb3ZpcnQtc2hl bGwgY2FuIGFuZCBpcyBhIGZhc3QvZWFzeSB3YXkgdG8gcGVyZm9ybSDigJxub3JtYWwgZGFpbHkg dGFza3PigJ0uDQoNCkFzIGxvbmcgYXMgd2UgaGF2ZSBnb29kIGRvY3VtZW50YXRpb24gYWJvdXQg aG93IHRvIGRvIHRoaW5ncywgY2FuIHdlIGhhdmUgYW5kIHN1cHBvcnQgYm90aD8NCkNoZWVycw0K QW5kcmVhDQoNCkZyb206IHVzZXJzLWJvdW5jZXNAb3ZpcnQub3JnIFttYWlsdG86dXNlcnMtYm91 bmNlc0BvdmlydC5vcmddIE9uIEJlaGFsZiBPZiBOYXRoYW5hw6tsIEJsYW5jaGV0DQpTZW50OiBU dWVzZGF5LCBKYW51YXJ5IDMsIDIwMTcgNzo0MSBQTQ0KVG86IERhbiBZYXNueSA8ZHlhc255QGdt YWlsLmNvbT4NCkNjOiB1c2VycyA8dXNlcnNAb3ZpcnQub3JnPg0KU3ViamVjdDogUmU6IFtvdmly dC11c2Vyc10gUmVxdWVzdCBmb3Igb1ZpcnQgQW5zaWJsZSBtb2R1bGVzIHRlc3RpbmcgZmVlZGJh Y2sNCg0KTGUgMzAvMTIvMjAxNiDDoCAyMDo1MywgRGFuIFlhc255IGEgw6ljcml0IDoNCkkgcGVy c29uYWxseSBmb3VuZCB0aGF0IHNoZSdsbCBpc24ndCBhcyB1c2VmdWwgYXMgdGhlIHB5dGhvbiBz ZGsuIEkgdXN1YWxseSBvcGVuIHVwIGlweXRob24sIGxvYWQgdGhlIHNkayBhbmQgaW50ZXJhY3Qg d2l0aCBvdmlydCBkaXJlY3RseS4gVGhpcyBpcyBmYXN0ZXIgYW5kIG11Y2ggbW9yZSBwb3dlcmZ1 bCB0aGFuIHRoZSBzaGVsbCBjb3VsZCBldmVyIGJlLg0Kb2theSwgSSBzdXBwb3NlIHlvdSB0byBi ZSBhIHJlZ3VsYXIgcHl0aG9uIHVzZXIuIENhbiB5b3UgaW1hZ2luZSBob3cgbXVjaCB0aW1lIEkg c3BlbnQganVzdCB0byB1bmRlcnN0YW5kIGhvdyBpdCB3b3Jrcz8NClRoYXQgaXMgdG8gc2F5Og0K DQogICogICBpbnN0YWxsaW5nIHBpcCBhbmQgbm90IHBpcDMgYmVjYXVzZSBwcm92aWRlZCBweXRo b24tb3ZpcnQtZW5naW5lLXNkazQgaXMgZGVmYXVsdCBpbnN0YWxsZWQgdG8gL3Vzci9saWI2NC9w eXRob24yLjcsDQogICogICBpbnN0YWxsaW5nIGlweXRob24sDQogICogICBpbXBvcnRpbmcgdGhl IGdvb2QgbW9kdWxlcywNCiAgKiAgIGZpbmRpbmcgcGVydGluZW50IGV4YW1wbGVzLA0KICAqICAg dW5kZXJzdGFuZCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHNkazMgYW5kIDQNCiAgKiAgIGNvcnJlY3Rp bmcgc29tZSB3cm9uZyBleGFtcGxlcw0KICAqICAgYWRhcHRpbmcgZXhhbXBsZSB0byBteSBuZWVk Pw0KSSBjYW4ndCBzZWUgaG93IGl0IGNhbiBiZSBmYXN0IGZvciB0aGUgbmV3YmllLg0KV2hhdCdz IHRoZSBmaXJzdCBnb2FsIG9mIGEgQ0xJPyB0byBhYnN0cmFjdCBhbGwgdGhpcyBzdHVmZiBmb3Ig dGhlIHB5dGhvbiBuZXdiaWUuIElmIHlvdSB3YW50IGEgZWFzeS10by11c2Ugd2ViYWRtaW4gZm9y IGF0dHJhY3RpbmcgYSBsYXJnZSBwdWJsaWMsIHlvdSBzaG91bGQgcHJvdmlkZSBlYXN5LXRvLXVz ZSBDTEkgYXMgd2VsbC4gT3ZpcnQtc2hlbGwgd2FzIGEgcGFydCBvZiBteSBjaG9pY2UgdG8gdXNl IG92aXJ0Lg0KWWVzIHdlIGNhbiBsZWFybiB0byB1c2UgU0RLIChJIGRpdCBpdCksIGJ1dCBJIGRv bid0IHRoaW5rIGEgbG90IHBlb3BsZSB3aG8gY2hvc2Ugb3ZpcnQgZm9yIHNpbXBsaWNpdHkgd2xs IHVzZSBpdCBleGNlcHQgYWR2YW5jZWQgdXNlcnMuDQpBIG5ldyB0aW1lLCB0aGFuayB5b3UgZm9y IHRoZSBncmVhdCBzdHVmZiBmb3IgdGhlIGdyZWF0IG9WaXJ0IHByb2plY3QsIGJ1dCBJIGZpbmQg dGhlcmUgaXMgdG9vIG11Y2ggZGlzdGFuY2UgYmV0d2VlbiBkZXZzIGFuZCB1c2Vycy4NCldoYXQg ZG8gcmVhbGx5IHRoaW5rIHRoZSBjb21tdW5pdHkgYWJvdXQgdGhpcz8NCg0KDQpPbiBEZWMgMzAs IDIwMTYgMTE6MjIgQU0sICJOYXRoYW5hw6tsIEJsYW5jaGV0IiA8YmxhbmNoZXRAYWJlcy5mcjxt YWlsdG86YmxhbmNoZXRAYWJlcy5mcj4+IHdyb3RlOg0KDQpJbnRlcmVzdGluZyB3b3JrIGFuZCB0 aGFuayB5b3UgZm9yIHRoaXMgc3R1ZmYuIEkgcGxheWVkIHdpdGggc29tZSBtb2R1bGVzIChvdmly dF92bXNfZmFjdHMpIHRvIGdldCBzb21lIHZtcyBuYW1lIGZvciBleGFtcGxlLg0KDQogICogICBb cm9vdEBhY29yZSBvdmlydF0jIGFuc2libGUtcGxheWJvb2sgQWxsX1Ztc19saXN0LnltbA0KICAq ICAgd2l0aA0KICAtIG5hbWU6IExpc3Qgdm1zDQogICAgb3ZpcnRfdm1zX2ZhY3RzOg0KICAgICAg YXV0aDogInt7IG92aXJ0X2F1dGggfX0iDQogICAgICBwYXR0ZXJuOiBuYW1lPXRlc3RfY2xvdWQN CiAgICAgIGZldGNoX25lc3RlZDogdHJ1ZQ0KICAgICAgbmVzdGVkX2F0dHJpYnV0ZXM6IG5hbWUN CiAgICByZWdpc3Rlcjogb3ZpcnRfdm1zDQoNCiAgLSBzaGVsbDogZWNobyAie3sgb3ZpcnRfdm1z Lm5hbWU8aHR0cDovL292aXJ0X3Ztcy5uYW1lPiB9fSA+IHZtc19uYW1lIiAvLyBkb2Vzbid0IHdv cmsNCg0KICAqICAgICAtIHNoZWxsOiBlY2hvICJ7eyBvdmlydF92bXMgfX0gPiB2bXNfbmFtZSAv LyByZXR1cm5zIGFuIHVuaWNvZGUganNvbiBmaWxlLCB0aGF0J3Mgc3VyZWx5IHdoeSB3ZSBjYW4n dCBwYXJzZSBpdC4gQ2FuIHlvdSBoZWxwIG1lIHRvIHNvbHZlIHRoaXMgaW50byB0aGUgb3ZpcnRf dm1zX2ZhY3RzLnB5IGZpbGU/DQoNCiAgKiAgIEkgaGF2ZSBubyBzdWNoIHByb2JsZW0gd2l0aCBv dmlydF9zbmFwaG90c19tb2R1bGUgYW5kIEkgY2FuIGVhc2lseSBnZXQgdGhlIHNuYXBob3QuaWQ8 aHR0cDovL3NuYXBob3QuaWQ+IHZhcmlhYmxlLi4uLiBidXQ6DQoNCiAgICAgKiAgIEkgaGFkIHRv IG1hbnVhbGx5IGNvcHkgdGhlIG92aXJ0X3NuYXBoc290c19tb2R1bGUgYmVjYXVzZSBpdCBpcyBu b3QgcHJlc2VudCBvbiB0aGUgZ2l0IHRyZWUuIFRoaXMgaXMgdmVyeSBjdXJpb3VzOiB3ZSBjYW4g ZmluZCBpdCBoZXJlIGh0dHA6Ly9vdmlydC1hbnNpYmxlLW1vZHVsZXMucmVhZHRoZWRvY3MuaW8v ZW4vbGF0ZXN0L19tb2R1bGVzL292aXJ0X3NuYXBzaG90c19tb2R1bGUuaHRtLCBidXQgaXQgaXMg bm90IGF2YWlsYWJsZSBvbiB0aGUgbWFpbiBhbnNpYmxlIGdpdCB0cmUuDQogICAgICogICBPbiB0 aGUgZG9jLCByZXR1cm4gdmFsdWVzIGFyZSBub3QgZGVzY3JpYmVkDQoNCkZvciB0aGUgbW9tZW50 LCBteSBvcGluaW9uIGlzIHRoYXQgYW5zaWJsZSBjYW4ndCBiZSBhcyBtdWNoIGNvbnZpbmllbnQg YXMgdGhlIGN1cnJlbnQgQ0xJLCBlLmcuIG92aXJ0LXNoZWxsIC1FICJsaXN0IHZtcyIsIG91dCBv ZiB0aGUgYm94LiBJcyB0aGVyZSBhIHJlYWxseSByZWFzb24gdG8gZGVwcmVjYXRlIGl0Pw0KDQpM ZSAwMi8xMi8yMDE2IMOgIDE0OjEyLCBPbmRyYSBNYWNoYWNlayBhIMOpY3JpdCA6DQpIZWxsbyBh bGwsDQoNCkkgd291bGQgbGlrZSB0byBraW5kbHkgYXNrIGV2ZXJ5b25lIHdobyBpcyBBbnNpYmxl IG9yIG9WaXJ0IHVzZXIgZm9yDQp0ZXN0aW5nIG9mIHRoZSBuZXcgQW5zaWJsZSBvVmlydCBtb2R1 bGVzLiBGb3IgZXZlcnlvbmUgd2hvIGlzIGZhbWlsaWFyDQp3aXRoIHRoZSBBbnNpYmxlIGFuZCBv VmlydCwgdGhpc1sxXSBkZXNjcmliZXMgdGhlIHN0ZXBzIHlvdSBuZWVkIHRvIGRvLA0KdG8gc2V0 dXAgb1ZpcnQgbW9kdWxlcyBsaWJyYXJ5IGFuZCBzdGFydCB1c2luZyB0aG9zZSBtb2R1bGVzIChN b3N0IG9mIHRob3NlIG1vZHVsZXMgd2lsbCBiZSBhdmFpbGFibGUgaW4gQW5zaWJsZSAyLjMsIHNv bWUgb2YgdGhlbSBhcmUgYWxyZWFkeSBpbiAyLjIpLg0KDQpJZiB5b3UgaGF2ZSBhbnkgaXNzdWUg c2V0dGluZyB0aGlzIHVwLCBwbGVhc2UgY29udGFjdCBtZSwgSSB3aWxsIGRvIHRoZQ0KYmVzdCB0 byBoZWxwIHlvdS4NCg0KSWYgeW91IGhhdmUgYW4gaXNzdWUsIHdoaWNoIHlvdSB0aGluayBpcyBh IGJ1ZywgcGxlYXNlIG9wZW4gYW4gaXNzdWUNCmhlcmVbMl0uIFBsZWFzZSBub3RlIHRoYXQgQW5z aWJsZSBpcyBtZXJnaW5nIGl0J3MgcmVwb3NpdG9yaWVzLCBzbyBzaW5jZQ0KbmV4dCB3ZWVrIGl0 IHdpbGwgYWN0dWFsbHkgYmUgc3RvcmVkIGhlcmVbM10uIElmIHlvdSBhcmUgbWlzc2luZw0KYW55 dGhpbmcgcGxlYXNlIG9wZW4gYW4gaXNzdWUgYXMgd2VsbCwgb3IganVzdCBjb250YWN0IG1lLCBh bmQgSSB3aWxsDQpkbyBmaXggaXQuIFlvdSBhcmUgYWxzbyB2ZXJ5IHdlbGNvbWUgdG8gc2VudCBQ UiB3aXRoIGZpeGVzLg0KDQpGb3IgdGhvc2Ugd2hvIGRvbid0IGhhdmUgdGVzdGluZyBlbnZpcm9u bWVudCB3aGljaCBjYW4gdGVzdCBhZ2FpbnN0LA0KSSd2ZSBjcmVhdGVkIGFuIFZhZ3JhbnQgcHJv amVjdCB3aGljaCB3aWxsIGRlcGxveSB5b3UgdGhlIG9WaXJ0IGluc3RhbmNlDQp1c2luZyBBbnNp YmxlIHBsYXlib29rcy4gWW91IGNhbiBmaW5kIGhvdyB0byB1c2UgaXQgaGVyZVs0XS4NCg0KVGhl IHJlcG9zaXRvcnkgYWxzbyBjb250YWlucyBmZXcgZXhhbXBsZXNbNV0sIHNvIHlvdSBkb24ndCBo YXZlIHRvDQpjb3B5LXBhc3RlIHRoZW0gZnJvbSB0aGUgc291cmNlLg0KDQpUaGFua3MgYWxsIGZv ciByZWFkaW5nIHRoaXMgYW5kIGFueSBmZWVkYmFjaywNCk9uZHJhDQoNClsxXSBodHRwczovL2dp dGh1Yi5jb20vbWFjaGFjZWtvbmRyYS9vdmlydC10ZXN0cy9yZWxlYXNlcy90YWcvMC4xDQpbMl0g aHR0cHM6Ly9naXRodWIuY29tL2Fuc2libGUvYW5zaWJsZS1tb2R1bGVzLWV4dHJhcy9pc3N1ZXMN ClszXSBodHRwczovL2dpdGh1Yi5jb20vYW5zaWJsZS9hbnNpYmxlDQpbNF0gaHR0cHM6Ly9naXRo dWIuY29tL21hY2hhY2Vrb25kcmEvb3ZpcnQtdGVzdHMNCls1XSBodHRwczovL2dpdGh1Yi5jb20v bWFjaGFjZWtvbmRyYS9vdmlydC10ZXN0cy90cmVlL21hc3Rlci9leGFtcGxlcw0KX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NClVzZXJzIG1haWxpbmcgbGlz dA0KVXNlcnNAb3ZpcnQub3JnPG1haWx0bzpVc2Vyc0BvdmlydC5vcmc+DQpodHRwOi8vbGlzdHMu b3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vdXNlcnMNCg0KDQoNCi0tDQoNCk5hdGhhbmHDq2wg QmxhbmNoZXQNCg0KDQoNClN1cGVydmlzaW9uIHLDqXNlYXUNCg0KUMO0bGUgSW5mcmFzdHJ1dHVy ZXMgSW5mb3JtYXRpcXVlcw0KDQoyMjcgYXZlbnVlIFByb2Zlc3NldXItSmVhbi1Mb3Vpcy1WaWFs YQ0KDQozNDE5MyBNT05UUEVMTElFUiBDRURFWCA1DQoNClTDqWwuIDMzICgwKTQgNjcgNTQgODQg NTUNCg0KRmF4ICAzMyAoMCk0IDY3IDU0IDg0IDE0DQoNCmJsYW5jaGV0QGFiZXMuZnI8bWFpbHRv OmJsYW5jaGV0QGFiZXMuZnI+DQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fDQpVc2VycyBtYWlsaW5nIGxpc3QNClVzZXJzQG92aXJ0Lm9yZzxtYWlsdG86 VXNlcnNAb3ZpcnQub3JnPg0KaHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv L3VzZXJzDQoNCg0KDQotLQ0KDQpOYXRoYW5hw6tsIEJsYW5jaGV0DQoNCg0KDQpTdXBlcnZpc2lv biByw6lzZWF1DQoNClDDtGxlIEluZnJhc3RydXR1cmVzIEluZm9ybWF0aXF1ZXMNCg0KMjI3IGF2 ZW51ZSBQcm9mZXNzZXVyLUplYW4tTG91aXMtVmlhbGENCg0KMzQxOTMgTU9OVFBFTExJRVIgQ0VE RVggNQ0KDQpUw6lsLiAzMyAoMCk0IDY3IDU0IDg0IDU1DQoNCkZheCAgMzMgKDApNCA2NyA1NCA4 NCAxNA0KDQpibGFuY2hldEBhYmVzLmZyPG1haWx0bzpibGFuY2hldEBhYmVzLmZyPg0K --_000_CY4PR14MB16872F07318B2136C5CC851EE9610CY4PR14MB1687namp_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxl PjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6 V2luZ2RpbmdzOw0KCXBhbm9zZS0xOjUgMCAwIDAgMCAwIDAgMCAwIDA7fQ0KQGZvbnQtZmFjZQ0K CXtmb250LWZhbWlseTpXaW5nZGluZ3M7DQoJcGFub3NlLTE6NSAwIDAgMCAwIDAgMCAwIDAgMDt9 DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OkNhbGlicmk7DQoJcGFub3NlLTE6MiAxNSA1IDIg MiAyIDQgMyAyIDQ7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseTpDb25zb2xhczsNCglwYW5v c2UtMToyIDExIDYgOSAyIDIgNCAzIDIgNDt9DQovKiBTdHlsZSBEZWZpbml0aW9ucyAqLw0KcC5N c29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbA0KCXttYXJnaW46MGluOw0KCW1h cmdpbi1ib3R0b206LjAwMDFwdDsNCglmb250LXNpemU6MTIuMHB0Ow0KCWZvbnQtZmFtaWx5OiJU aW1lcyBOZXcgUm9tYW4iLHNlcmlmOw0KCWNvbG9yOmJsYWNrO30NCmE6bGluaywgc3Bhbi5Nc29I eXBlcmxpbmsNCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCWNvbG9yOmJsdWU7DQoJdGV4dC1k ZWNvcmF0aW9uOnVuZGVybGluZTt9DQphOnZpc2l0ZWQsIHNwYW4uTXNvSHlwZXJsaW5rRm9sbG93 ZWQNCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCWNvbG9yOnB1cnBsZTsNCgl0ZXh0LWRlY29y YXRpb246dW5kZXJsaW5lO30NCnANCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCW1zby1tYXJn aW4tdG9wLWFsdDphdXRvOw0KCW1hcmdpbi1yaWdodDowaW47DQoJbXNvLW1hcmdpbi1ib3R0b20t YWx0OmF1dG87DQoJbWFyZ2luLWxlZnQ6MGluOw0KCWZvbnQtc2l6ZToxMi4wcHQ7DQoJZm9udC1m YW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7DQoJY29sb3I6YmxhY2s7fQ0KcHJlDQoJe21z by1zdHlsZS1wcmlvcml0eTo5OTsNCgltc28tc3R5bGUtbGluazoiSFRNTCBQcmVmb3JtYXR0ZWQg Q2hhciI7DQoJbWFyZ2luOjBpbjsNCgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7DQoJZm9udC1zaXpl OjEwLjBwdDsNCglmb250LWZhbWlseToiQ291cmllciBOZXciOw0KCWNvbG9yOmJsYWNrO30NCnAu bXNvbm9ybWFsMCwgbGkubXNvbm9ybWFsMCwgZGl2Lm1zb25vcm1hbDANCgl7bXNvLXN0eWxlLW5h bWU6bXNvbm9ybWFsOw0KCW1zby1tYXJnaW4tdG9wLWFsdDphdXRvOw0KCW1hcmdpbi1yaWdodDow aW47DQoJbXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87DQoJbWFyZ2luLWxlZnQ6MGluOw0KCWZv bnQtc2l6ZToxMi4wcHQ7DQoJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7DQoJ Y29sb3I6YmxhY2s7fQ0Kc3Bhbi5IVE1MUHJlZm9ybWF0dGVkQ2hhcg0KCXttc28tc3R5bGUtbmFt ZToiSFRNTCBQcmVmb3JtYXR0ZWQgQ2hhciI7DQoJbXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCW1z by1zdHlsZS1saW5rOiJIVE1MIFByZWZvcm1hdHRlZCI7DQoJZm9udC1mYW1pbHk6Q29uc29sYXM7 DQoJY29sb3I6YmxhY2s7fQ0Kc3Bhbi5FbWFpbFN0eWxlMjENCgl7bXNvLXN0eWxlLXR5cGU6cGVy c29uYWwtcmVwbHk7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7DQoJY29sb3I6 d2luZG93dGV4dDt9DQouTXNvQ2hwRGVmYXVsdA0KCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25s eTsNCglmb250LXNpemU6MTAuMHB0O30NCkBwYWdlIFdvcmRTZWN0aW9uMQ0KCXtzaXplOjguNWlu IDExLjBpbjsNCgltYXJnaW46MS4waW4gMS4waW4gMS4waW4gMS4waW47fQ0KZGl2LldvcmRTZWN0 aW9uMQ0KCXtwYWdlOldvcmRTZWN0aW9uMTt9DQovKiBMaXN0IERlZmluaXRpb25zICovDQpAbGlz dCBsMA0KCXttc28tbGlzdC1pZDoxMTU3MzAyMTMwOw0KCW1zby1saXN0LXRlbXBsYXRlLWlkczot MTY1MDQxMjg2ODt9DQpAbGlzdCBsMDpsZXZlbDENCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6 YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Ou+CtzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6LjVpbjsN Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0K CW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7DQoJZm9udC1mYW1pbHk6U3ltYm9sO30NCkBsaXN0 IGwwOmxldmVsMg0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVs LXRleHQ6bzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6MS4waW47DQoJbXNvLWxldmVsLW51bWJlci1w b3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0uMjVpbjsNCgltc28tYW5zaS1mb250LXNpemU6 MTAuMHB0Ow0KCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7DQoJbXNvLWJpZGktZm9udC1mYW1p bHk6IlRpbWVzIE5ldyBSb21hbiI7fQ0KQGxpc3QgbDA6bGV2ZWwzDQoJe21zby1sZXZlbC1udW1i ZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDrvgqc7DQoJbXNvLWxldmVsLXRhYi1z dG9wOjEuNWluOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVu dDotLjI1aW47DQoJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsNCglmb250LWZhbWlseTpXaW5n ZGluZ3M7fQ0KQGxpc3QgbDA6bGV2ZWw0DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxl dDsNCgltc28tbGV2ZWwtdGV4dDrvgqc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOw0KCW1z by1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotLjI1aW47DQoJbXNv LWFuc2ktZm9udC1zaXplOjEwLjBwdDsNCglmb250LWZhbWlseTpXaW5nZGluZ3M7fQ0KQGxpc3Qg bDA6bGV2ZWw1DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwt dGV4dDrvgqc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOjIuNWluOw0KCW1zby1sZXZlbC1udW1iZXIt cG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotLjI1aW47DQoJbXNvLWFuc2ktZm9udC1zaXpl OjEwLjBwdDsNCglmb250LWZhbWlseTpXaW5nZGluZ3M7fQ0KQGxpc3QgbDA6bGV2ZWw2DQoJe21z by1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDrvgqc7DQoJbXNv LWxldmVsLXRhYi1zdG9wOjMuMGluOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsN Cgl0ZXh0LWluZGVudDotLjI1aW47DQoJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsNCglmb250 LWZhbWlseTpXaW5nZGluZ3M7fQ0KQGxpc3QgbDA6bGV2ZWw3DQoJe21zby1sZXZlbC1udW1iZXIt Zm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDrvgqc7DQoJbXNvLWxldmVsLXRhYi1zdG9w OjMuNWluOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDot LjI1aW47DQoJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsNCglmb250LWZhbWlseTpXaW5nZGlu Z3M7fQ0KQGxpc3QgbDA6bGV2ZWw4DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsN Cgltc28tbGV2ZWwtdGV4dDrvgqc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOjQuMGluOw0KCW1zby1s ZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotLjI1aW47DQoJbXNvLWFu c2ktZm9udC1zaXplOjEwLjBwdDsNCglmb250LWZhbWlseTpXaW5nZGluZ3M7fQ0KQGxpc3QgbDA6 bGV2ZWw5DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4 dDrvgqc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOjQuNWluOw0KCW1zby1sZXZlbC1udW1iZXItcG9z aXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotLjI1aW47DQoJbXNvLWFuc2ktZm9udC1zaXplOjEw LjBwdDsNCglmb250LWZhbWlseTpXaW5nZGluZ3M7fQ0KQGxpc3QgbDENCgl7bXNvLWxpc3QtaWQ6 MTMyNDEyMTYwODsNCgltc28tbGlzdC10ZW1wbGF0ZS1pZHM6LTE3ODIxNTg2MzQ7fQ0KQGxpc3Qg bDE6bGV2ZWwxDQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwt dGV4dDrvgrc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOi41aW47DQoJbXNvLWxldmVsLW51bWJlci1w b3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0uMjVpbjsNCgltc28tYW5zaS1mb250LXNpemU6 MTAuMHB0Ow0KCWZvbnQtZmFtaWx5OlN5bWJvbDt9DQpAbGlzdCBsMTpsZXZlbDINCgl7bXNvLWxl dmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0Ow0KCW1zby1sZXZlbC10ZXh0Om87DQoJbXNvLWxldmVs LXRhYi1zdG9wOjEuMGluOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0 LWluZGVudDotLjI1aW47DQoJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsNCglmb250LWZhbWls eToiQ291cmllciBOZXciOw0KCW1zby1iaWRpLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4i O30NCkBsaXN0IGwxOmxldmVsMw0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJ bXNvLWxldmVsLXRleHQ674KnOw0KCW1zby1sZXZlbC10YWItc3RvcDoxLjVpbjsNCgltc28tbGV2 ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCW1zby1hbnNp LWZvbnQtc2l6ZToxMC4wcHQ7DQoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0IGwxOmxl dmVsNA0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ6 74KnOw0KCW1zby1sZXZlbC10YWItc3RvcDoyLjBpbjsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0 aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4w cHQ7DQoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0IGwxOmxldmVsNQ0KCXttc28tbGV2 ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674KnOw0KCW1zby1sZXZl bC10YWItc3RvcDoyLjVpbjsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4 dC1pbmRlbnQ6LS4yNWluOw0KCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7DQoJZm9udC1mYW1p bHk6V2luZ2RpbmdzO30NCkBsaXN0IGwxOmxldmVsNg0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1h dDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674KnOw0KCW1zby1sZXZlbC10YWItc3RvcDozLjBp bjsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWlu Ow0KCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7DQoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30N CkBsaXN0IGwxOmxldmVsNw0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNv LWxldmVsLXRleHQ674KnOw0KCW1zby1sZXZlbC10YWItc3RvcDozLjVpbjsNCgltc28tbGV2ZWwt bnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCW1zby1hbnNpLWZv bnQtc2l6ZToxMC4wcHQ7DQoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0IGwxOmxldmVs OA0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674Kn Ow0KCW1zby1sZXZlbC10YWItc3RvcDo0LjBpbjsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9u OmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7 DQoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0IGwxOmxldmVsOQ0KCXttc28tbGV2ZWwt bnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674KnOw0KCW1zby1sZXZlbC10 YWItc3RvcDo0LjVpbjsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1p bmRlbnQ6LS4yNWluOw0KCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7DQoJZm9udC1mYW1pbHk6 V2luZ2RpbmdzO30NCkBsaXN0IGwyDQoJe21zby1saXN0LWlkOjE4MjM1MDQwMjE7DQoJbXNvLWxp c3QtdGVtcGxhdGUtaWRzOi0yNjA5NjA4ODA7fQ0KQGxpc3QgbDI6bGV2ZWwxDQoJe21zby1sZXZl bC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDrvgrc7DQoJbXNvLWxldmVs LXRhYi1zdG9wOi41aW47DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQt aW5kZW50Oi0uMjVpbjsNCgltc28tYW5zaS1mb250LXNpemU6MTAuMHB0Ow0KCWZvbnQtZmFtaWx5 OlN5bWJvbDt9DQpAbGlzdCBsMjpsZXZlbDINCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVs bGV0Ow0KCW1zby1sZXZlbC10ZXh0Om87DQoJbXNvLWxldmVsLXRhYi1zdG9wOjEuMGluOw0KCW1z by1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotLjI1aW47DQoJbXNv LWFuc2ktZm9udC1zaXplOjEwLjBwdDsNCglmb250LWZhbWlseToiQ291cmllciBOZXciOw0KCW1z by1iaWRpLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30NCkBsaXN0IGwyOmxldmVsMw0K CXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674KnOw0K CW1zby1sZXZlbC10YWItc3RvcDoxLjVpbjsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxl ZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7DQoJ Zm9udC1mYW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0IGwyOmxldmVsNA0KCXttc28tbGV2ZWwtbnVt YmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674KnOw0KCW1zby1sZXZlbC10YWIt c3RvcDoyLjBpbjsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRl bnQ6LS4yNWluOw0KCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7DQoJZm9udC1mYW1pbHk6V2lu Z2RpbmdzO30NCkBsaXN0IGwyOmxldmVsNQ0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxs ZXQ7DQoJbXNvLWxldmVsLXRleHQ674KnOw0KCW1zby1sZXZlbC10YWItc3RvcDoyLjVpbjsNCglt c28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCW1z by1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7DQoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0 IGwyOmxldmVsNg0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVs LXRleHQ674KnOw0KCW1zby1sZXZlbC10YWItc3RvcDozLjBpbjsNCgltc28tbGV2ZWwtbnVtYmVy LXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCW1zby1hbnNpLWZvbnQtc2l6 ZToxMC4wcHQ7DQoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0IGwyOmxldmVsNw0KCXtt c28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674KnOw0KCW1z by1sZXZlbC10YWItc3RvcDozLjVpbjsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7 DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7DQoJZm9u dC1mYW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0IGwyOmxldmVsOA0KCXttc28tbGV2ZWwtbnVtYmVy LWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ674KnOw0KCW1zby1sZXZlbC10YWItc3Rv cDo0LjBpbjsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6 LS4yNWluOw0KCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7DQoJZm9udC1mYW1pbHk6V2luZ2Rp bmdzO30NCkBsaXN0IGwyOmxldmVsOQ0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7 DQoJbXNvLWxldmVsLXRleHQ674KnOw0KCW1zby1sZXZlbC10YWItc3RvcDo0LjVpbjsNCgltc28t bGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCW1zby1h bnNpLWZvbnQtc2l6ZToxMC4wcHQ7DQoJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30NCkBsaXN0IGwz DQoJe21zby1saXN0LWlkOjIwNjc2MDExMDk7DQoJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOjg1NTI0 NDg5Njt9DQpAbGlzdCBsMzpsZXZlbDENCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0 Ow0KCW1zby1sZXZlbC10ZXh0Ou+CtzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6LjVpbjsNCgltc28t bGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluOw0KCW1zby1h bnNpLWZvbnQtc2l6ZToxMC4wcHQ7DQoJZm9udC1mYW1pbHk6U3ltYm9sO30NCkBsaXN0IGwzOmxl dmVsMg0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7DQoJbXNvLWxldmVsLXRleHQ6 bzsNCgltc28tbGV2ZWwtdGFiLXN0b3A6MS4waW47DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlv bjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0uMjVpbjsNCgltc28tYW5zaS1mb250LXNpemU6MTAuMHB0 Ow0KCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7DQoJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRp bWVzIE5ldyBSb21hbiI7fQ0KQGxpc3QgbDM6bGV2ZWwzDQoJe21zby1sZXZlbC1udW1iZXItZm9y bWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDrvgqc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOjEu NWluOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotLjI1 aW47DQoJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsNCglmb250LWZhbWlseTpXaW5nZGluZ3M7 fQ0KQGxpc3QgbDM6bGV2ZWw0DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCglt c28tbGV2ZWwtdGV4dDrvgqc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOw0KCW1zby1sZXZl bC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotLjI1aW47DQoJbXNvLWFuc2kt Zm9udC1zaXplOjEwLjBwdDsNCglmb250LWZhbWlseTpXaW5nZGluZ3M7fQ0KQGxpc3QgbDM6bGV2 ZWw1DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDrv gqc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOjIuNWluOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRp b246bGVmdDsNCgl0ZXh0LWluZGVudDotLjI1aW47DQoJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBw dDsNCglmb250LWZhbWlseTpXaW5nZGluZ3M7fQ0KQGxpc3QgbDM6bGV2ZWw2DQoJe21zby1sZXZl bC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDrvgqc7DQoJbXNvLWxldmVs LXRhYi1zdG9wOjMuMGluOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0 LWluZGVudDotLjI1aW47DQoJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsNCglmb250LWZhbWls eTpXaW5nZGluZ3M7fQ0KQGxpc3QgbDM6bGV2ZWw3DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0 OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDrvgqc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOjMuNWlu Ow0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotLjI1aW47 DQoJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsNCglmb250LWZhbWlseTpXaW5nZGluZ3M7fQ0K QGxpc3QgbDM6bGV2ZWw4DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28t bGV2ZWwtdGV4dDrvgqc7DQoJbXNvLWxldmVsLXRhYi1zdG9wOjQuMGluOw0KCW1zby1sZXZlbC1u dW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotLjI1aW47DQoJbXNvLWFuc2ktZm9u dC1zaXplOjEwLjBwdDsNCglmb250LWZhbWlseTpXaW5nZGluZ3M7fQ0KQGxpc3QgbDM6bGV2ZWw5 DQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsNCgltc28tbGV2ZWwtdGV4dDrvgqc7 DQoJbXNvLWxldmVsLXRhYi1zdG9wOjQuNWluOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246 bGVmdDsNCgl0ZXh0LWluZGVudDotLjI1aW47DQoJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsN Cglmb250LWZhbWlseTpXaW5nZGluZ3M7fQ0Kb2wNCgl7bWFyZ2luLWJvdHRvbTowaW47fQ0KdWwN Cgl7bWFyZ2luLWJvdHRvbTowaW47fQ0KLS0+PC9zdHlsZT48IS0tW2lmIGd0ZSBtc28gOV0+PHht bD4NCjxvOnNoYXBlZGVmYXVsdHMgdjpleHQ9ImVkaXQiIHNwaWRtYXg9IjEwMjYiIC8+DQo8L3ht bD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCjxvOnNoYXBlbGF5b3V0IHY6 ZXh0PSJlZGl0Ij4NCjxvOmlkbWFwIHY6ZXh0PSJlZGl0IiBkYXRhPSIxIiAvPg0KPC9vOnNoYXBl bGF5b3V0PjwveG1sPjwhW2VuZGlmXS0tPg0KPC9oZWFkPg0KPGJvZHkgYmdjb2xvcj0id2hpdGUi IGxhbmc9IkVOLVVTIiBsaW5rPSJibHVlIiB2bGluaz0icHVycGxlIj4NCjxkaXYgY2xhc3M9Ildv cmRTZWN0aW9uMSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXpl OjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6 d2luZG93dGV4dCI+UGVyc29uYWxseSBJIGRvbuKAmXQgdGhpbmsgYW5zaWJsZSBhbmQgb3ZpcnQt c2hlbGwgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWls eTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6d2luZG93dGV4dCI+VGhvc2Ug d2hvIGFyZSBpbiBhbnNpYmxlIGFuZCBkZXZvcHMgcmVhbG1zIGFyZSBub3QgcmVhbGx5IHNjYXJl ZCBieSBtYWtpbmcgcHl0aG9uL2Fuc2libGUgd29yayB3aXRoIG92aXJ0LjxvOnA+PC9vOnA+PC9z cGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEu MHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjp3aW5k b3d0ZXh0Ij5Gcm9tIHdoYXQgSSBnYXRoZXIsIHBsYXlib29rcyBhcmUgcXVpdGUgYSBkZS1mYWN0 byBwcmUtcmVxdWlzaXRlIHRvIGJ1aWxkIHVwIGEgcmVhbCBTYWFDIOKAnFNvZnR3YXJlIGFzIGEg Q29kZeKAnSBlbnZpcm9ubWVudC48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtD YWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6d2luZG93dGV4dCI+PG86cD4mbmJzcDs8L286 cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9y OndpbmRvd3RleHQiPk9uIHRoZSBvdGhlciBoYW5kLCBvdmlydC1zaGVsbCBjYW4gYW5kIGlzIGEg ZmFzdC9lYXN5IHdheSB0byBwZXJmb3JtIOKAnG5vcm1hbCBkYWlseSB0YXNrc+KAnS48bzpwPjwv bzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1z aXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29s b3I6d2luZG93dGV4dCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7 Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOndpbmRvd3RleHQiPkFzIGxvbmcgYXMgd2Ug aGF2ZSBnb29kIGRvY3VtZW50YXRpb24gYWJvdXQgaG93IHRvIGRvIHRoaW5ncywgY2FuIHdlIGhh dmUgYW5kIHN1cHBvcnQgYm90aD88bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtD YWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6d2luZG93dGV4dCI+Q2hlZXJzPG86cD48L286 cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9y OndpbmRvd3RleHQiPkFuZHJlYTxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29O b3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0Nh bGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjp3aW5kb3d0ZXh0Ij48bzpwPiZuYnNwOzwvbzpw Pjwvc3Bhbj48L3A+DQo8ZGl2Pg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDpz b2xpZCAjRTFFMUUxIDEuMHB0O3BhZGRpbmc6My4wcHQgMGluIDBpbiAwaW4iPg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6 JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOndpbmRvd3RleHQiPkZyb206PC9z cGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtD YWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6d2luZG93dGV4dCI+IHVzZXJzLWJvdW5jZXNA b3ZpcnQub3JnIFttYWlsdG86dXNlcnMtYm91bmNlc0BvdmlydC5vcmddDQo8Yj5PbiBCZWhhbGYg T2YgPC9iPk5hdGhhbmHDq2wgQmxhbmNoZXQ8YnI+DQo8Yj5TZW50OjwvYj4gVHVlc2RheSwgSmFu dWFyeSAzLCAyMDE3IDc6NDEgUE08YnI+DQo8Yj5Ubzo8L2I+IERhbiBZYXNueSAmbHQ7ZHlhc255 QGdtYWlsLmNvbSZndDs8YnI+DQo8Yj5DYzo8L2I+IHVzZXJzICZsdDt1c2Vyc0BvdmlydC5vcmcm Z3Q7PGJyPg0KPGI+U3ViamVjdDo8L2I+IFJlOiBbb3ZpcnQtdXNlcnNdIFJlcXVlc3QgZm9yIG9W aXJ0IEFuc2libGUgbW9kdWxlcyB0ZXN0aW5nIGZlZWRiYWNrPG86cD48L286cD48L3NwYW4+PC9w Pg0KPC9kaXY+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+ PC9wPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPkxlIDMwLzEyLzIwMTYgw6AgMjA6NTMs IERhbiBZYXNueSBhIMOpY3JpdCZuYnNwOzo8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGJsb2Nr cXVvdGUgc3R5bGU9Im1hcmdpbi10b3A6NS4wcHQ7bWFyZ2luLWJvdHRvbTo1LjBwdCI+DQo8ZGl2 Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+SSBwZXJzb25hbGx5IGZvdW5kIHRoYXQgc2hlJ2xsIGlz bid0IGFzIHVzZWZ1bCBhcyB0aGUgcHl0aG9uIHNkay4gSSB1c3VhbGx5IG9wZW4gdXAgaXB5dGhv biwgbG9hZCB0aGUgc2RrIGFuZCBpbnRlcmFjdCB3aXRoIG92aXJ0IGRpcmVjdGx5LiBUaGlzIGlz IGZhc3RlciBhbmQgbXVjaCBtb3JlIHBvd2VyZnVsIHRoYW4gdGhlIHNoZWxsIGNvdWxkIGV2ZXIg YmUuDQo8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9ibG9ja3F1b3RlPg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+b2theSwgSSBzdXBwb3NlIHlvdSB0byBiZSBhIHJlZ3VsYXIgcHl0aG9uIHVzZXIu IENhbiB5b3UgaW1hZ2luZSBob3cgbXVjaCB0aW1lIEkgc3BlbnQganVzdCB0byB1bmRlcnN0YW5k IGhvdyBpdCB3b3Jrcz8NCjxicj4NClRoYXQgaXMgdG8gc2F5OjxvOnA+PC9vOnA+PC9wPg0KPHVs IHR5cGU9ImRpc2MiPg0KPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRv cC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0bzttc28tbGlzdDpsMSBsZXZlbDEg bGZvMSI+DQppbnN0YWxsaW5nIHBpcCBhbmQgbm90IHBpcDMgYmVjYXVzZSBwcm92aWRlZCBweXRo b24tb3ZpcnQtZW5naW5lLXNkazQgaXMgZGVmYXVsdCBpbnN0YWxsZWQgdG8gL3Vzci9saWI2NC9w eXRob24yLjcsDQo8bzpwPjwvbzpwPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJt c28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0bzttc28tbGlz dDpsMSBsZXZlbDEgbGZvMSI+DQppbnN0YWxsaW5nIGlweXRob24sIDxvOnA+PC9vOnA+PC9saT48 bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1t YXJnaW4tYm90dG9tLWFsdDphdXRvO21zby1saXN0OmwxIGxldmVsMSBsZm8xIj4NCmltcG9ydGlu ZyB0aGUgZ29vZCBtb2R1bGVzLCA8bzpwPjwvbzpwPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwi IHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0 bzttc28tbGlzdDpsMSBsZXZlbDEgbGZvMSI+DQpmaW5kaW5nIHBlcnRpbmVudCBleGFtcGxlcywg PG86cD48L286cD48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10 b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87bXNvLWxpc3Q6bDEgbGV2ZWwx IGxmbzEiPg0KdW5kZXJzdGFuZCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHNkazMgYW5kIDQgPG86cD48 L286cD48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0 OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87bXNvLWxpc3Q6bDEgbGV2ZWwxIGxmbzEi Pg0KY29ycmVjdGluZyBzb21lIHdyb25nIGV4YW1wbGVzPG86cD48L286cD48L2xpPjxsaSBjbGFz cz0iTXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1i b3R0b20tYWx0OmF1dG87bXNvLWxpc3Q6bDEgbGV2ZWwxIGxmbzEiPg0KYWRhcHRpbmcgZXhhbXBs ZSB0byBteSBuZWVkPzxvOnA+PC9vOnA+PC9saT48L3VsPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+ SSBjYW4ndCBzZWUgaG93IGl0IGNhbiBiZSBmYXN0IGZvciB0aGUgbmV3YmllLjxicj4NCldoYXQn cyB0aGUgZmlyc3QgZ29hbCBvZiBhIENMST8gdG8gYWJzdHJhY3QgYWxsIHRoaXMgc3R1ZmYgZm9y IHRoZSBweXRob24gbmV3YmllLiBJZiB5b3Ugd2FudCBhIGVhc3ktdG8tdXNlIHdlYmFkbWluIGZv ciBhdHRyYWN0aW5nIGEgbGFyZ2UgcHVibGljLCB5b3Ugc2hvdWxkIHByb3ZpZGUgZWFzeS10by11 c2UgQ0xJIGFzIHdlbGwuIE92aXJ0LXNoZWxsIHdhcyBhIHBhcnQgb2YgbXkgY2hvaWNlIHRvIHVz ZSBvdmlydC48YnI+DQpZZXMgd2UgY2FuIGxlYXJuIHRvIHVzZSBTREsgKEkgZGl0IGl0KSwgYnV0 IEkgZG9uJ3QgdGhpbmsgYSBsb3QgcGVvcGxlIHdobyBjaG9zZSBvdmlydCBmb3Igc2ltcGxpY2l0 eSB3bGwgdXNlIGl0IGV4Y2VwdCBhZHZhbmNlZCB1c2Vycy48YnI+DQpBIG5ldyB0aW1lLCB0aGFu ayB5b3UgZm9yIHRoZSBncmVhdCBzdHVmZiBmb3IgdGhlIGdyZWF0IG9WaXJ0IHByb2plY3QsIGJ1 dCBJIGZpbmQgdGhlcmUgaXMgdG9vIG11Y2ggZGlzdGFuY2UgYmV0d2VlbiBkZXZzIGFuZCB1c2Vy cy48YnI+DQpXaGF0IGRvIHJlYWxseSB0aGluayB0aGUgY29tbXVuaXR5IGFib3V0IHRoaXM/PGJy Pg0KPGJyPg0KPG86cD48L286cD48L3A+DQo8YmxvY2txdW90ZSBzdHlsZT0ibWFyZ2luLXRvcDo1 LjBwdDttYXJnaW4tYm90dG9tOjUuMHB0Ij4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48 bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5PbiBEZWMg MzAsIDIwMTYgMTE6MjIgQU0sICZxdW90O05hdGhhbmHDq2wgQmxhbmNoZXQmcXVvdDsgJmx0Ozxh IGhyZWY9Im1haWx0bzpibGFuY2hldEBhYmVzLmZyIj5ibGFuY2hldEBhYmVzLmZyPC9hPiZndDsg d3JvdGU6PG86cD48L286cD48L3A+DQo8YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9y ZGVyLWxlZnQ6c29saWQgI0NDQ0NDQyAxLjBwdDtwYWRkaW5nOjBpbiAwaW4gMGluIDYuMHB0O21h cmdpbi1sZWZ0OjQuOHB0O21hcmdpbi1yaWdodDowaW4iPg0KPGRpdj4NCjxwPkludGVyZXN0aW5n IHdvcmsgYW5kIHRoYW5rIHlvdSBmb3IgdGhpcyBzdHVmZi4gSSBwbGF5ZWQgd2l0aCBzb21lIG1v ZHVsZXMgKG92aXJ0X3Ztc19mYWN0cykgdG8gZ2V0IHNvbWUgdm1zIG5hbWUgZm9yIGV4YW1wbGUu PG86cD48L286cD48L3A+DQo8dWwgdHlwZT0iZGlzYyI+DQo8bGkgY2xhc3M9Ik1zb05vcm1hbCIg c3R5bGU9Im1zby1tYXJnaW4tdG9wLWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDphdXRv O21zby1saXN0OmwzIGxldmVsMSBsZm8yIj4NCltyb290QGFjb3JlIG92aXJ0XSMgYW5zaWJsZS1w bGF5Ym9vayBBbGxfVm1zX2xpc3QueW1sICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyA8bzpwPjwvbzpwPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJt c28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0bzttc28tbGlz dDpsMyBsZXZlbDEgbGZvMiI+DQp3aXRoIDxicj4NCiZuYnNwOyAtIG5hbWU6IExpc3Qgdm1zPGJy Pg0KJm5ic3A7Jm5ic3A7Jm5ic3A7IG92aXJ0X3Ztc19mYWN0czo8YnI+DQombmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgYXV0aDogJnF1b3Q7e3sgb3ZpcnRfYXV0aCB9fSZxdW90Ozxicj4N CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBwYXR0ZXJuOiBuYW1lPXRlc3RfY2xvdWQ8 YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyBmZXRjaF9uZXN0ZWQ6IHRydWU8YnI+DQombmJzcDsm bmJzcDsgJm5ic3A7Jm5ic3A7IG5lc3RlZF9hdHRyaWJ1dGVzOiBuYW1lPGJyPg0KJm5ic3A7Jm5i c3A7Jm5ic3A7IHJlZ2lzdGVyOiBvdmlydF92bXM8YnI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgPGJyPg0KJm5ic3A7IC0gc2hlbGw6IGVjaG8gJnF1b3Q7e3sgPGEgaHJlZj0iaHR0cDovL292 aXJ0X3Ztcy5uYW1lIiB0YXJnZXQ9Il9ibGFuayI+b3ZpcnRfdm1zLm5hbWU8L2E+IH19ICZndDsg dm1zX25hbWUmcXVvdDsgLy8gZG9lc24ndCB3b3JrPG86cD48L286cD48L2xpPjwvdWw+DQo8dWwg dHlwZT0iZGlzYyI+DQo8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1zby1tYXJnaW4tdG9w LWFsdDphdXRvO21zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvO21zby1saXN0OmwyIGxldmVsMSBs Zm8zIj4NCiZuYnNwOyAtIHNoZWxsOiBlY2hvICZxdW90O3t7IG92aXJ0X3ZtcyB9fSAmZ3Q7IHZt c19uYW1lIC8vIHJldHVybnMgYW4gdW5pY29kZSBqc29uIGZpbGUsIHRoYXQncyBzdXJlbHkgd2h5 IHdlIGNhbid0IHBhcnNlIGl0LiBDYW4geW91IGhlbHAgbWUgdG8gc29sdmUgdGhpcyBpbnRvIHRo ZSBvdmlydF92bXNfZmFjdHMucHkgZmlsZT88bzpwPjwvbzpwPjwvbGk+PC91bD4NCjx1bCB0eXBl PSJkaXNjIj4NCjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0 OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87bXNvLWxpc3Q6bDAgbGV2ZWwxIGxmbzQi Pg0KSSBoYXZlIG5vIHN1Y2ggcHJvYmxlbSB3aXRoIG92aXJ0X3NuYXBob3RzX21vZHVsZSBhbmQg SSBjYW4gZWFzaWx5IGdldCB0aGUgPGEgaHJlZj0iaHR0cDovL3NuYXBob3QuaWQiIHRhcmdldD0i X2JsYW5rIj4NCnNuYXBob3QuaWQ8L2E+IHZhcmlhYmxlLi4uLiBidXQ6PG86cD48L286cD48L2xp PjwvdWw+DQo8dWwgdHlwZT0iZGlzYyI+DQo8dWwgdHlwZT0iY2lyY2xlIj4NCjxsaSBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0ibXNvLW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0 b20tYWx0OmF1dG87bXNvLWxpc3Q6bDAgbGV2ZWwyIGxmbzQiPg0KSSBoYWQgdG8gbWFudWFsbHkg Y29weSB0aGUgb3ZpcnRfc25hcGhzb3RzX21vZHVsZSBiZWNhdXNlIGl0IGlzIG5vdCBwcmVzZW50 IG9uIHRoZSBnaXQgdHJlZS4gVGhpcyBpcyB2ZXJ5IGN1cmlvdXM6IHdlIGNhbiBmaW5kIGl0IGhl cmUNCjxhIGhyZWY9Imh0dHA6Ly9vdmlydC1hbnNpYmxlLW1vZHVsZXMucmVhZHRoZWRvY3MuaW8v ZW4vbGF0ZXN0L19tb2R1bGVzL292aXJ0X3NuYXBzaG90c19tb2R1bGUuaHRtIiB0YXJnZXQ9Il9i bGFuayI+DQpodHRwOi8vb3ZpcnQtYW5zaWJsZS1tb2R1bGVzLnJlYWR0aGVkb2NzLmlvL2VuL2xh dGVzdC9fbW9kdWxlcy9vdmlydF9zbmFwc2hvdHNfbW9kdWxlLmh0bTwvYT4sIGJ1dCBpdCBpcyBu b3QgYXZhaWxhYmxlIG9uIHRoZSBtYWluIGFuc2libGUgZ2l0IHRyZS48bzpwPjwvbzpwPjwvbGk+ PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28t bWFyZ2luLWJvdHRvbS1hbHQ6YXV0bzttc28tbGlzdDpsMCBsZXZlbDIgbGZvNCI+DQpPbiB0aGUg ZG9jLCByZXR1cm4gdmFsdWVzIGFyZSBub3QgZGVzY3JpYmVkPG86cD48L286cD48L2xpPjwvdWw+ DQo8L3VsPg0KPHA+Rm9yIHRoZSBtb21lbnQsIG15IG9waW5pb24gaXMgdGhhdCBhbnNpYmxlIGNh bid0IGJlIGFzIG11Y2ggY29udmluaWVudCBhcyB0aGUgY3VycmVudCBDTEksIGUuZy4gb3ZpcnQt c2hlbGwgLUUgJnF1b3Q7bGlzdCB2bXMmcXVvdDssIG91dCBvZiB0aGUgYm94LiBJcyB0aGVyZSBh IHJlYWxseSByZWFzb24gdG8gZGVwcmVjYXRlIGl0PzxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05v cm1hbCI+TGUgMDIvMTIvMjAxNiDDoCAxNDoxMiwgT25kcmEgTWFjaGFjZWsgYSDDqWNyaXQmbmJz cDs6PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxibG9ja3F1b3RlIHN0eWxlPSJtYXJnaW4tdG9w OjUuMHB0O21hcmdpbi1ib3R0b206NS4wcHQiPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+SGVsbG8g YWxsLCA8YnI+DQo8YnI+DQpJIHdvdWxkIGxpa2UgdG8ga2luZGx5IGFzayBldmVyeW9uZSB3aG8g aXMgQW5zaWJsZSBvciBvVmlydCB1c2VyIGZvciA8YnI+DQp0ZXN0aW5nIG9mIHRoZSBuZXcgQW5z aWJsZSBvVmlydCBtb2R1bGVzLiBGb3IgZXZlcnlvbmUgd2hvIGlzIGZhbWlsaWFyIDxicj4NCndp dGggdGhlIEFuc2libGUgYW5kIG9WaXJ0LCB0aGlzWzFdIGRlc2NyaWJlcyB0aGUgc3RlcHMgeW91 IG5lZWQgdG8gZG8sIDxicj4NCnRvIHNldHVwIG9WaXJ0IG1vZHVsZXMgbGlicmFyeSBhbmQgc3Rh cnQgdXNpbmcgdGhvc2UgbW9kdWxlcyAoTW9zdCBvZiB0aG9zZSBtb2R1bGVzIHdpbGwgYmUgYXZh aWxhYmxlIGluIEFuc2libGUgMi4zLCBzb21lIG9mIHRoZW0gYXJlIGFscmVhZHkgaW4gMi4yKS4N Cjxicj4NCjxicj4NCklmIHlvdSBoYXZlIGFueSBpc3N1ZSBzZXR0aW5nIHRoaXMgdXAsIHBsZWFz ZSBjb250YWN0IG1lLCBJIHdpbGwgZG8gdGhlIDxicj4NCmJlc3QgdG8gaGVscCB5b3UuIDxicj4N Cjxicj4NCklmIHlvdSBoYXZlIGFuIGlzc3VlLCB3aGljaCB5b3UgdGhpbmsgaXMgYSBidWcsIHBs ZWFzZSBvcGVuIGFuIGlzc3VlIDxicj4NCmhlcmVbMl0uIFBsZWFzZSBub3RlIHRoYXQgQW5zaWJs ZSBpcyBtZXJnaW5nIGl0J3MgcmVwb3NpdG9yaWVzLCBzbyBzaW5jZSA8YnI+DQpuZXh0IHdlZWsg aXQgd2lsbCBhY3R1YWxseSBiZSBzdG9yZWQgaGVyZVszXS4gSWYgeW91IGFyZSBtaXNzaW5nIDxi cj4NCmFueXRoaW5nIHBsZWFzZSBvcGVuIGFuIGlzc3VlIGFzIHdlbGwsIG9yIGp1c3QgY29udGFj dCBtZSwgYW5kIEkgd2lsbCA8YnI+DQpkbyBmaXggaXQuIFlvdSBhcmUgYWxzbyB2ZXJ5IHdlbGNv bWUgdG8gc2VudCBQUiB3aXRoIGZpeGVzLiA8YnI+DQo8YnI+DQpGb3IgdGhvc2Ugd2hvIGRvbid0 IGhhdmUgdGVzdGluZyBlbnZpcm9ubWVudCB3aGljaCBjYW4gdGVzdCBhZ2FpbnN0LCA8YnI+DQpJ J3ZlIGNyZWF0ZWQgYW4gVmFncmFudCBwcm9qZWN0IHdoaWNoIHdpbGwgZGVwbG95IHlvdSB0aGUg b1ZpcnQgaW5zdGFuY2UgPGJyPg0KdXNpbmcgQW5zaWJsZSBwbGF5Ym9va3MuIFlvdSBjYW4gZmlu ZCBob3cgdG8gdXNlIGl0IGhlcmVbNF0uIDxicj4NCjxicj4NClRoZSByZXBvc2l0b3J5IGFsc28g Y29udGFpbnMgZmV3IGV4YW1wbGVzWzVdLCBzbyB5b3UgZG9uJ3QgaGF2ZSB0byA8YnI+DQpjb3B5 LXBhc3RlIHRoZW0gZnJvbSB0aGUgc291cmNlLiA8YnI+DQo8YnI+DQpUaGFua3MgYWxsIGZvciBy ZWFkaW5nIHRoaXMgYW5kIGFueSBmZWVkYmFjaywgPGJyPg0KT25kcmEgPGJyPg0KPGJyPg0KWzFd IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tYWNoYWNla29uZHJhL292aXJ0LXRlc3RzL3Jl bGVhc2VzL3RhZy8wLjEiIHRhcmdldD0iX2JsYW5rIj4NCmh0dHBzOi8vZ2l0aHViLmNvbS9tYWNo YWNla29uZHJhL292aXJ0LXRlc3RzL3JlbGVhc2VzL3RhZy8wLjE8L2E+IDxicj4NClsyXSA8YSBo cmVmPSJodHRwczovL2dpdGh1Yi5jb20vYW5zaWJsZS9hbnNpYmxlLW1vZHVsZXMtZXh0cmFzL2lz c3VlcyIgdGFyZ2V0PSJfYmxhbmsiPg0KaHR0cHM6Ly9naXRodWIuY29tL2Fuc2libGUvYW5zaWJs ZS1tb2R1bGVzLWV4dHJhcy9pc3N1ZXM8L2E+IDxicj4NClszXSA8YSBocmVmPSJodHRwczovL2dp dGh1Yi5jb20vYW5zaWJsZS9hbnNpYmxlIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9naXRodWIu Y29tL2Fuc2libGUvYW5zaWJsZTwvYT4NCjxicj4NCls0XSA8YSBocmVmPSJodHRwczovL2dpdGh1 Yi5jb20vbWFjaGFjZWtvbmRyYS9vdmlydC10ZXN0cyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8v Z2l0aHViLmNvbS9tYWNoYWNla29uZHJhL292aXJ0LXRlc3RzPC9hPg0KPGJyPg0KWzVdIDxhIGhy ZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tYWNoYWNla29uZHJhL292aXJ0LXRlc3RzL3RyZWUvbWFz dGVyL2V4YW1wbGVzIiB0YXJnZXQ9Il9ibGFuayI+DQpodHRwczovL2dpdGh1Yi5jb20vbWFjaGFj ZWtvbmRyYS9vdmlydC10ZXN0cy90cmVlL21hc3Rlci9leGFtcGxlczwvYT4gPGJyPg0KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gPGJyPg0KVXNlcnMgbWFp bGluZyBsaXN0IDxicj4NCjxhIGhyZWY9Im1haWx0bzpVc2Vyc0BvdmlydC5vcmciIHRhcmdldD0i X2JsYW5rIj5Vc2Vyc0BvdmlydC5vcmc8L2E+IDxicj4NCjxhIGhyZWY9Imh0dHA6Ly9saXN0cy5v dmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby91c2VycyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9s aXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby91c2VyczwvYT4NCjxvOnA+PC9vOnA+PC9w Pg0KPC9ibG9ja3F1b3RlPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGJyPg0KPGJyPg0KPG86cD48 L286cD48L3A+DQo8cHJlPi0tIDxvOnA+PC9vOnA+PC9wcmU+DQo8cHJlPk5hdGhhbmHDq2wgQmxh bmNoZXQ8bzpwPjwvbzpwPjwvcHJlPg0KPHByZT48bzpwPiZuYnNwOzwvbzpwPjwvcHJlPg0KPHBy ZT5TdXBlcnZpc2lvbiByw6lzZWF1PG86cD48L286cD48L3ByZT4NCjxwcmU+UMO0bGUgSW5mcmFz dHJ1dHVyZXMgSW5mb3JtYXRpcXVlczxvOnA+PC9vOnA+PC9wcmU+DQo8cHJlPjIyNyBhdmVudWUg UHJvZmVzc2V1ci1KZWFuLUxvdWlzLVZpYWxhPG86cD48L286cD48L3ByZT4NCjxwcmU+MzQxOTMg TU9OVFBFTExJRVIgQ0VERVggNSAmbmJzcDsmbmJzcDsmbmJzcDsgPG86cD48L286cD48L3ByZT4N CjxwcmU+VMOpbC4gMzMgKDApNCA2NyA1NCA4NCA1NTxvOnA+PC9vOnA+PC9wcmU+DQo8cHJlPkZh eCZuYnNwOyAzMyAoMCk0IDY3IDU0IDg0IDE0PG86cD48L286cD48L3ByZT4NCjxwcmU+PGEgaHJl Zj0ibWFpbHRvOmJsYW5jaGV0QGFiZXMuZnIiIHRhcmdldD0iX2JsYW5rIj5ibGFuY2hldEBhYmVz LmZyPC9hPiA8bzpwPjwvbzpwPjwvcHJlPg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBz dHlsZT0ibWFyZ2luLWJvdHRvbToxMi4wcHQiPjxicj4NCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fPGJyPg0KVXNlcnMgbWFpbGluZyBsaXN0PGJyPg0KPGEg aHJlZj0ibWFpbHRvOlVzZXJzQG92aXJ0Lm9yZyI+VXNlcnNAb3ZpcnQub3JnPC9hPjxicj4NCjxh IGhyZWY9Imh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby91c2VycyIgdGFy Z2V0PSJfYmxhbmsiPmh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby91c2Vy czwvYT48bzpwPjwvbzpwPjwvcD4NCjwvYmxvY2txdW90ZT4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Js b2NrcXVvdGU+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48YnI+DQo8YnI+DQo8bzpwPjwvbzpwPjwv cD4NCjxwcmU+LS0gPG86cD48L286cD48L3ByZT4NCjxwcmU+TmF0aGFuYcOrbCBCbGFuY2hldDxv OnA+PC9vOnA+PC9wcmU+DQo8cHJlPjxvOnA+Jm5ic3A7PC9vOnA+PC9wcmU+DQo8cHJlPlN1cGVy dmlzaW9uIHLDqXNlYXU8bzpwPjwvbzpwPjwvcHJlPg0KPHByZT5Qw7RsZSBJbmZyYXN0cnV0dXJl cyBJbmZvcm1hdGlxdWVzPG86cD48L286cD48L3ByZT4NCjxwcmU+MjI3IGF2ZW51ZSBQcm9mZXNz ZXVyLUplYW4tTG91aXMtVmlhbGE8bzpwPjwvbzpwPjwvcHJlPg0KPHByZT4zNDE5MyBNT05UUEVM TElFUiBDRURFWCA1ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8bzpwPjwvbzpwPjwvcHJlPg0K PHByZT5Uw6lsLiAzMyAoMCk0IDY3IDU0IDg0IDU1PG86cD48L286cD48L3ByZT4NCjxwcmU+RmF4 Jm5ic3A7IDMzICgwKTQgNjcgNTQgODQgMTQ8bzpwPjwvbzpwPjwvcHJlPg0KPHByZT48YSBocmVm PSJtYWlsdG86YmxhbmNoZXRAYWJlcy5mciI+YmxhbmNoZXRAYWJlcy5mcjwvYT4gPG86cD48L286 cD48L3ByZT4NCjwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPg0K --_000_CY4PR14MB16872F07318B2136C5CC851EE9610CY4PR14MB1687namp_--

This is a multi-part message in MIME format. --------------200A0996437076D3DE8EA6A3 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Le 04/01/2017 =C3=A0 10:09, Andrea Ghelardi a =C3=A9crit :
Personally I don=E2=80=99t think ansible and ovirt-shell are mutually e=
xclusive.
Those who are in ansible and devops realms are not really scared by=20 making python/ansible work with ovirt.
From what I gather, playbooks are quite a de-facto pre-requisite to=20 build up a real SaaC =E2=80=9CSoftware as a Code=E2=80=9D environment.
On the other hand, ovirt-shell can and is a fast/easy way to perform=20 =E2=80=9Cnormal daily tasks=E2=80=9D.
totally agree but ovirt-shell is deprecated in 4.1 et will be removed in=20 4.2. Ansible or sdk4 are proposed as an alternative.
As long as we have good documentation about how to do things, can we=20 have and support both?
Cheers
Andrea
*From:*users-bounces@ovirt.org [mailto:users-bounces@ovirt.org] *On=20 Behalf Of *Nathana=C3=ABl Blanchet *Sent:* Tuesday, January 3, 2017 7:41 PM *To:* Dan Yasny <dyasny@gmail.com> *Cc:* users <users@ovirt.org> *Subject:* Re: [ovirt-users] Request for oVirt Ansible modules testing=20 feedback
Le 30/12/2016 =C3=A0 20:53, Dan Yasny a =C3=A9crit :
I personally found that she'll isn't as useful as the python sdk. I usually open up ipython, load the sdk and interact with ovirt directly. This is faster and much more powerful than the shell could ever be.
okay, I suppose you to be a regular python user. Can you imagine how=20 much time I spent just to understand how it works? That is to say:
* installing pip and not pip3 because provided python-ovirt-engine-sdk4 is default installed to /usr/lib64/python2.7, * installing ipython, * importing the good modules, * finding pertinent examples, * understand differences between sdk3 and 4 * correcting some wrong examples * adapting example to my need?
I can't see how it can be fast for the newbie. What's the first goal of a CLI? to abstract all this stuff for the=20 python newbie. If you want a easy-to-use webadmin for attracting a=20 large public, you should provide easy-to-use CLI as well. Ovirt-shell=20 was a part of my choice to use ovirt. Yes we can learn to use SDK (I dit it), but I don't think a lot people=20 who chose ovirt for simplicity wll use it except advanced users. A new time, thank you for the great stuff for the great oVirt project,=20 but I find there is too much distance between devs and users. What do really think the community about this?
On Dec 30, 2016 11:22 AM, "Nathana=C3=ABl Blanchet" <blanchet@abes.=
fr
<mailto:blanchet@abes.fr>> wrote:
Interesting work and thank you for this stuff. I played with some modules (ovirt_vms_facts) to get some vms name for example=
.
* [root@acore ovirt]# ansible-playbook All_Vms_list.yml * with - name: List vms ovirt_vms_facts: auth: "{{ ovirt_auth }}" pattern: name=3Dtest_cloud fetch_nested: true nested_attributes: name register: ovirt_vms
- shell: echo "{{ ovirt_vms.name <http://ovirt_vms.name> }} > vms_name" // doesn't work
* - shell: echo "{{ ovirt_vms }} > vms_name // returns an unicode json file, that's surely why we can't parse it. Can you help me to solve this into the ovirt_vms_facts.py file?
* I have no such problem with ovirt_snaphots_module and I can easily get the snaphot.id <http://snaphot.id> variable.... but:
o I had to manually copy the ovirt_snaphsots_module because it is not present on the git tree. This is very curious: we can find it here http://ovirt-ansible-modules.readthedocs.io/en/latest/_=
modules/ovirt_snapshots_module.htm,
but it is not available on the main ansible git tre. o On the doc, return values are not described
For the moment, my opinion is that ansible can't be as much convinient as the current CLI, e.g. ovirt-shell -E "list vms", out of the box. Is there a really reason to deprecate it?
Le 02/12/2016 =C3=A0 14:12, Ondra Machacek a =C3=A9crit :
Hello all,
I would like to kindly ask everyone who is Ansible or oVirt user for testing of the new Ansible oVirt modules. For everyone who is familiar with the Ansible and oVirt, this[1] describes the steps you need to do, to setup oVirt modules library and start using those modules (Most of those modules will be available in Ansible 2.3, some of them are already in 2.2).
If you have any issue setting this up, please contact me, I will do the best to help you.
If you have an issue, which you think is a bug, please open an issue here[2]. Please note that Ansible is merging it's repositories, so since next week it will actually be stored here[3]. If you are missing anything please open an issue as well, or just contact me, and I will do fix it. You are also very welcome to sent PR with fixes.
For those who don't have testing environment which can test against, I've created an Vagrant project which will deploy you the oVirt instance using Ansible playbooks. You can find how to use it here[4]=
.
The repository also contains few examples[5], so you don't have to copy-paste them from the source.
Thanks all for reading this and any feedback, Ondra
[1] https://github.com/machacekondra/ovirt-tests/releases/tag/0=
.1
[2] https://github.com/ansible/ansible-modules-extras/issue=
s
[3] https://github.com/ansible/ansible [4] https://github.com/machacekondra/ovirt-tests [5] https://github.com/machacekondra/ovirt-tests/tree/master/ex=
amples
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users
--=20
Nathana=C3=ABl Blanchet
Supervision r=C3=A9seau
P=C3=B4le Infrastrutures Informatiques
227 avenue Professeur-Jean-Louis-Viala
34193 MONTPELLIER CEDEX 5
T=C3=A9l. 33 (0)4 67 54 84 55
Fax 33 (0)4 67 54 84 14
blanchet@abes.fr <mailto:blanchet@abes.fr> =20
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users
--=20 Nathana=C3=ABl Blanchet Supervision r=C3=A9seau P=C3=B4le Infrastrutures Informatiques 227 avenue Professeur-Jean-Louis-Viala 34193 MONTPELLIER CEDEX 5 T=C3=A9l. 33 (0)4 67 54 84 55 Fax 33 (0)4 67 54 84 14 blanchet@abes.fr <mailto:blanchet@abes.fr> =20
--=20 Nathana=C3=ABl Blanchet Supervision r=C3=A9seau P=C3=B4le Infrastrutures Informatiques 227 avenue Professeur-Jean-Louis-Viala 34193 MONTPELLIER CEDEX 5 =09 T=C3=A9l. 33 (0)4 67 54 84 55 Fax 33 (0)4 67 54 84 14 blanchet@abes.fr --------------200A0996437076D3DE8EA6A3 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable <html> <head> <meta content=3D"text/html; charset=3Dutf-8" http-equiv=3D"Content-Ty= pe"> </head> <body text=3D"#000000" bgcolor=3D"#FFFFFF"> <p><br> </p> <br> <div class=3D"moz-cite-prefix">Le 04/01/2017 =C3=A0 10:09, Andrea Ghe= lardi a =C3=A9crit=C2=A0:<br> </div> <blockquote cite=3D"mid:CY4PR14MB16872F07318B2136C5CC851EE9610@CY4PR14MB1687.namprd14= .prod.outlook.com" type=3D"cite"> <meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Du= tf-8"> <meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)"> <style><!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0;} @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4;} @font-face {font-family:Consolas; panose-1:2 11 6 9 2 2 4 3 2 4;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0in; margin-bottom:.0001pt; font-size:12.0pt; font-family:"Times New Roman",serif; color:black;} a:link, span.MsoHyperlink {mso-style-priority:99; color:blue; text-decoration:underline;} a:visited, span.MsoHyperlinkFollowed {mso-style-priority:99; color:purple; text-decoration:underline;} p {mso-style-priority:99; mso-margin-top-alt:auto; margin-right:0in; mso-margin-bottom-alt:auto; margin-left:0in; font-size:12.0pt; font-family:"Times New Roman",serif; color:black;} pre {mso-style-priority:99; mso-style-link:"HTML Preformatted Char"; margin:0in; margin-bottom:.0001pt; font-size:10.0pt; font-family:"Courier New"; color:black;} p.msonormal0, li.msonormal0, div.msonormal0 {mso-style-name:msonormal; mso-margin-top-alt:auto; margin-right:0in; mso-margin-bottom-alt:auto; margin-left:0in; font-size:12.0pt; font-family:"Times New Roman",serif; color:black;} span.HTMLPreformattedChar {mso-style-name:"HTML Preformatted Char"; mso-style-priority:99; mso-style-link:"HTML Preformatted"; font-family:Consolas; color:black;} span.EmailStyle21 {mso-style-type:personal-reply; font-family:"Calibri",sans-serif; color:windowtext;} .MsoChpDefault {mso-style-type:export-only; font-size:10.0pt;} @page WordSection1 {size:8.5in 11.0in; margin:1.0in 1.0in 1.0in 1.0in;} div.WordSection1 {page:WordSection1;} /* List Definitions */ @list l0 {mso-list-id:1157302130; mso-list-template-ids:-1650412868;} @list l0:level1 {mso-level-number-format:bullet; mso-level-text:=EF=82=B7; mso-level-tab-stop:.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l0:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:1.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l0:level3 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:1.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l0:level4 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:2.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l0:level5 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:2.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l0:level6 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:3.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l0:level7 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:3.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l0:level8 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:4.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l0:level9 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:4.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l1 {mso-list-id:1324121608; mso-list-template-ids:-1782158634;} @list l1:level1 {mso-level-number-format:bullet; mso-level-text:=EF=82=B7; mso-level-tab-stop:.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l1:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:1.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l1:level3 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:1.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l1:level4 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:2.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l1:level5 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:2.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l1:level6 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:3.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l1:level7 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:3.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l1:level8 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:4.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l1:level9 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:4.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l2 {mso-list-id:1823504021; mso-list-template-ids:-260960880;} @list l2:level1 {mso-level-number-format:bullet; mso-level-text:=EF=82=B7; mso-level-tab-stop:.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l2:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:1.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l2:level3 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:1.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l2:level4 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:2.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l2:level5 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:2.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l2:level6 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:3.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l2:level7 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:3.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l2:level8 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:4.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l2:level9 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:4.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l3 {mso-list-id:2067601109; mso-list-template-ids:855244896;} @list l3:level1 {mso-level-number-format:bullet; mso-level-text:=EF=82=B7; mso-level-tab-stop:.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l3:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:1.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l3:level3 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:1.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l3:level4 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:2.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l3:level5 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:2.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l3:level6 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:3.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l3:level7 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:3.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l3:level8 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:4.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l3:level9 {mso-level-number-format:bullet; mso-level-text:=EF=82=A7; mso-level-tab-stop:4.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} ol {margin-bottom:0in;} ul {margin-bottom:0in;} --></style><!--[if gte mso 9]><xml> <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" /> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext=3D"edit"> <o:idmap v:ext=3D"edit" data=3D"1" /> </o:shapelayout></xml><![endif]--> <div class=3D"WordSection1"> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif;colo= r:windowtext">Personally I don=E2=80=99t think ansible and ovirt-shell are mutually exclusive.<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif;colo= r:windowtext">Those who are in ansible and devops realms are not really scared by making python/ansible work with ovirt.<o:p></o:p></span></= p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif;colo= r:windowtext">From what I gather, playbooks are quite a de-facto pre-requisite to build up a real SaaC =E2=80=9CSoftware as a Code=E2=80=9D = environment.<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif;colo= r:windowtext"><o:p>=C2=A0</o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif;colo= r:windowtext">On the other hand, ovirt-shell can and is a fast/easy way to perform =E2=80=9Cnormal daily tasks=E2=80=9D.</span></p> </div> </blockquote> totally agree but ovirt-shell is deprecated in 4.1 et will be removed in 4.2. Ansible or sdk4 are proposed as an alternative.<br> <blockquote cite=3D"mid:CY4PR14MB16872F07318B2136C5CC851EE9610@CY4PR14MB1687.namprd14= .prod.outlook.com" type=3D"cite"> <div class=3D"WordSection1"> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif;colo= r:windowtext"><o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif;colo= r:windowtext"><o:p>=C2=A0</o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif;colo= r:windowtext">As long as we have good documentation about how to do things, can we have and support both?<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif;colo= r:windowtext">Cheers<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif;colo= r:windowtext">Andrea<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif;colo= r:windowtext"><o:p>=C2=A0</o:p></span></p> <div> <div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in"> <p class=3D"MsoNormal"><b><span style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif;colo= r:windowtext">From:</span></b><span style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif;colo= r:windowtext"> <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:user= s-bounces@ovirt.org">users-bounces@ovirt.org</a> [<a class=3D"moz-txt-lin= k-freetext" href=3D"mailto:users-bounces@ovirt.org">mailto:users-bounces@= ovirt.org</a>] <b>On Behalf Of </b>Nathana=C3=ABl Blanchet<br> <b>Sent:</b> Tuesday, January 3, 2017 7:41 PM<br> <b>To:</b> Dan Yasny <a class=3D"moz-txt-link-rfc2396E" h= ref=3D"mailto:dyasny@gmail.com"><dyasny@gmail.com></a><br> <b>Cc:</b> users <a class=3D"moz-txt-link-rfc2396E" href=3D= "mailto:users@ovirt.org"><users@ovirt.org></a><br> <b>Subject:</b> Re: [ovirt-users] Request for oVirt Ansible modules testing feedback<o:p></o:p></span></p> </div> </div> <p class=3D"MsoNormal"><o:p>=C2=A0</o:p></p> <div> <p class=3D"MsoNormal">Le 30/12/2016 =C3=A0 20:53, Dan Yasny a =C3=A9crit=C2=A0:<o:p></o:p></p> </div> <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt"> <div> <p class=3D"MsoNormal">I personally found that she'll isn't a= s useful as the python sdk. I usually open up ipython, load the sdk and interact with ovirt directly. This is faster and much more powerful than the shell could ever be. <o:p></o:p></p> </div> </blockquote> <p class=3D"MsoNormal">okay, I suppose you to be a regular python user. Can you imagine how much time I spent just to understand how it works? <br> That is to say:<o:p></o:p></p> <ul type=3D"disc"> <li class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;m= so-list:l1 level1 lfo1"> installing pip and not pip3 because provided python-ovirt-engine-sdk4 is default installed to /usr/lib64/python2.7, <o:p></o:p></li> <li class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;m= so-list:l1 level1 lfo1"> installing ipython, <o:p></o:p></li> <li class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;m= so-list:l1 level1 lfo1"> importing the good modules, <o:p></o:p></li> <li class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;m= so-list:l1 level1 lfo1"> finding pertinent examples, <o:p></o:p></li> <li class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;m= so-list:l1 level1 lfo1"> understand differences between sdk3 and 4 <o:p></o:p></li> <li class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;m= so-list:l1 level1 lfo1"> correcting some wrong examples<o:p></o:p></li> <li class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;m= so-list:l1 level1 lfo1"> adapting example to my need?<o:p></o:p></li> </ul> <p class=3D"MsoNormal">I can't see how it can be fast for the newbie.<br> What's the first goal of a CLI? to abstract all this stuff for the python newbie. If you want a easy-to-use webadmin for attracting a large public, you should provide easy-to-use CLI as well. Ovirt-shell was a part of my choice to use ovirt.<br> Yes we can learn to use SDK (I dit it), but I don't think a lot people who chose ovirt for simplicity wll use it except advanced users.<br> A new time, thank you for the great stuff for the great oVirt project, but I find there is too much distance between devs and users.<br> What do really think the community about this?<br> <br> <o:p></o:p></p> <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt"> <div> <p class=3D"MsoNormal"><o:p>=C2=A0</o:p></p> <div> <p class=3D"MsoNormal">On Dec 30, 2016 11:22 AM, "Nathana=C3= =ABl Blanchet" <<a moz-do-not-send=3D"true" href=3D"mailto:blanchet@abes.fr">blanchet@abes.fr</a>&g= t; wrote:<o:p></o:p></p> <blockquote style=3D"border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"> <div> <p>Interesting work and thank you for this stuff. I played with some modules (ovirt_vms_facts) to get some vms name for example.<o:p></o:p></p> <ul type=3D"disc"> <li class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-= alt:auto;mso-list:l3 level1 lfo2"> [root@acore ovirt]# ansible-playbook All_Vms_list.yml =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 <o:p></o:p></li> <li class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-= alt:auto;mso-list:l3 level1 lfo2"> with <br> =C2=A0 - name: List vms<br> =C2=A0=C2=A0=C2=A0 ovirt_vms_facts:<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 auth: "{{ ovirt_auth= }}"<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 pattern: name=3Dtest= _cloud<br> =C2=A0 =C2=A0 =C2=A0 fetch_nested: true<br> =C2=A0=C2=A0 =C2=A0=C2=A0 nested_attributes: name<b= r> =C2=A0=C2=A0=C2=A0 register: ovirt_vms<br> =C2=A0=C2=A0=C2=A0=C2=A0 <br> =C2=A0 - shell: echo "{{ <a moz-do-not-send=3D"true= " href=3D"http://ovirt_vms.name" target=3D"_blank">= ovirt_vms.name</a> }} > vms_name" // doesn't work<o:p></o:p></li> </ul> <ul type=3D"disc"> <li class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-= alt:auto;mso-list:l2 level1 lfo3"> =C2=A0 - shell: echo "{{ ovirt_vms }} > vms_name= // returns an unicode json file, that's surely why we can't parse it. Can you help me to solve this into the ovirt_vms_facts.py file?<o:p></o:p></li> </ul> <ul type=3D"disc"> <li class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-= alt:auto;mso-list:l0 level1 lfo4"> I have no such problem with ovirt_snaphots_module and I can easily get the <a moz-do-not-send=3D"true" href=3D"http://snaphot.i= d" target=3D"_blank"> snaphot.id</a> variable.... but:<o:p></o:p></li> </ul> <ul type=3D"disc"> <ul type=3D"circle"> <li class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-botto= m-alt:auto;mso-list:l0 level2 lfo4"> I had to manually copy the ovirt_snaphsots_module because it is not present on the git tree. This is very curious: we can find it here <a moz-do-not-send=3D"true" href=3D"http://ovirt-ansible-modules.readthedocs.io/en/latest/_modules/ov= irt_snapshots_module.htm" target=3D"_blank"> http://ovirt-ansible-modules.readthedocs.io/en/latest/_modules/ovirt_snap= shots_module.htm</a>, but it is not available on the main ansible git tre.<o:p></o:p></li> <li class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-botto= m-alt:auto;mso-list:l0 level2 lfo4"> On the doc, return values are not described<o:p><= /o:p></li> </ul> </ul> <p>For the moment, my opinion is that ansible can't be as much convinient as the current CLI, e.g. ovirt-shell -E "list vms", out of the box. Is there a really reason to deprecate it?<o:p></o:p></p> <p class=3D"MsoNormal"><o:p>=C2=A0</o:p></p> <div> <p class=3D"MsoNormal">Le 02/12/2016 =C3=A0 14:12, On= dra Machacek a =C3=A9crit=C2=A0:<o:p></o:p></p> </div> <blockquote style=3D"margin-top:5.0pt;margin-bottom:5.0pt"> <p class=3D"MsoNormal">Hello all, <br> <br> I would like to kindly ask everyone who is Ansible or oVirt user for <br> testing of the new Ansible oVirt modules. For everyone who is familiar <br> with the Ansible and oVirt, this[1] describes the steps you need to do, <br> to setup oVirt modules library and start using those modules (Most of those modules will be available in Ansible 2.3, some of them are already in 2.2). <br> <br> If you have any issue setting this up, please contact me, I will do the <br> best to help you. <br> <br> If you have an issue, which you think is a bug, please open an issue <br> here[2]. Please note that Ansible is merging it's repositories, so since <br> next week it will actually be stored here[3]. If you are missing <br> anything please open an issue as well, or just contact me, and I will <br> do fix it. You are also very welcome to sent PR with fixes. <br> <br> For those who don't have testing environment which can test against, <br> I've created an Vagrant project which will deploy you the oVirt instance <br> using Ansible playbooks. You can find how to use it here[4]. <br> <br> The repository also contains few examples[5], so you don't have to <br> copy-paste them from the source. <br> <br> Thanks all for reading this and any feedback, <br> Ondra <br> <br> [1] <a moz-do-not-send=3D"true" href=3D"https://github.com/machacekondra/ovirt-te= sts/releases/tag/0.1" target=3D"_blank"> https://github.com/machacekondra/ovirt-tests/releases/tag/0.1</a> <br> [2] <a moz-do-not-send=3D"true" href=3D"https://github.com/ansible/ansible-module= s-extras/issues" target=3D"_blank"> https://github.com/ansible/ansible-modules-extras/issues</a> <br> [3] <a moz-do-not-send=3D"true" href=3D"https://github.com/ansible/ansible" target=3D"_blank">https://github.com/ansible/ansi= ble</a> <br> [4] <a moz-do-not-send=3D"true" href=3D"https://github.com/machacekondra/ovirt-te= sts" target=3D"_blank">https://github.com/machacekondr= a/ovirt-tests</a> <br> [5] <a moz-do-not-send=3D"true" href=3D"https://github.com/machacekondra/ovirt-te= sts/tree/master/examples" target=3D"_blank"> https://github.com/machacekondra/ovirt-tests/tree/master/examples</a> <br=
_______________________________________________ <br=
Users@ovirt.org</a> <br> <a moz-do-not-send=3D"true" href=3D"http://lists.ovirt.org/mailman/listinfo/u= sers" target=3D"_blank">http://lists.ovirt.org/mailman/=
Users mailing list <br> <a moz-do-not-send=3D"true" href=3D"mailto:Users@ovirt.org" target=3D"_blank"= listinfo/users</a> <o:p></o:p></p> </blockquote> <p class=3D"MsoNormal"><br> <br> <o:p></o:p></p> <pre>-- <o:p></o:p></pre> <pre>Nathana=C3=ABl Blanchet<o:p></o:p></pre> <pre><o:p>=C2=A0</o:p></pre> <pre>Supervision r=C3=A9seau<o:p></o:p></pre> <pre>P=C3=B4le Infrastrutures Informatiques<o:p></o:p><= /pre> <pre>227 avenue Professeur-Jean-Louis-Viala<o:p></o:p><= /pre> <pre>34193 MONTPELLIER CEDEX 5 =C2=A0=C2=A0=C2=A0 <o:p>= </o:p></pre> <pre>T=C3=A9l. 33 (0)4 67 54 84 55<o:p></o:p></pre> <pre>Fax=C2=A0 33 (0)4 67 54 84 14<o:p></o:p></pre> <pre><a moz-do-not-send=3D"true" href=3D"mailto:blanche= t@abes.fr" target=3D"_blank">blanchet@abes.fr</a> <o:p></o:p></pre> </div> <p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><br=
_______________________________________________<br> Users mailing list<br> <a moz-do-not-send=3D"true" href=3D"mailto:Users@ovirt.org">Users@ovirt.org</a><b= r> <a moz-do-not-send=3D"true" href=3D"http://lists.ovirt.org/mailman/listinfo/users= " target=3D"_blank">http://lists.ovirt.org/mailman/list= info/users</a><o:p></o:p></p> </blockquote> </div> </div> </blockquote> <p class=3D"MsoNormal"><br> <br> <o:p></o:p></p> <pre>-- <o:p></o:p></pre> <pre>Nathana=C3=ABl Blanchet<o:p></o:p></pre> <pre><o:p>=C2=A0</o:p></pre> <pre>Supervision r=C3=A9seau<o:p></o:p></pre> <pre>P=C3=B4le Infrastrutures Informatiques<o:p></o:p></pre> <pre>227 avenue Professeur-Jean-Louis-Viala<o:p></o:p></pre> <pre>34193 MONTPELLIER CEDEX 5 =C2=A0=C2=A0=C2=A0=C2=A0 <o:p></o:= p></pre> <pre>T=C3=A9l. 33 (0)4 67 54 84 55<o:p></o:p></pre> <pre>Fax=C2=A0 33 (0)4 67 54 84 14<o:p></o:p></pre> <pre><a moz-do-not-send=3D"true" href=3D"mailto:blanchet@abes.fr"=
blanchet@abes.fr</a> <o:p></o:p></pre> </div> </blockquote> <br> <pre class=3D"moz-signature" cols=3D"72">--=20 Nathana=C3=ABl Blanchet
Supervision r=C3=A9seau P=C3=B4le Infrastrutures Informatiques 227 avenue Professeur-Jean-Louis-Viala 34193 MONTPELLIER CEDEX 5 =09 T=C3=A9l. 33 (0)4 67 54 84 55 Fax 33 (0)4 67 54 84 14 <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:blanchet@abes.fr">bl= anchet@abes.fr</a> </pre> </body> </html> --------------200A0996437076D3DE8EA6A3--

Hello, Le 04/01/2017 à 11:49, Nathanaël Blanchet a écrit :
Le 04/01/2017 à 10:09, Andrea Ghelardi a écrit :
Personally I don’t think ansible and ovirt-shell are mutually exclusive.
Those who are in ansible and devops realms are not really scared by making python/ansible work with ovirt.
From what I gather, playbooks are quite a de-facto pre-requisite to build up a real SaaC “Software as a Code” environment.
On the other hand, ovirt-shell can and is a fast/easy way to perform “normal daily tasks”.
totally agree but ovirt-shell is deprecated in 4.1 et will be removed in 4.2. Ansible or sdk4 are proposed as an alternative.
Could someone point me to an URL where sdk4 is fully documented, as I have to get ready for ovirt-shell deprecation? I'm sure no one at Redhat thought about deprecating a tool in favor of a new one before providing a complete user doc! -- Nicolas ECARNOT

On Wed, Jan 4, 2017 at 1:04 PM, Nicolas Ecarnot <nicolas@ecarnot.net> wrote:
Hello,
Le 04/01/2017 à 11:49, Nathanaël Blanchet a écrit :
Le 04/01/2017 à 10:09, Andrea Ghelardi a écrit :
Personally I don’t think ansible and ovirt-shell are mutually exclusive.
Those who are in ansible and devops realms are not really scared by making python/ansible work with ovirt.
From what I gather, playbooks are quite a de-facto pre-requisite to build up a real SaaC “Software as a Code” environment.
On the other hand, ovirt-shell can and is a fast/easy way to perform “normal daily tasks”.
totally agree but ovirt-shell is deprecated in 4.1 et will be removed in
4.2. Ansible or sdk4 are proposed as an alternative.
Could someone point me to an URL where sdk4 is fully documented, as I have to get ready for ovirt-shell deprecation?
The Rest API is partially documented under https://<engine>/api/model . It's not complete yet. All new features in 4.0 are documented and we are working on the 'older' features now. (contributions are welcome!)
I'm sure no one at Redhat thought about deprecating a tool in favor of a new one before providing a complete user doc!
In addition, the SDK RPM itself contains many examples. See [1]. (contributions are welcome!) Y. [1] https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/examples
-- Nicolas ECARNOT
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

This is a multi-part message in MIME format. --------------73A68F10696DCF89F223BAB3 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: quoted-printable Le 04/01/2017 =E0 12:30, Yaniv Kaul a =E9crit :
On Wed, Jan 4, 2017 at 1:04 PM, Nicolas Ecarnot <nicolas@ecarnot.net=20 <mailto:nicolas@ecarnot.net>> wrote:
Hello,
Le 04/01/2017 =E0 11:49, Nathana=EBl Blanchet a =E9crit :
Le 04/01/2017 =E0 10:09, Andrea Ghelardi a =E9crit :
Personally I don=92t think ansible and ovirt-shell are mutually exclusive.
Those who are in ansible and devops realms are not really scared by making python/ansible work with ovirt.
From what I gather, playbooks are quite a de-facto pre-requisite to build up a real SaaC =93Software as a Code=94 environment.
On the other hand, ovirt-shell can and is a fast/easy way to perform =93normal daily tasks=94.
totally agree but ovirt-shell is deprecated in 4.1 et will be removed in 4.2. Ansible or sdk4 are proposed as an alternative.
Could someone point me to an URL where sdk4 is fully documented, as I have to get ready for ovirt-shell deprecation?
The Rest API is partially documented under https://<engine>/api/model .
you mean https://<engine>/ovirt-engine/api/model
It's not complete yet. All new features in 4.0 are documented and we=20 are working on the 'older' features now. (contributions are welcome!)
I'm sure no one at Redhat thought about deprecating a tool in favor of a new one before providing a complete user doc!
In addition, the SDK RPM itself contains many examples. See [1]. (contributions are welcome!)
Y.
[1] https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/examples
--=20 Nicolas ECARNOT
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
--=20 Nathana=EBl Blanchet Supervision r=E9seau P=F4le Infrastrutures Informatiques 227 avenue Professeur-Jean-Louis-Viala 34193 MONTPELLIER CEDEX 5 =09 T=E9l. 33 (0)4 67 54 84 55 Fax 33 (0)4 67 54 84 14 blanchet@abes.fr --------------73A68F10696DCF89F223BAB3 Content-Type: text/html; charset=windows-1252 Content-Transfer-Encoding: quoted-printable <html> <head> <meta content=3D"text/html; charset=3Dwindows-1252" http-equiv=3D"Content-Type"> </head> <body text=3D"#000000" bgcolor=3D"#FFFFFF"> <p><br> </p> <br> <div class=3D"moz-cite-prefix">Le 04/01/2017 =E0 12:30, Yaniv Kaul a =E9crit=A0:<br> </div> <blockquote cite=3D"mid:CAJgorsbdKSmEjbUYdg=3D+YQCr2GmKbDzSdSER7h5JZHAQaMCuBA@mail.gm= ail.com" type=3D"cite"> <div dir=3D"ltr"><br> <div class=3D"gmail_extra"><br> <div class=3D"gmail_quote">On Wed, Jan 4, 2017 at 1:04 PM, Nicolas Ecarnot <span dir=3D"ltr"><<a moz-do-not-send=3D"true" href=3D"mailto:nicolas@ecarnot.n= et" target=3D"_blank"><a class=3D"moz-txt-link-abbreviated" h= ref=3D"mailto:nicolas@ecarnot.net">nicolas@ecarnot.net</a></a>></span> wrote:<br> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello,<span class=3D"gmail-"><br> <br> Le 04/01/2017 =E0 11:49, Nathana=EBl Blanchet a =E9crit := <br> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br> <br> Le 04/01/2017 =E0 10:09, Andrea Ghelardi a =E9crit :<br=
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0= px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br> Personally I don=92t think ansible and ovirt-shell ar= e mutually exclusive.<br> <br> Those who are in ansible and devops realms are not really scared by<br> making python/ansible work with ovirt.<br> <br> From what I gather, playbooks are quite a de-facto pre-requisite to<br> build up a real SaaC =93Software as a Code=94 environment.<br> <br> <br> <br> On the other hand, ovirt-shell can and is a fast/easy way to perform<br> =93normal daily tasks=94.<br> <br> </blockquote> totally agree but ovirt-shell is deprecated in 4.1 et will be removed in<br> 4.2. Ansible or sdk4 are proposed as an alternative.<br=
</blockquote> <br> </span> Could someone point me to an URL where sdk4 is fully documented, as I have to get ready for ovirt-shell deprecation?<br> </blockquote> <div><br> </div> <div>The Rest API is partially documented under <a class=3D"moz-txt-link-freetext" href=3D"https://">https:= //</a><engine>/api/model .</div> </div> </div> </div> </blockquote> you mean <a class=3D"moz-txt-link-freetext" href=3D"https://">https:/= /</a><engine>/ovirt-engine/api/model <blockquote cite=3D"mid:CAJgorsbdKSmEjbUYdg=3D+YQCr2GmKbDzSdSER7h5JZHAQaMCuBA@mail.gm= ail.com" type=3D"cite"> <div dir=3D"ltr"> <div class=3D"gmail_extra"> <div class=3D"gmail_quote"> <div>It's not complete yet. All new features in 4.0 are documented and we are working on the 'older' features now.<= /div> <div>(contributions are welcome!)<br> </div> <div><br> </div> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br> I'm sure no one at Redhat thought about deprecating a tool in favor of a new one before providing a complete user doc!</blockquote> <div><br> </div> <div>In addition, the SDK RPM itself contains many examples. See [1].</div> <div>(contributions are welcome!)</div> <div><br> </div> <div>Y.</div> <div><br> </div> <div>[1]=A0<a moz-do-not-send=3D"true" href=3D"https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/example= s">https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/examples</a>= </div> <div><br> </div> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class=3D"gmail-HOEnZb"><font color=3D"#888888"><br> <br> -- <br> Nicolas ECARNOT</font></span> <div class=3D"gmail-HOEnZb"> <div class=3D"gmail-h5"><br> ______________________________<wbr>_________________<br=
Users mailing list<br> <a moz-do-not-send=3D"true" href=3D"mailto:Users@ovirt.org" target=3D"_blank">Use= rs@ovirt.org</a><br> <a moz-do-not-send=3D"true" href=3D"http://lists.ovirt.org/mailman/listinfo/users= " rel=3D"noreferrer" target=3D"_blank">http://lists.ovi= rt.org/mailman<wbr>/listinfo/users</a><br> </div> </div> </blockquote> </div> <br> </div> </div> <br> <fieldset class=3D"mimeAttachmentHeader"></fieldset> <br> <pre wrap=3D"">_______________________________________________ Users mailing list <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:Users@ovirt.org">Use= rs@ovirt.org</a> <a class=3D"moz-txt-link-freetext" href=3D"http://lists.ovirt.org/mailman= /listinfo/users">http://lists.ovirt.org/mailman/listinfo/users</a> </pre> </blockquote> <br> <pre class=3D"moz-signature" cols=3D"72">--=20 Nathana=EBl Blanchet Supervision r=E9seau P=F4le Infrastrutures Informatiques 227 avenue Professeur-Jean-Louis-Viala 34193 MONTPELLIER CEDEX 5 =09 T=E9l. 33 (0)4 67 54 84 55 Fax 33 (0)4 67 54 84 14 <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:blanchet@abes.fr">bl= anchet@abes.fr</a> </pre> </body> </html> --------------73A68F10696DCF89F223BAB3--

On 01/04/2017 12:30 PM, Yaniv Kaul wrote:
On Wed, Jan 4, 2017 at 1:04 PM, Nicolas Ecarnot <nicolas@ecarnot.net <mailto:nicolas@ecarnot.net>> wrote:
Hello,
Le 04/01/2017 à 11:49, Nathanaël Blanchet a écrit :
Le 04/01/2017 à 10:09, Andrea Ghelardi a écrit :
Personally I don’t think ansible and ovirt-shell are mutually exclusive.
Those who are in ansible and devops realms are not really scared by making python/ansible work with ovirt.
From what I gather, playbooks are quite a de-facto pre-requisite to build up a real SaaC “Software as a Code” environment.
On the other hand, ovirt-shell can and is a fast/easy way to perform “normal daily tasks”.
totally agree but ovirt-shell is deprecated in 4.1 et will be removed in 4.2. Ansible or sdk4 are proposed as an alternative.
Could someone point me to an URL where sdk4 is fully documented, as I have to get ready for ovirt-shell deprecation?
The Rest API is partially documented under https://<engine>/api/model . It's not complete yet. All new features in 4.0 are documented and we are working on the 'older' features now. (contributions are welcome!)
I'm sure no one at Redhat thought about deprecating a tool in favor of a new one before providing a complete user doc!
In addition, the SDK RPM itself contains many examples. See [1]. (contributions are welcome!)
Y.
[1] https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/examples
Also the complete reference documentation of the Python SDK is available here: http://ovirt.github.io/ovirt-engine-sdk/v4.0/4.0.3/index.html There also SDKs for Ruby and Java, in case Python is not your preferred language: Ruby: https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk/examples http://www.rubydoc.info/gems/ovirt-engine-sdk Java: https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk/src/test/java... http://www.javadoc.io/doc/org.ovirt.engine.api/sdk
-- Nicolas ECARNOT
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

Le 04/01/2017 à 15:41, Juan Hernández a écrit :
On 01/04/2017 12:30 PM, Yaniv Kaul wrote:
On Wed, Jan 4, 2017 at 1:04 PM, Nicolas Ecarnot <nicolas@ecarnot.net <mailto:nicolas@ecarnot.net>> wrote:
Hello,
Le 04/01/2017 à 11:49, Nathanaël Blanchet a écrit :
Le 04/01/2017 à 10:09, Andrea Ghelardi a écrit :
Personally I don’t think ansible and ovirt-shell are mutually exclusive.
Those who are in ansible and devops realms are not really scared by making python/ansible work with ovirt.
From what I gather, playbooks are quite a de-facto pre-requisite to build up a real SaaC “Software as a Code” environment.
On the other hand, ovirt-shell can and is a fast/easy way to perform “normal daily tasks”.
totally agree but ovirt-shell is deprecated in 4.1 et will be removed in 4.2. Ansible or sdk4 are proposed as an alternative.
Could someone point me to an URL where sdk4 is fully documented, as I have to get ready for ovirt-shell deprecation?
The Rest API is partially documented under https://<engine>/api/model . It's not complete yet. All new features in 4.0 are documented and we are working on the 'older' features now. (contributions are welcome!)
I'm sure no one at Redhat thought about deprecating a tool in favor of a new one before providing a complete user doc!
In addition, the SDK RPM itself contains many examples. See [1]. (contributions are welcome!)
Y.
[1] https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/examples
Although these examples, I can successfully create a snapshot, but I didn't find the way to delete it... Regarding many example, it should be possible to locate any service by : name_service = connection.system_service().name.service()
So logically it should be doable with snapshot like snapshots_service = connection.system_service().snapshots.service() but : AttributeError: 'SystemService' object has no attribute 'snapshots I saw an example into the ansible [ working ] way to do the same thing and I found this : snapshot = snapshots_service.snapshot_service(module.params['snapshot_id']).get() How can I get this working with sdk, I mean giving snapshot_id as a parameter?
Also the complete reference documentation of the Python SDK is available here:
http://ovirt.github.io/ovirt-engine-sdk/v4.0/4.0.3/index.html
There also SDKs for Ruby and Java, in case Python is not your preferred language:
Ruby: https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk/examples http://www.rubydoc.info/gems/ovirt-engine-sdk
Java: https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk
https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk/src/test/java... http://www.javadoc.io/doc/org.ovirt.engine.api/sdk
-- Nicolas ECARNOT
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
-- 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 blanchet@abes.fr

On 01/04/2017 05:38 PM, Nathanaël Blanchet wrote:
Le 04/01/2017 à 15:41, Juan Hernández a écrit :
On 01/04/2017 12:30 PM, Yaniv Kaul wrote:
On Wed, Jan 4, 2017 at 1:04 PM, Nicolas Ecarnot <nicolas@ecarnot.net <mailto:nicolas@ecarnot.net>> wrote:
Hello,
Le 04/01/2017 à 11:49, Nathanaël Blanchet a écrit :
Le 04/01/2017 à 10:09, Andrea Ghelardi a écrit :
Personally I don’t think ansible and ovirt-shell are mutually exclusive.
Those who are in ansible and devops realms are not really scared by making python/ansible work with ovirt.
From what I gather, playbooks are quite a de-facto pre-requisite to build up a real SaaC “Software as a Code” environment.
On the other hand, ovirt-shell can and is a fast/easy way to perform “normal daily tasks”.
totally agree but ovirt-shell is deprecated in 4.1 et will be removed in 4.2. Ansible or sdk4 are proposed as an alternative.
Could someone point me to an URL where sdk4 is fully documented, as I have to get ready for ovirt-shell deprecation?
The Rest API is partially documented under https://<engine>/api/model . It's not complete yet. All new features in 4.0 are documented and we are working on the 'older' features now. (contributions are welcome!)
I'm sure no one at Redhat thought about deprecating a tool in favor of a new one before providing a complete user doc!
In addition, the SDK RPM itself contains many examples. See [1]. (contributions are welcome!)
Y.
[1] https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/examples
Although these examples, I can successfully create a snapshot, but I didn't find the way to delete it... Regarding many example, it should be possible to locate any service by : name_service = connection.system_service().name.service()
So logically it should be doable with snapshot like snapshots_service = connection.system_service().snapshots.service() but : AttributeError: 'SystemService' object has no attribute 'snapshots
In the SDK the services are arranged in a tree structure that mimics the URL structure of the API. For example, if you want to get the service that manages a particular snapshot, in the API you would use an URL like this: /ovirt-engine/api/vms/123/snapshots/456 In the Python SDK that translates into this: snap_service = connection.system_service() \ .vms_service() \ .vm_service('123') \ .snapshots_service() \ .snapshot_service('456') There is also a generic "service" method that is useful when you already have all that path as an string: snap_service = connection.service("vms/123/snapshots/456") Both return exactly the same object. The first is usually better when you are calculating the path of the object step by step, and I generally prefer it as it is less error prone. Once you have the reference to the service, you can use the 'remove' method: snap_service.remove() If you need to search by the names of the objects, then you can use the 'search' methods, which are only available for the top level objects, like VM, data centers, clusters, etc. For example, to find your virtual machine and then the snapshot: # Get the root service: system_service = connection.system_service() # Find the virtual machine: vms_service = system_service.vms_service() vm = vms_service.list(search='name=myvm')[0] # Find the snapshot: vm_service = vms_service.vm_service(vm.id) snaps_service = vm_service.snapshots_service() snaps = snaps_service.list() snap = [s for s in snaps where s.description == 'My snap'][0] # Remove the snapshot: snap_service = snaps_service.snap_service(snap.id) snap_service.remove()
I saw an example into the ansible [ working ] way to do the same thing and I found this : snapshot = snapshots_service.snapshot_service(module.params['snapshot_id']).get()
How can I get this working with sdk, I mean giving snapshot_id as a parameter?
Also the complete reference documentation of the Python SDK is available here:
http://ovirt.github.io/ovirt-engine-sdk/v4.0/4.0.3/index.html
There also SDKs for Ruby and Java, in case Python is not your preferred language:
Ruby: https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk
https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk/examples http://www.rubydoc.info/gems/ovirt-engine-sdk
Java: https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk
https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk/src/test/java...
http://www.javadoc.io/doc/org.ovirt.engine.api/sdk
-- Nicolas ECARNOT
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

Le 04/01/2017 à 18:55, Juan Hernández a écrit :
On 01/04/2017 05:38 PM, Nathanaël Blanchet wrote:
Le 04/01/2017 à 15:41, Juan Hernández a écrit :
On 01/04/2017 12:30 PM, Yaniv Kaul wrote:
On Wed, Jan 4, 2017 at 1:04 PM, Nicolas Ecarnot <nicolas@ecarnot.net <mailto:nicolas@ecarnot.net>> wrote:
Hello,
Le 04/01/2017 à 11:49, Nathanaël Blanchet a écrit :
Le 04/01/2017 à 10:09, Andrea Ghelardi a écrit :
Personally I don’t think ansible and ovirt-shell are mutually exclusive.
Those who are in ansible and devops realms are not really scared by making python/ansible work with ovirt.
From what I gather, playbooks are quite a de-facto pre-requisite to build up a real SaaC “Software as a Code” environment.
On the other hand, ovirt-shell can and is a fast/easy way to perform “normal daily tasks”.
totally agree but ovirt-shell is deprecated in 4.1 et will be removed in 4.2. Ansible or sdk4 are proposed as an alternative.
Could someone point me to an URL where sdk4 is fully documented, as I have to get ready for ovirt-shell deprecation?
The Rest API is partially documented under https://<engine>/api/model . It's not complete yet. All new features in 4.0 are documented and we are working on the 'older' features now. (contributions are welcome!)
I'm sure no one at Redhat thought about deprecating a tool in favor of a new one before providing a complete user doc!
In addition, the SDK RPM itself contains many examples. See [1]. (contributions are welcome!)
Y.
[1] https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/examples
Although these examples, I can successfully create a snapshot, but I didn't find the way to delete it... Regarding many example, it should be possible to locate any service by : name_service = connection.system_service().name.service()
So logically it should be doable with snapshot like snapshots_service = connection.system_service().snapshots.service() but : AttributeError: 'SystemService' object has no attribute 'snapshots
In the SDK the services are arranged in a tree structure that mimics the URL structure of the API. For example, if you want to get the service that manages a particular snapshot, in the API you would use an URL like this:
/ovirt-engine/api/vms/123/snapshots/456
In the Python SDK that translates into this:
snap_service = connection.system_service() \ .vms_service() \ .vm_service('123') \ .snapshots_service() \ .snapshot_service('456')
There is also a generic "service" method that is useful when you already have all that path as an string:
snap_service = connection.service("vms/123/snapshots/456")
Both return exactly the same object. The first is usually better when you are calculating the path of the object step by step, and I generally prefer it as it is less error prone.
Once you have the reference to the service, you can use the 'remove' method:
snap_service.remove()
If you need to search by the names of the objects, then you can use the 'search' methods, which are only available for the top level objects, like VM, data centers, clusters, etc. For example, to find your virtual machine and then the snapshot:
# Get the root service: system_service = connection.system_service()
# Find the virtual machine: vms_service = system_service.vms_service() vm = vms_service.list(search='name=myvm')[0]
# Find the snapshot: vm_service = vms_service.vm_service(vm.id) snaps_service = vm_service.snapshots_service() snaps = snaps_service.list() snap = [s for s in snaps where s.description == 'My snap'][0] sounds good, thank so much for taking time to explain, but for the last entry, I get ;
snap = [s for s in snaps where s.description == 'My snapshot2'][0] ^ SyntaxError: invalid syntax May I use a version 3 of python?
# Remove the snapshot: snap_service = snaps_service.snap_service(snap.id) snap_service.remove()
I saw an example into the ansible [ working ] way to do the same thing and I found this : snapshot = snapshots_service.snapshot_service(module.params['snapshot_id']).get()
How can I get this working with sdk, I mean giving snapshot_id as a parameter?
Also the complete reference documentation of the Python SDK is available here:
http://ovirt.github.io/ovirt-engine-sdk/v4.0/4.0.3/index.html
There also SDKs for Ruby and Java, in case Python is not your preferred language:
Ruby: https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk
https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk/examples http://www.rubydoc.info/gems/ovirt-engine-sdk
Java: https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk
https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk/src/test/java...
http://www.javadoc.io/doc/org.ovirt.engine.api/sdk
-- Nicolas ECARNOT
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
-- 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 blanchet@abes.fr

On 01/06/2017 12:20 PM, Nathanaël Blanchet wrote:
Le 04/01/2017 à 18:55, Juan Hernández a écrit :
On 01/04/2017 05:38 PM, Nathanaël Blanchet wrote:
Le 04/01/2017 à 15:41, Juan Hernández a écrit :
On 01/04/2017 12:30 PM, Yaniv Kaul wrote:
On Wed, Jan 4, 2017 at 1:04 PM, Nicolas Ecarnot <nicolas@ecarnot.net <mailto:nicolas@ecarnot.net>> wrote:
Hello,
Le 04/01/2017 à 11:49, Nathanaël Blanchet a écrit :
Le 04/01/2017 à 10:09, Andrea Ghelardi a écrit :
Personally I don’t think ansible and ovirt-shell are mutually exclusive.
Those who are in ansible and devops realms are not really scared by making python/ansible work with ovirt.
From what I gather, playbooks are quite a de-facto pre-requisite to build up a real SaaC “Software as a Code” environment.
On the other hand, ovirt-shell can and is a fast/easy way to perform “normal daily tasks”.
totally agree but ovirt-shell is deprecated in 4.1 et will be removed in 4.2. Ansible or sdk4 are proposed as an alternative.
Could someone point me to an URL where sdk4 is fully documented, as I have to get ready for ovirt-shell deprecation?
The Rest API is partially documented under https://<engine>/api/model . It's not complete yet. All new features in 4.0 are documented and we are working on the 'older' features now. (contributions are welcome!)
I'm sure no one at Redhat thought about deprecating a tool in favor of a new one before providing a complete user doc!
In addition, the SDK RPM itself contains many examples. See [1]. (contributions are welcome!)
Y.
[1] https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/examples
Although these examples, I can successfully create a snapshot, but I didn't find the way to delete it... Regarding many example, it should be possible to locate any service by : name_service = connection.system_service().name.service()
So logically it should be doable with snapshot like snapshots_service = connection.system_service().snapshots.service() but : AttributeError: 'SystemService' object has no attribute 'snapshots
In the SDK the services are arranged in a tree structure that mimics the URL structure of the API. For example, if you want to get the service that manages a particular snapshot, in the API you would use an URL like this:
/ovirt-engine/api/vms/123/snapshots/456
In the Python SDK that translates into this:
snap_service = connection.system_service() \ .vms_service() \ .vm_service('123') \ .snapshots_service() \ .snapshot_service('456')
There is also a generic "service" method that is useful when you already have all that path as an string:
snap_service = connection.service("vms/123/snapshots/456")
Both return exactly the same object. The first is usually better when you are calculating the path of the object step by step, and I generally prefer it as it is less error prone.
Once you have the reference to the service, you can use the 'remove' method:
snap_service.remove()
If you need to search by the names of the objects, then you can use the 'search' methods, which are only available for the top level objects, like VM, data centers, clusters, etc. For example, to find your virtual machine and then the snapshot:
# Get the root service: system_service = connection.system_service()
# Find the virtual machine: vms_service = system_service.vms_service() vm = vms_service.list(search='name=myvm')[0]
# Find the snapshot: vm_service = vms_service.vm_service(vm.id) snaps_service = vm_service.snapshots_service() snaps = snaps_service.list() snap = [s for s in snaps where s.description == 'My snap'][0] sounds good, thank so much for taking time to explain, but for the last entry, I get ;
snap = [s for s in snaps where s.description == 'My snapshot2'][0] ^ SyntaxError: invalid syntax
I apologize, I wrote that too fast. That is SQL syntax, not Python. In python should be "if" instead of "where": snap = [s for s in snaps if s.description == 'My snapshot2'][0]
May I use a version 3 of python?
You SDK supports both Python 2 and Python 3. If you are using the RPMs make sure to install the 'python3-ovirt-engine-sdk4' package. Note that both are supported, but Python 3 doesn't get a lot of attention yet, so you may find issues. If you find any issue with Python 3 let as know, as we are committed to make it work.
# Remove the snapshot: snap_service = snaps_service.snap_service(snap.id) snap_service.remove()
I saw an example into the ansible [ working ] way to do the same thing and I found this : snapshot = snapshots_service.snapshot_service(module.params['snapshot_id']).get()
How can I get this working with sdk, I mean giving snapshot_id as a parameter?
Also the complete reference documentation of the Python SDK is available here:
http://ovirt.github.io/ovirt-engine-sdk/v4.0/4.0.3/index.html
There also SDKs for Ruby and Java, in case Python is not your preferred language:
Ruby: https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk
https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk/examples http://www.rubydoc.info/gems/ovirt-engine-sdk
Java: https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk
https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk/src/test/java...
http://www.javadoc.io/doc/org.ovirt.engine.api/sdk
-- Nicolas ECARNOT
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

Le 06/01/2017 à 13:39, Juan Hernández a écrit :
On 01/06/2017 12:20 PM, Nathanaël Blanchet wrote:
Le 04/01/2017 à 18:55, Juan Hernández a écrit :
On 01/04/2017 05:38 PM, Nathanaël Blanchet wrote:
Le 04/01/2017 à 15:41, Juan Hernández a écrit :
On 01/04/2017 12:30 PM, Yaniv Kaul wrote:
On Wed, Jan 4, 2017 at 1:04 PM, Nicolas Ecarnot <nicolas@ecarnot.net <mailto:nicolas@ecarnot.net>> wrote:
Hello,
Le 04/01/2017 à 11:49, Nathanaël Blanchet a écrit :
Le 04/01/2017 à 10:09, Andrea Ghelardi a écrit :
Personally I don’t think ansible and ovirt-shell are mutually exclusive.
Those who are in ansible and devops realms are not really scared by making python/ansible work with ovirt.
From what I gather, playbooks are quite a de-facto pre-requisite to build up a real SaaC “Software as a Code” environment.
On the other hand, ovirt-shell can and is a fast/easy way to perform “normal daily tasks”.
totally agree but ovirt-shell is deprecated in 4.1 et will be removed in 4.2. Ansible or sdk4 are proposed as an alternative.
Could someone point me to an URL where sdk4 is fully documented, as I have to get ready for ovirt-shell deprecation?
The Rest API is partially documented under https://<engine>/api/model . It's not complete yet. All new features in 4.0 are documented and we are working on the 'older' features now. (contributions are welcome!)
I'm sure no one at Redhat thought about deprecating a tool in favor of a new one before providing a complete user doc!
In addition, the SDK RPM itself contains many examples. See [1]. (contributions are welcome!)
Y.
[1] https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/examples
Although these examples, I can successfully create a snapshot, but I didn't find the way to delete it... Regarding many example, it should be possible to locate any service by : name_service = connection.system_service().name.service()
So logically it should be doable with snapshot like snapshots_service = connection.system_service().snapshots.service() but : AttributeError: 'SystemService' object has no attribute 'snapshots
In the SDK the services are arranged in a tree structure that mimics the URL structure of the API. For example, if you want to get the service that manages a particular snapshot, in the API you would use an URL like this:
/ovirt-engine/api/vms/123/snapshots/456
In the Python SDK that translates into this:
snap_service = connection.system_service() \ .vms_service() \ .vm_service('123') \ .snapshots_service() \ .snapshot_service('456')
There is also a generic "service" method that is useful when you already have all that path as an string:
snap_service = connection.service("vms/123/snapshots/456")
Both return exactly the same object. The first is usually better when you are calculating the path of the object step by step, and I generally prefer it as it is less error prone.
Once you have the reference to the service, you can use the 'remove' method:
snap_service.remove()
If you need to search by the names of the objects, then you can use the 'search' methods, which are only available for the top level objects, like VM, data centers, clusters, etc. For example, to find your virtual machine and then the snapshot:
# Get the root service: system_service = connection.system_service()
# Find the virtual machine: vms_service = system_service.vms_service() vm = vms_service.list(search='name=myvm')[0]
# Find the snapshot: vm_service = vms_service.vm_service(vm.id) snaps_service = vm_service.snapshots_service() snaps = snaps_service.list() snap = [s for s in snaps where s.description == 'My snap'][0] sounds good, thank so much for taking time to explain, but for the last entry, I get ;
snap = [s for s in snaps where s.description == 'My snapshot2'][0] ^ SyntaxError: invalid syntax
I apologize, I wrote that too fast. That is SQL syntax, not Python. In python should be "if" instead of "where":
snap = [s for s in snaps if s.description == 'My snapshot2'][0] Thank you, it's ok for now.
May I use a version 3 of python? You SDK supports both Python 2 and Python 3. If you are using the RPMs make sure to install the 'python3-ovirt-engine-sdk4' package.
python3-ovirt-engine-sdk4 doesn't exist in repos, only python-ovirt-engine-sdk4 Thanks to your explanations, I begin to understand the philosophy of this sdk, it's far different from sdk3. What's was wrong with the v3, what was the motivation to write a new version? Will it be possible to use the old sdk3 (manually installed) for old scripts in ovirt 4.2 ?
Note that both are supported, but Python 3 doesn't get a lot of attention yet, so you may find issues. If you find any issue with Python 3 let as know, as we are committed to make it work.
# Remove the snapshot: snap_service = snaps_service.snap_service(snap.id) snap_service.remove()
I saw an example into the ansible [ working ] way to do the same thing and I found this : snapshot = snapshots_service.snapshot_service(module.params['snapshot_id']).get()
How can I get this working with sdk, I mean giving snapshot_id as a parameter?
Also the complete reference documentation of the Python SDK is available here:
http://ovirt.github.io/ovirt-engine-sdk/v4.0/4.0.3/index.html
There also SDKs for Ruby and Java, in case Python is not your preferred language:
Ruby: https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk
https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk/examples http://www.rubydoc.info/gems/ovirt-engine-sdk
Java: https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk
https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk/src/test/java...
http://www.javadoc.io/doc/org.ovirt.engine.api/sdk
-- Nicolas ECARNOT
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
-- 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 blanchet@abes.fr

There was a last error in the script : snap_service = snaps_service.snapshot_service(snap.id) instead of snap_service = snaps_service.snap_service(snap.id) For those who are interested in using a full remove_vm_snapshot working script: # Create the connection to the server: connection = sdk.Connection( url='https://engine/ovirt-engine/api', username='admin@internal', password='passwd', # ca_file='ca.pem', insecure=True, debug=True, log=logging.getLogger(), ) # Locate the virtual machines service and use it to find the virtual # machine: vms_service = connection.system_service().vms_service() vm = vms_service.list(search='name=myvm')[0] # Locate the service that manages the snapshots of the virtual machine: vm_service = vms_service.vm_service(vm.id) snaps_service = vm_service.snapshots_service() snaps = snaps_service.list() snap = [s for s in snaps if s.description == 'My snapshot2'][0] # Remove the snapshot: snap_service = snaps_service.snapshot_service(snap.id) snap_service.remove() # Close the connection to the server: connection.close() Le 06/01/2017 à 14:44, Nathanaël Blanchet a écrit :
Le 06/01/2017 à 13:39, Juan Hernández a écrit :
On 01/06/2017 12:20 PM, Nathanaël Blanchet wrote:
Le 04/01/2017 à 18:55, Juan Hernández a écrit :
On 01/04/2017 05:38 PM, Nathanaël Blanchet wrote:
Le 04/01/2017 à 15:41, Juan Hernández a écrit :
On 01/04/2017 12:30 PM, Yaniv Kaul wrote: > On Wed, Jan 4, 2017 at 1:04 PM, Nicolas Ecarnot > <nicolas@ecarnot.net > <mailto:nicolas@ecarnot.net>> wrote: > > Hello, > > Le 04/01/2017 à 11:49, Nathanaël Blanchet a écrit : > > > > Le 04/01/2017 à 10:09, Andrea Ghelardi a écrit : > > > Personally I don’t think ansible and ovirt-shell are > mutually exclusive. > > Those who are in ansible and devops realms are not > really > scared by > making python/ansible work with ovirt. > > From what I gather, playbooks are quite a de-facto > pre-requisite to > build up a real SaaC “Software as a Code” > environment. > > > > On the other hand, ovirt-shell can and is a > fast/easy > way to > perform > “normal daily tasks”. > > totally agree but ovirt-shell is deprecated in 4.1 et > will be > removed in > 4.2. Ansible or sdk4 are proposed as an alternative. > > > Could someone point me to an URL where sdk4 is fully > documented, as > I have to get ready for ovirt-shell deprecation? > > > The Rest API is partially documented under > https://<engine>/api/model . > It's not complete yet. All new features in 4.0 are documented and > we are > working on the 'older' features now. > (contributions are welcome!) > > > I'm sure no one at Redhat thought about deprecating a > tool in > favor > of a new one before providing a complete user doc! > > > In addition, the SDK RPM itself contains many examples. See [1]. > (contributions are welcome!) > > Y. > > [1] > https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/examples > Although these examples, I can successfully create a snapshot, but I didn't find the way to delete it... Regarding many example, it should be possible to locate any service by : name_service = connection.system_service().name.service()
So logically it should be doable with snapshot like snapshots_service = connection.system_service().snapshots.service() but : AttributeError: 'SystemService' object has no attribute 'snapshots
In the SDK the services are arranged in a tree structure that mimics the URL structure of the API. For example, if you want to get the service that manages a particular snapshot, in the API you would use an URL like this:
/ovirt-engine/api/vms/123/snapshots/456
In the Python SDK that translates into this:
snap_service = connection.system_service() \ .vms_service() \ .vm_service('123') \ .snapshots_service() \ .snapshot_service('456')
There is also a generic "service" method that is useful when you already have all that path as an string:
snap_service = connection.service("vms/123/snapshots/456")
Both return exactly the same object. The first is usually better when you are calculating the path of the object step by step, and I generally prefer it as it is less error prone.
Once you have the reference to the service, you can use the 'remove' method:
snap_service.remove()
If you need to search by the names of the objects, then you can use the 'search' methods, which are only available for the top level objects, like VM, data centers, clusters, etc. For example, to find your virtual machine and then the snapshot:
# Get the root service: system_service = connection.system_service()
# Find the virtual machine: vms_service = system_service.vms_service() vm = vms_service.list(search='name=myvm')[0]
# Find the snapshot: vm_service = vms_service.vm_service(vm.id) snaps_service = vm_service.snapshots_service() snaps = snaps_service.list() snap = [s for s in snaps where s.description == 'My snap'][0] sounds good, thank so much for taking time to explain, but for the last entry, I get ;
snap = [s for s in snaps where s.description == 'My snapshot2'][0] ^ SyntaxError: invalid syntax
I apologize, I wrote that too fast. That is SQL syntax, not Python. In python should be "if" instead of "where":
snap = [s for s in snaps if s.description == 'My snapshot2'][0] Thank you, it's ok for now.
May I use a version 3 of python? You SDK supports both Python 2 and Python 3. If you are using the RPMs make sure to install the 'python3-ovirt-engine-sdk4' package.
python3-ovirt-engine-sdk4 doesn't exist in repos, only python-ovirt-engine-sdk4 Thanks to your explanations, I begin to understand the philosophy of this sdk, it's far different from sdk3. What's was wrong with the v3, what was the motivation to write a new version? Will it be possible to use the old sdk3 (manually installed) for old scripts in ovirt 4.2 ?
Note that both are supported, but Python 3 doesn't get a lot of attention yet, so you may find issues. If you find any issue with Python 3 let as know, as we are committed to make it work.
# Remove the snapshot: snap_service = snaps_service.snap_service(snap.id) snap_service.remove()
I saw an example into the ansible [ working ] way to do the same thing and I found this : snapshot = snapshots_service.snapshot_service(module.params['snapshot_id']).get()
How can I get this working with sdk, I mean giving snapshot_id as a parameter?
Also the complete reference documentation of the Python SDK is available here:
http://ovirt.github.io/ovirt-engine-sdk/v4.0/4.0.3/index.html
There also SDKs for Ruby and Java, in case Python is not your preferred language:
Ruby: https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk/examples
http://www.rubydoc.info/gems/ovirt-engine-sdk
Java: https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk
https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk/src/test/java...
http://www.javadoc.io/doc/org.ovirt.engine.api/sdk
> -- > Nicolas ECARNOT > > _______________________________________________ > Users mailing list > Users@ovirt.org <mailto:Users@ovirt.org> > http://lists.ovirt.org/mailman/listinfo/users > <http://lists.ovirt.org/mailman/listinfo/users> > > > > > _______________________________________________ > Users mailing list > Users@ovirt.org > http://lists.ovirt.org/mailman/listinfo/users > _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
-- 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 blanchet@abes.fr

On Fri, Jan 6, 2017 at 3:51 PM, Nathanaël Blanchet <blanchet@abes.fr> wrote:
There was a last error in the script :
snap_service = snaps_service.snapshot_service(snap.id) instead of snap_service = snaps_service.snap_service(snap.id)
For those who are interested in using a full remove_vm_snapshot working script:
Perhaps worth contributing to the examples[1] of the SDK? Y. [1] https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/examples
# Create the connection to the server: connection = sdk.Connection( url='https://engine/ovirt-engine/api', username='admin@internal', password='passwd', # ca_file='ca.pem', insecure=True, debug=True, log=logging.getLogger(), )
# Locate the virtual machines service and use it to find the virtual # machine: vms_service = connection.system_service().vms_service() vm = vms_service.list(search='name=myvm')[0]
# Locate the service that manages the snapshots of the virtual machine: vm_service = vms_service.vm_service(vm.id) snaps_service = vm_service.snapshots_service() snaps = snaps_service.list() snap = [s for s in snaps if s.description == 'My snapshot2'][0]
# Remove the snapshot: snap_service = snaps_service.snapshot_service(snap.id) snap_service.remove()
# Close the connection to the server: connection.close()
Le 06/01/2017 à 14:44, Nathanaël Blanchet a écrit :
Le 06/01/2017 à 13:39, Juan Hernández a écrit :
On 01/06/2017 12:20 PM, Nathanaël Blanchet wrote:
Le 04/01/2017 à 18:55, Juan Hernández a écrit :
On 01/04/2017 05:38 PM, Nathanaël Blanchet wrote:
Le 04/01/2017 à 15:41, Juan Hernández a écrit :
> On 01/04/2017 12:30 PM, Yaniv Kaul wrote: > >> On Wed, Jan 4, 2017 at 1:04 PM, Nicolas Ecarnot < >> nicolas@ecarnot.net >> <mailto:nicolas@ecarnot.net>> wrote: >> >> Hello, >> >> Le 04/01/2017 à 11:49, Nathanaël Blanchet a écrit : >> >> >> >> Le 04/01/2017 à 10:09, Andrea Ghelardi a écrit : >> >> >> Personally I don’t think ansible and ovirt-shell are >> mutually exclusive. >> >> Those who are in ansible and devops realms are not >> really >> scared by >> making python/ansible work with ovirt. >> >> From what I gather, playbooks are quite a de-facto >> pre-requisite to >> build up a real SaaC “Software as a Code” >> environment. >> >> >> >> On the other hand, ovirt-shell can and is a fast/easy >> way to >> perform >> “normal daily tasks”. >> >> totally agree but ovirt-shell is deprecated in 4.1 et >> will be >> removed in >> 4.2. Ansible or sdk4 are proposed as an alternative. >> >> >> Could someone point me to an URL where sdk4 is fully >> documented, as >> I have to get ready for ovirt-shell deprecation? >> >> >> The Rest API is partially documented under >> https://<engine>/api/model . >> It's not complete yet. All new features in 4.0 are documented and >> we are >> working on the 'older' features now. >> (contributions are welcome!) >> >> >> I'm sure no one at Redhat thought about deprecating a tool in >> favor >> of a new one before providing a complete user doc! >> >> >> In addition, the SDK RPM itself contains many examples. See [1]. >> (contributions are welcome!) >> >> Y. >> >> [1] https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/ >> examples >> >> Although these examples, I can successfully create a snapshot, but I didn't find the way to delete it... Regarding many example, it should be possible to locate any service by : name_service = connection.system_service().name.service()
So logically it should be doable with snapshot like snapshots_service = connection.system_service().snapshots.service() but : AttributeError: 'SystemService' object has no attribute 'snapshots
In the SDK the services are arranged in a tree structure that mimics the URL structure of the API. For example, if you want to get the service that manages a particular snapshot, in the API you would use an URL like this:
/ovirt-engine/api/vms/123/snapshots/456
In the Python SDK that translates into this:
snap_service = connection.system_service() \ .vms_service() \ .vm_service('123') \ .snapshots_service() \ .snapshot_service('456')
There is also a generic "service" method that is useful when you already have all that path as an string:
snap_service = connection.service("vms/123/snapshots/456")
Both return exactly the same object. The first is usually better when you are calculating the path of the object step by step, and I generally prefer it as it is less error prone.
Once you have the reference to the service, you can use the 'remove' method:
snap_service.remove()
If you need to search by the names of the objects, then you can use the 'search' methods, which are only available for the top level objects, like VM, data centers, clusters, etc. For example, to find your virtual machine and then the snapshot:
# Get the root service: system_service = connection.system_service()
# Find the virtual machine: vms_service = system_service.vms_service() vm = vms_service.list(search='name=myvm')[0]
# Find the snapshot: vm_service = vms_service.vm_service(vm.id) snaps_service = vm_service.snapshots_service() snaps = snaps_service.list() snap = [s for s in snaps where s.description == 'My snap'][0]
sounds good, thank so much for taking time to explain, but for the last entry, I get ;
snap = [s for s in snaps where s.description == 'My snapshot2'][0] ^ SyntaxError: invalid syntax
I apologize, I wrote that too fast. That is SQL syntax, not Python. In python should be "if" instead of "where":
snap = [s for s in snaps if s.description == 'My snapshot2'][0]
Thank you, it's ok for now.
May I use a version 3 of python?
You SDK supports both Python 2 and Python 3. If you are using the RPMs make sure to install the 'python3-ovirt-engine-sdk4' package.
python3-ovirt-engine-sdk4 doesn't exist in repos, only python-ovirt-engine-sdk4 Thanks to your explanations, I begin to understand the philosophy of this sdk, it's far different from sdk3. What's was wrong with the v3, what was the motivation to write a new version? Will it be possible to use the old sdk3 (manually installed) for old scripts in ovirt 4.2 ?
Note that both are supported, but Python 3 doesn't get a lot of attention yet, so you may find issues. If you find any issue with Python 3 let as know, as we are committed to make it work.
# Remove the snapshot:
snap_service = snaps_service.snap_service(snap.id) snap_service.remove()
I saw an example into the ansible [ working ] way to do the same thing
and I found this : snapshot = snapshots_service.snapshot_service(module.params['snapshot_id']).get()
How can I get this working with sdk, I mean giving snapshot_id as a parameter?
Also the complete reference documentation of the Python SDK is > available > here: > > http://ovirt.github.io/ovirt-engine-sdk/v4.0/4.0.3/index.html > > There also SDKs for Ruby and Java, in case Python is not your > preferred > language: > > Ruby: > https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk > https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/ > sdk/examples > http://www.rubydoc.info/gems/ovirt-engine-sdk > > Java: > https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk > > https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/ > sdk/src/test/java/org/ovirt/engine/sdk4/examples > > > http://www.javadoc.io/doc/org.ovirt.engine.api/sdk > > -- >> Nicolas ECARNOT >> >> _______________________________________________ >> Users mailing list >> Users@ovirt.org <mailto:Users@ovirt.org> >> http://lists.ovirt.org/mailman/listinfo/users >> <http://lists.ovirt.org/mailman/listinfo/users> >> >> >> >> >> _______________________________________________ >> Users mailing list >> Users@ovirt.org >> http://lists.ovirt.org/mailman/listinfo/users >> >> _______________________________________________ > Users mailing list > Users@ovirt.org > http://lists.ovirt.org/mailman/listinfo/users >
-- 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 blanchet@abes.fr
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

This is a multi-part message in MIME format. --------------E989B134D18EA4BA207035AA Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Le 10/01/2017 =C3=A0 16:41, Yaniv Kaul a =C3=A9crit :
On Fri, Jan 6, 2017 at 3:51 PM, Nathana=C3=ABl Blanchet <blanchet@abes.=
fr=20
<mailto:blanchet@abes.fr>> wrote:
There was a last error in the script :
snap_service =3D snaps_service.snapshot_service(snap.id <http://snap.id>) instead of snap_service =3D snaps_service.snap_service(snap.id <http://snap.id>)
For those who are interested in using a full remove_vm_snapshot working script:
Perhaps worth contributing to the examples[1] of the SDK? Y.
[1] https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/examples Done, you're right, this is the best way to do!
# Create the connection to the server: connection =3D sdk.Connection( url=3D'https://engine/ovirt-engine/api <https://engine/ovirt-engine/api>', username=3D'admin@internal', password=3D'passwd', # ca_file=3D'ca.pem', insecure=3DTrue, debug=3DTrue, log=3Dlogging.getLogger(), )
# Locate the virtual machines service and use it to find the virtua= l # machine: vms_service =3D connection.system_service().vms_service() vm =3D vms_service.list(search=3D'name=3Dmyvm')[0]
# Locate the service that manages the snapshots of the virtual machine: vm_service =3D vms_service.vm_service(vm.id <http://vm.id>) snaps_service =3D vm_service.snapshots_service() snaps =3D snaps_service.list() snap =3D [s for s in snaps if s.description =3D=3D 'My snapshot2'][= 0]
# Remove the snapshot: snap_service =3D snaps_service.snapshot_service(snap.id <http://snap.id>) snap_service.remove()
# Close the connection to the server: connection.close()
Le 06/01/2017 =C3=A0 14:44, Nathana=C3=ABl Blanchet a =C3=A9crit :
Le 06/01/2017 =C3=A0 13:39, Juan Hern=C3=A1ndez a =C3=A9crit :
On 01/06/2017 12:20 PM, Nathana=C3=ABl Blanchet wrote:
Le 04/01/2017 =C3=A0 18:55, Juan Hern=C3=A1ndez a =C3=A9= crit :
On 01/04/2017 05:38 PM, Nathana=C3=ABl Blanchet wro= te:
Le 04/01/2017 =C3=A0 15:41, Juan Hern=C3=A1ndez= a =C3=A9crit :
On 01/04/2017 12:30 PM, Yaniv Kaul wrote:
On Wed, Jan 4, 2017 at 1:04 PM, Nicolas Ecarnot <nicolas@ecarnot.net <mailto:nicolas@ecarnot.net> <mailto:nicolas@ecarnot.net <mailto:nicolas@ecarnot.net>>> wrote:
Hello,
Le 04/01/2017 =C3=A0 11:49, Nathana=C3=ABl Blanchet a =C3=A9crit :
Le 04/01/2017 =C3=A0 10:09, Andrea Ghelardi a =C3=A9crit :
Personally I don=E2=80=99= t think ansible and ovirt-shell are mutually exclusive.
Those who are in ansible and devops realms are not really scared by making python/ansible work with ovirt.
From what I gather, playbooks are quite a de-facto pre-requisite to build up a real SaaC =E2=80=9CSoftware as a Code=E2=80=9D en= vironment.
On the other hand, ovirt-shell can and is a fast/easy way to perform =E2=80=9Cnormal daily ta= sks=E2=80=9D.
totally agree but ovirt-shell is deprecated in 4.1 et will be removed in 4.2. Ansible or sdk4 are proposed as an alternative.
Could someone point me to an URL where sdk4 is fully documented, as I have to get ready for ovirt-shell deprecation?
The Rest API is partially documented un= der https://<engine>/api/model . It's not complete yet. All new features in 4.0 are documented and we are working on the 'older' features now. (contributions are welcome!)
I'm sure no one at Redhat thought about deprecating a tool in favor of a new one before providing a complete user doc!
In addition, the SDK RPM itself contains many examples. See [1]. (contributions are welcome!)
Y.
[1] https://github.com/oVirt/ovirt-engine-s= dk/tree/master/sdk/examples <https://github.com/oVirt/ovirt-engine-= sdk/tree/master/sdk/examples>
Although these examples, I can successfully create a snapshot, but I didn't find the way to delete it... Regarding many example, it should be possible to locate any service by : name_service =3D connection.system_service().name.service()
So logically it should be doable with snapshot like snapshots_service =3D connection.system_service().snapshots.service() but : AttributeError: 'SystemService' object has no attribute 'snapshots
In the SDK the services are arranged in a tree structure that mimics the URL structure of the API. For example, if you want to get the service that manages a particular snapshot, in the API you would use an URL like this:
/ovirt-engine/api/vms/123/snapshots/456
In the Python SDK that translates into this:
snap_service =3D connection.system_service() \ .vms_service() \ .vm_service('123') \ .snapshots_service() \ .snapshot_service('456')
There is also a generic "service" method that is useful when you already have all that path as an string:
snap_service =3D connection.service("vms/123/snapshots/456")
Both return exactly the same object. The first is usually better when you are calculating the path of the object step by step, and I generally prefer it as it is less error prone.
Once you have the reference to the service, you can use the 'remove' method:
snap_service.remove()
If you need to search by the names of the objects, then you can use the 'search' methods, which are only available for the top level objects, like VM, data centers, clusters, etc. For example, to find your virtual machine and then the snapshot:
# Get the root service: system_service =3D connection.system_service()
# Find the virtual machine: vms_service =3D system_service.vms_service() vm =3D vms_service.list(search=3D'name=3Dmyvm')= [0]
# Find the snapshot: vm_service =3D vms_service.vm_service(vm.id <http://vm.id>) snaps_service =3D vm_service.snapshots_service(= ) snaps =3D snaps_service.list() snap =3D [s for s in snaps where s.description =3D=3D 'My snap'][0]
sounds good, thank so much for taking time to explain, but for the last entry, I get ;
snap =3D [s for s in snaps where s.description =3D=3D '= My snapshot2'][0] ^ SyntaxError: invalid syntax
I apologize, I wrote that too fast. That is SQL syntax, not Python. In python should be "if" instead of "where":
snap =3D [s for s in snaps if s.description =3D=3D 'My snapshot2'][0]
Thank you, it's ok for now.
May I use a version 3 of python?
You SDK supports both Python 2 and Python 3. If you are using the RPMs make sure to install the 'python3-ovirt-engine-sdk4' packag= e.
python3-ovirt-engine-sdk4 doesn't exist in repos, only python-ovirt-engine-sdk4 Thanks to your explanations, I begin to understand the philosophy of this sdk, it's far different from sdk3. What's was wrong with the v3, what was the motivation to write a new version? Will it be possible to use the old sdk3 (manually installed) for old scripts in ovirt 4.2 ?
Note that both are supported, but Python 3 doesn't get a lot of attention yet, so you may find issues. If you find any issue with Python 3 let as know, as we are committed to make it work.
# Remove the snapshot: snap_service =3D snaps_service.snap_service(snap.id <http://snap.id>= ) snap_service.remove()
I saw an example into the ansible [ working ] way to do the same thing and I found this : snapshot =3D snapshots_service.snapshot_service(module.param= s['snapshot_id']).get()
How can I get this working with sdk, I mean giving snapshot_id as a parameter?
Also the complete reference documentation of the Python SDK is available here:
http://ovirt.github.io/ovirt-engine-sdk/v4.= 0/4.0.3/index.html <http://ovirt.github.io/ovirt-engine-sdk/v4= .0/4.0.3/index.html>
There also SDKs for Ruby and Java, in case Python is not your preferred language:
Ruby: https://github.com/oVirt/ovirt-engine-sdk-r= uby/tree/master/sdk <https://github.com/oVirt/ovirt-engine-sdk-= ruby/tree/master/sdk> https://github.com/oVirt/ovirt-engine-sdk-r= uby/tree/master/sdk/examples <https://github.com/oVirt/ovirt-engine-sdk-= ruby/tree/master/sdk/examples>
http://www.rubydoc.info/gems/ovirt-engine-s= dk <http://www.rubydoc.info/gems/ovirt-engine-= sdk>
Java: https://github.com/oVirt/ovirt-engine-sdk-j= ava/tree/master/sdk <https://github.com/oVirt/ovirt-engine-sdk-= java/tree/master/sdk>
https://github.com/oVirt/ovirt-engine-sdk-j= ava/tree/master/sdk/src/test/java/org/ovirt/engine/sdk4/examples <https://github.com/oVirt/ovirt-engine-sdk-= java/tree/master/sdk/src/test/java/org/ovirt/engine/sdk4/examples>
http://www.javadoc.io/doc/org.ovirt.engine.= api/sdk <http://www.javadoc.io/doc/org.ovirt.engine= .api/sdk>
-- Nicolas ECARNOT
=20 ______________________________________=
Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> <mailto:Users@ovirt.org <mailto:Users@ovirt.org>> http://lists.ovirt.org/mailman/listinfo=
/users
o/users>
o/users
o/users>>
_______________________________________=
________
Users mailing list Users@ovirt.org <mailto:Users@ovirt.org=
/users
o/users>
___________________________________________=
____
Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/use=
rs
ers>
--=20 Nathana=C3=ABl Blanchet
Supervision r=C3=A9seau P=C3=B4le Infrastrutures Informatiques 227 avenue Professeur-Jean-Louis-Viala 34193 MONTPELLIER CEDEX 5 T=C3=A9l. 33 (0)4 67 54 84 55 Fax 33 (0)4 67 54 84 14 blanchet@abes.fr <mailto:blanchet@abes.fr>
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
--=20 Nathana=C3=ABl Blanchet Supervision r=C3=A9seau P=C3=B4le Infrastrutures Informatiques 227 avenue Professeur-Jean-Louis-Viala 34193 MONTPELLIER CEDEX 5 =09 T=C3=A9l. 33 (0)4 67 54 84 55 Fax 33 (0)4 67 54 84 14 blanchet@abes.fr --------------E989B134D18EA4BA207035AA Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable <html> <head> <meta content=3D"text/html; charset=3Dutf-8" http-equiv=3D"Content-Ty= pe"> </head> <body text=3D"#000000" bgcolor=3D"#FFFFFF"> <p><br> </p> <br> <div class=3D"moz-cite-prefix">Le 10/01/2017 =C3=A0 16:41, Yaniv Kaul= a =C3=A9crit=C2=A0:<br> </div> <blockquote cite=3D"mid:CAJgorsZj8XiO-xR4+MtNy3cco9yUbqR5mJnT+q-qciMSkNLEFA@mail.gmai= l.com" type=3D"cite"> <div dir=3D"ltr"><br> <div class=3D"gmail_extra"><br> <div class=3D"gmail_quote">On Fri, Jan 6, 2017 at 3:51 PM, Nathana=C3=ABl Blanchet <span dir=3D"ltr"><<a moz-do-not-send=3D"true" href=3D"mailto:blanchet@abes.fr" target=3D"_blank"><a class=3D"moz-txt-link-abbreviated" h= ref=3D"mailto:blanchet@abes.fr">blanchet@abes.fr</a></a>></span> wrote= :<br> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">There was a last error in the script :<br> <br> snap_service =3D snaps_service.snapshot_service<wbr>(<a moz-do-not-send=3D"true" href=3D"http://snap.id" rel=3D"noreferrer" target=3D"_blank">snap.id</a>) instead= of snap_service =3D snaps_service.snap_service(<a moz-do-not-send=3D"true" href=3D"http://snap.id" rel=3D"noreferrer" target=3D"_blank">sna<wbr>p.id</a>)<br=
',<br> =C2=A0 username=3D'admin@internal',<br> =C2=A0 password=3D'passwd',<br> #=C2=A0 ca_file=3D'ca.pem',<br> =C2=A0 insecure=3DTrue,<br> =C2=A0 debug=3DTrue,<br> =C2=A0 log=3Dlogging.getLogger(),<br> )<br> <br> # Locate the virtual machines service and use it to find the virtual<br> # machine:<br> vms_service =3D connection.system_service().vm<wbr>s_servic= e()<span class=3D"gmail-"><br> vm =3D vms_service.list(search=3D'name=3D<wbr>myvm')[0]<b= r> <br> </span> # Locate the service that manages the snapshots of the virtual machine:<span class=3D"gmail-"><br> vm_service =3D vms_service.vm_service(<a moz-do-not-send=3D"true" href=3D"http://vm.id" rel=3D"noreferrer" target=3D"_blank">vm.id</a>)<br> snaps_service =3D vm_service.snapshots_service()<br> snaps =3D snaps_service.list()<br> </span><span class=3D"gmail-"> snap =3D [s for s in snaps if s.description =3D=3D 'My snapshot2'][0]<br> <br> </span> # Remove the snapshot:<br> snap_service =3D snaps_service.snapshot_service<wbr>(<a moz-do-not-send=3D"true" href=3D"http://snap.id" rel=3D"noreferrer" target=3D"_blank">snap.id</a>)<br> snap_service.remove()<br> <br> # Close the connection to the server:<br> connection.close() <div class=3D"gmail-HOEnZb"> <div class=3D"gmail-h5"><br> <br> Le 06/01/2017 =C3=A0 14:44, Nathana=C3=ABl Blanchet a =C3= =A9crit :<br> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0=
<br> For those who are interested in using a full remove_vm_snapshot working script:<br> </blockquote> <div><br> </div> <div>Perhaps worth contributing to the examples[1] of the SDK?</div> <div>Y.</div> <div><br> </div> <div>[1] <a moz-do-not-send=3D"true" href=3D"https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/example= s">https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/examples</a>= </div> </div> </div> </div> </blockquote> Done, you're right, this is the best way to do!<br> <blockquote cite=3D"mid:CAJgorsZj8XiO-xR4+MtNy3cco9yUbqR5mJnT+q-qciMSkNLEFA@mail.gmai= l.com" type=3D"cite"> <div dir=3D"ltr"> <div class=3D"gmail_extra"> <div class=3D"gmail_quote"> <div>=C2=A0</div> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br> # Create the connection to the server:<br> connection =3D sdk.Connection(<br> =C2=A0 url=3D'<a moz-do-not-send=3D"true" href=3D"https://engine/ovirt-engine/api" rel=3D"noreferre= r" target=3D"_blank">https://engine/ovirt-engi<wbr>ne/api</a= px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br> <br> Le 06/01/2017 =C3=A0 13:39, Juan Hern=C3=A1ndez a =C3= =A9crit :<br> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> On 01/06/2017 12:20 PM, Nathana=C3=ABl Blanchet wro= te:<br> <blockquote class=3D"gmail_quote" style=3D"margin:0= px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br> Le 04/01/2017 =C3=A0 18:55, Juan Hern=C3=A1ndez a= =C3=A9crit :<br> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> On 01/04/2017 05:38 PM, Nathana=C3=ABl Blanchet wrote:<br> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> Le 04/01/2017 =C3=A0 15:41, Juan Hern=C3=A1nd= ez a =C3=A9crit :<br> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> On 01/04/2017 12:30 PM, Yaniv Kaul wrote:<b= r> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> On Wed, Jan 4, 2017 at 1:04 PM, Nicolas Ecarnot <<a moz-do-not-send=3D"true" href=3D"mailto:nicolas@ecarnot.net" target=3D"_blank">nicolas@ecarnot.net</= a><br> <mailto:<a moz-do-not-send=3D"true" href=3D"mailto:nicolas@ecarnot.net" target=3D"_blank">nicolas@ecarnot.net</= a>>> wrote:<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0Hello,<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0Le 04/01/2017 = =C3=A0 11:49, Nathana=C3=ABl Blanchet a =C3=A9crit :<br> <br> <br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= Le 04/01/2017 =C3=A0 10:09, Andrea Ghelardi a =C3=A9crit :<br> <br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0Personally I don=E2=80=99t think ansible and ovirt-shell are<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0mutually exclusive.<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0Those who are in ansible and devops realms are not<br> really<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0scared by<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0making python/ansible work with ovirt.<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0From what I gather, playbooks are quite a de-facto<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0pre-requisite to<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0build up a real SaaC =E2=80=9CSoftware as a Code=E2=80=9D envi= ronment.<br> <br> <br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0On the other hand, ovirt-shell can and is a fast/easy<br> way to<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0perform<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0=E2=80=9Cnormal daily tasks=E2=80=9D.<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= totally agree but ovirt-shell is deprecated in 4.1 et<br> will be<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= removed in<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= 4.2. Ansible or sdk4 are proposed as an alternative.<br> <br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0Could someone = point me to an URL where sdk4 is fully<br> documented, as<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0I have to get = ready for ovirt-shell deprecation?<br> <br> <br> The Rest API is partially documented under<br> <a class=3D"moz-txt-link-freetext" href=3D= "https://">https://</a><engine>/api/model .<br> It's not complete yet. All new features in 4.0 are documented and<br> we are<br> working on the 'older' features now.<br> (contributions are welcome!)<br> <br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0I'm sure no on= e at Redhat thought about deprecating a tool in<br> favor<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0of a new one b= efore providing a complete user doc!<br> <br> <br> In addition, the SDK RPM itself contains many examples. See [1].<br> (contributions are welcome!)<br> <br> Y.<br> <br> [1] <a moz-do-not-send=3D"true" href=3D"https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/example= s" rel=3D"noreferrer" target=3D"_blank">ht= tps://github.com/oVirt/ovirt<wbr>-engine-sdk/tree/master/sdk/<wbr>example= s</a><br> <br> </blockquote> </blockquote> Although these examples, I can successfully create a snapshot, but I<br> didn't find the way to delete it...<br> Regarding many example, it should be possible to locate any service by :<br> name_service =3D connection.system_service().na<wbr>me.service= ()<br> <br> So logically it should be doable with snapshot like<br> snapshots_service =3D connection.system_service().sn<wbr>apshots.se= rvice()<br> but : AttributeError: 'SystemService' object has no attribute 'snapshots<br> <br> </blockquote> In the SDK the services are arranged in a tree structure that mimics the<br> URL structure of the API. For example, if you want to get the service<br> that manages a particular snapshot, in the API you would use an URL like<br> this:<br> <br> =C2=A0 =C2=A0 /ovirt-engine/api/vms/123/snap<wb= r>shots/456<br> <br> In the Python SDK that translates into this:<br=
<br> =C2=A0 =C2=A0 snap_service =3D connection.syste= m_service() \<br> =C2=A0 =C2=A0 =C2=A0 .vms_service() \<br> =C2=A0 =C2=A0 =C2=A0 .vm_service('123') \<br> =C2=A0 =C2=A0 =C2=A0 .snapshots_service() \<br> =C2=A0 =C2=A0 =C2=A0 .snapshot_service('456')<b= r> <br> There is also a generic "service" method that is useful when you already<br> have all that path as an string:<br> <br> =C2=A0 =C2=A0 snap_service =3D connection.service("vms/123/sn<wbr>apshots/456"= )<br> <br> Both return exactly the same object. The first is usually better when<br> you are calculating the path of the object step by step, and I generally<br> prefer it as it is less error prone.<br> <br> Once you have the reference to the service, you can use the 'remove'<br> method:<br> <br> =C2=A0 =C2=A0 snap_service.remove()<br> <br> If you need to search by the names of the objects, then you can use the<br> 'search' methods, which are only available for the top level objects,<br> like VM, data centers, clusters, etc. For example, to find your virtual<br> machine and then the snapshot:<br> <br> =C2=A0 =C2=A0 # Get the root service:<br> =C2=A0 =C2=A0 system_service =3D connection.system_service()<br> <br> =C2=A0 =C2=A0 # Find the virtual machine:<br> =C2=A0 =C2=A0 vms_service =3D system_service.vm= s_service()<br> =C2=A0 =C2=A0 vm =3D vms_service.list(search=3D= 'name=3D<wbr>myvm')[0]<br> <br> =C2=A0 =C2=A0 # Find the snapshot:<br> =C2=A0 =C2=A0 vm_service =3D vms_service.vm_ser= vice(<a moz-do-not-send=3D"true" href=3D"http://vm.id= " rel=3D"noreferrer" target=3D"_blank">vm.id</a=
)<br> =C2=A0 =C2=A0 snaps_service =3D vm_service.snapshots_service()<br> =C2=A0 =C2=A0 snaps =3D snaps_service.list()<br=
=C2=A0 =C2=A0 snap =3D [s for s in snaps where s.description =3D=3D 'My snap'][0]<br> </blockquote> sounds good, thank so much for taking time to explain, but for the last<br> entry, I get ;<br> <br> snap =3D [s for s in snaps where s.description =3D= =3D 'My snapshot2'][0]<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ^<br> SyntaxError: invalid syntax<br> </blockquote> I apologize, I wrote that too fast. That is SQL syntax, not Python. In<br> python should be "if" instead of "where":<br> <br> =C2=A0 =C2=A0snap =3D [s for s in snaps if s.descri= ption =3D=3D 'My snapshot2'][0]<br> </blockquote> Thank you, it's ok for now.<br> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br> <blockquote class=3D"gmail_quote" style=3D"margin:0= px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> May I use a version 3 of python?<br> </blockquote> You SDK supports both Python 2 and Python 3. If you are using the RPMs<br> make sure to install the 'python3-ovirt-engine-sdk4' package.<br> </blockquote> <br> python3-ovirt-engine-sdk4 doesn't exist in repos, only python-ovirt-engine-sdk4<br> Thanks to your explanations, I begin to understand the philosophy of this sdk, it's far different from sdk3.<br> What's was wrong with the v3, what was the motivation to write a new version?<br> Will it be possible to use the old sdk3 (manually installed) for old scripts in ovirt 4.2 ?<br> <br> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br> Note that both are supported, but Python 3 doesn't get a lot of<br> attention yet, so you may find issues. If you find any issue with Python<br> 3 let as know, as we are committed to make it work.<br> <br> <blockquote class=3D"gmail_quote" style=3D"margin:0= px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> =C2=A0 =C2=A0 # Remove the snapshot:<br> =C2=A0 =C2=A0 snap_service =3D snaps_service.sn= ap_service(<a moz-do-not-send=3D"true" href=3D"http://snap.= id" rel=3D"noreferrer" target=3D"_blank">sna<wbr>= p.id</a>)<br> =C2=A0 =C2=A0 snap_service.remove()<br> <br> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> I saw an example into the ansible [ working ] way to do the same thing<br> and I found this :<br> snapshot =3D<br> snapshots_service.snapshot_ser<wbr>vice(modul= e.params['snapshot_<wbr>id']).get() <br> <br> How can I get this working with sdk, I mean giving snapshot_id as a<br> parameter?<br> <br> <br> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> Also the complete reference documentation of the Python SDK is<br> available<br> here:<br> <br> <a moz-do-not-send=3D"true" href=3D"http://ovirt.github.io/ovirt-engi= ne-sdk/v4.0/4.0.3/index.html" rel=3D"noreferrer" target=3D"_blank">http= ://ovirt.github.io/ovirt-e<wbr>ngine-sdk/v4.0/4.0.3/index.htm<wbr>l</a><b= r> <br> There also SDKs for Ruby and Java, in case Python is not your preferred<br> language:<br> <br> =C2=A0 =C2=A0 =C2=A0Ruby:<br> <a moz-do-not-send=3D"true" href=3D"https://github.com/oVirt/ovirt-en= gine-sdk-ruby/tree/master/sdk" rel=3D"noreferrer" target=3D"_blank">http= s://github.com/oVirt/ovirt<wbr>-engine-sdk-ruby/tree/master/<wbr>sdk</a><= br> <a moz-do-not-send=3D"true" href=3D"https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk/ex= amples" rel=3D"noreferrer" target=3D"_blank">http= s://github.com/oVirt/ovirt<wbr>-engine-sdk-ruby/tree/master/<wbr>sdk/exam= ples</a> <br> =C2=A0 =C2=A0 =C2=A0<a moz-do-not-send=3D"t= rue" href=3D"http://www.rubydoc.info/gems/ovir= t-engine-sdk" rel=3D"noreferrer" target=3D"_blank">http= ://www.rubydoc.info/gems/<wbr>ovirt-engine-sdk</a><br> <br> =C2=A0 =C2=A0 =C2=A0Java:<br> <a moz-do-not-send=3D"true" href=3D"https://github.com/oVirt/ovirt-en= gine-sdk-java/tree/master/sdk" rel=3D"noreferrer" target=3D"_blank">http= s://github.com/oVirt/ovirt<wbr>-engine-sdk-java/tree/master/<wbr>sdk</a><= br> <br> <a moz-do-not-send=3D"true" href=3D"https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk/sr= c/test/java/org/ovirt/engine/sdk4/examples" rel=3D"noreferrer" target=3D"_blank">http= s://github.com/oVirt/ovirt<wbr>-engine-sdk-java/tree/master/<wbr>sdk/src/= test/java/org/ovirt/<wbr>engine/sdk4/examples</a> <br> <br> <br> =C2=A0 =C2=A0 =C2=A0<a moz-do-not-send=3D"t= rue" href=3D"http://www.javadoc.io/doc/org.ovi= rt.engine.api/sdk" rel=3D"noreferrer" target=3D"_blank">http= ://www.javadoc.io/doc/<wbr>org.ovirt.engine.api/sdk</a><br> <br> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> =C2=A0 =C2=A0 =C2=A0 =C2=A0--<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0Nicolas ECARNO= T<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0______________= _______________<wbr>__________________<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0Users mailing = list<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0<a moz-do-not-= send=3D"true" href=3D"mailto:Users@ovirt.org" target=3D"_blank">Users@ovirt.org</a> <mailto:<a moz-do-not-send=3D"true" href=3D"mailto:Users@ovirt.org" target=3D"_blank">Users@ovirt.org</a>&g= t;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0<a moz-do-not-= send=3D"true" href=3D"http://lists.ovirt.org/mailman/= listinfo/users" rel=3D"noreferrer" target=3D"_blank">ht= tp://lists.ovirt.org/mailma<wbr>n/listinfo/users</a><br> <<a moz-do-not-send=3D"true" href=3D"http://lists.ovirt.org/mailman/= listinfo/users" rel=3D"noreferrer" target=3D"_blank">ht= tp://lists.ovirt.org/mailma<wbr>n/listinfo/users</a>><br> <br> <br> <br> <br> ______________________________<wbr>______= ___________<br> Users mailing list<br> <a moz-do-not-send=3D"true" href=3D"mailto:Users@ovirt.org" target=3D"_blank">Users@ovirt.org</a><b= r> <a moz-do-not-send=3D"true" href=3D"http://lists.ovirt.org/mailman/= listinfo/users" rel=3D"noreferrer" target=3D"_blank">ht= tp://lists.ovirt.org/mailman<wbr>/listinfo/users</a><br> <br> </blockquote> ______________________________<wbr>________= _________<br> Users mailing list<br> <a moz-do-not-send=3D"true" href=3D"mailto:Users@ovirt.org" target=3D"_blank">Users@ovirt.org</a><br> <a moz-do-not-send=3D"true" href=3D"http://lists.ovirt.org/mailman/li= stinfo/users" rel=3D"noreferrer" target=3D"_blank">http= ://lists.ovirt.org/mailman<wbr>/listinfo/users</a><br> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <br> </blockquote> <br> -- <br> Nathana=C3=ABl Blanchet<br> <br> Supervision r=C3=A9seau<br> P=C3=B4le Infrastrutures Informatiques<br> 227 avenue Professeur-Jean-Louis-Viala<br> 34193 MONTPELLIER CEDEX 5=C2=A0 =C2=A0 =C2=A0 =C2=A0<br=
T=C3=A9l. 33 (0)4 67 54 84 55<br> Fax=C2=A0 33 (0)4 67 54 84 14<br> <a moz-do-not-send=3D"true" href=3D"mailto:blanchet@abes.fr" target=3D"_blank">bl= anchet@abes.fr</a><br> <br> ______________________________<wbr>_________________<br=
Users mailing list<br> <a moz-do-not-send=3D"true" href=3D"mailto:Users@ovirt.org" target=3D"_blank">Use= rs@ovirt.org</a><br> <a moz-do-not-send=3D"true" href=3D"http://lists.ovirt.org/mailman/listinfo/users= " rel=3D"noreferrer" target=3D"_blank">http://lists.ovi= rt.org/mailman<wbr>/listinfo/users</a><br> </div> </div> </blockquote> </div> <br> </div> </div> </blockquote> <br> <pre class=3D"moz-signature" cols=3D"72">--=20 Nathana=C3=ABl Blanchet Supervision r=C3=A9seau P=C3=B4le Infrastrutures Informatiques 227 avenue Professeur-Jean-Louis-Viala 34193 MONTPELLIER CEDEX 5 =09 T=C3=A9l. 33 (0)4 67 54 84 55 Fax 33 (0)4 67 54 84 14 <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:blanchet@abes.fr">bl= anchet@abes.fr</a> </pre> </body> </html> --------------E989B134D18EA4BA207035AA--

On 01/06/2017 02:44 PM, Nathanaël Blanchet wrote:
Le 06/01/2017 à 13:39, Juan Hernández a écrit :
On 01/06/2017 12:20 PM, Nathanaël Blanchet wrote:
Le 04/01/2017 à 18:55, Juan Hernández a écrit :
On 01/04/2017 05:38 PM, Nathanaël Blanchet wrote:
Le 04/01/2017 à 15:41, Juan Hernández a écrit :
On 01/04/2017 12:30 PM, Yaniv Kaul wrote: > On Wed, Jan 4, 2017 at 1:04 PM, Nicolas Ecarnot <nicolas@ecarnot.net > <mailto:nicolas@ecarnot.net>> wrote: > > Hello, > > Le 04/01/2017 à 11:49, Nathanaël Blanchet a écrit : > > > > Le 04/01/2017 à 10:09, Andrea Ghelardi a écrit : > > > Personally I don’t think ansible and ovirt-shell are > mutually exclusive. > > Those who are in ansible and devops realms are not > really > scared by > making python/ansible work with ovirt. > > From what I gather, playbooks are quite a de-facto > pre-requisite to > build up a real SaaC “Software as a Code” > environment. > > > > On the other hand, ovirt-shell can and is a fast/easy > way to > perform > “normal daily tasks”. > > totally agree but ovirt-shell is deprecated in 4.1 et > will be > removed in > 4.2. Ansible or sdk4 are proposed as an alternative. > > > Could someone point me to an URL where sdk4 is fully > documented, as > I have to get ready for ovirt-shell deprecation? > > > The Rest API is partially documented under > https://<engine>/api/model . > It's not complete yet. All new features in 4.0 are documented and > we are > working on the 'older' features now. > (contributions are welcome!) > > > I'm sure no one at Redhat thought about deprecating a tool in > favor > of a new one before providing a complete user doc! > > > In addition, the SDK RPM itself contains many examples. See [1]. > (contributions are welcome!) > > Y. > > [1] > https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/examples > Although these examples, I can successfully create a snapshot, but I didn't find the way to delete it... Regarding many example, it should be possible to locate any service by : name_service = connection.system_service().name.service()
So logically it should be doable with snapshot like snapshots_service = connection.system_service().snapshots.service() but : AttributeError: 'SystemService' object has no attribute 'snapshots
In the SDK the services are arranged in a tree structure that mimics the URL structure of the API. For example, if you want to get the service that manages a particular snapshot, in the API you would use an URL like this:
/ovirt-engine/api/vms/123/snapshots/456
In the Python SDK that translates into this:
snap_service = connection.system_service() \ .vms_service() \ .vm_service('123') \ .snapshots_service() \ .snapshot_service('456')
There is also a generic "service" method that is useful when you already have all that path as an string:
snap_service = connection.service("vms/123/snapshots/456")
Both return exactly the same object. The first is usually better when you are calculating the path of the object step by step, and I generally prefer it as it is less error prone.
Once you have the reference to the service, you can use the 'remove' method:
snap_service.remove()
If you need to search by the names of the objects, then you can use the 'search' methods, which are only available for the top level objects, like VM, data centers, clusters, etc. For example, to find your virtual machine and then the snapshot:
# Get the root service: system_service = connection.system_service()
# Find the virtual machine: vms_service = system_service.vms_service() vm = vms_service.list(search='name=myvm')[0]
# Find the snapshot: vm_service = vms_service.vm_service(vm.id) snaps_service = vm_service.snapshots_service() snaps = snaps_service.list() snap = [s for s in snaps where s.description == 'My snap'][0] sounds good, thank so much for taking time to explain, but for the last entry, I get ;
snap = [s for s in snaps where s.description == 'My snapshot2'][0] ^ SyntaxError: invalid syntax
I apologize, I wrote that too fast. That is SQL syntax, not Python. In python should be "if" instead of "where":
snap = [s for s in snaps if s.description == 'My snapshot2'][0] Thank you, it's ok for now.
May I use a version 3 of python? You SDK supports both Python 2 and Python 3. If you are using the RPMs make sure to install the 'python3-ovirt-engine-sdk4' package.
python3-ovirt-engine-sdk4 doesn't exist in repos, only python-ovirt-engine-sdk4
Maybe you are using CentOS 7, where there is no Python 3. For distributions that are supported by oVirt, and where there is Python 3 available, we have the RPMs. For example for Fedora 23: http://resources.ovirt.org/pub/ovirt-4.0/rpm/fc23/x86_64/python3-ovirt-engin... However, the primary distribution mechanism of the SDK is not RPM, but PyPI: https://pypi.python.org/pypi/ovirt-engine-sdk-python If you managed to get Python 3 installed in your environment, then you can install the Python 3 SDK like this: pip3 install ovirt-engine-sdk Note that installing the SDK in this way will require to build the C extensions that it contains, so before installing it make sure to install the 'gcc', 'python3-devel' and 'libxml2-devel' packages, as described here: https://github.com/oVirt/ovirt-engine-sdk#building
Thanks to your explanations, I begin to understand the philosophy of this sdk, it's far different from sdk3. What's was wrong with the v3, what was the motivation to write a new version?
The implementation of version 3 of the SDK was based on a tool called 'generateDS.py', which generates Python code from XML schema. The XML schema used by the engine was in turn tuned for its own internal implementation details, which uses Java and the JAXB XML schema compiler. The result was Python code that was difficult to maintain, performs poorly, and doesn't support Python 3. To fix those issues, and many other issues (in the server side, in the Java SDK, etc), we needed to introduce a new mechanism to specify the API, and that requires a different SDK, that does not use the 'generateDS.py' tool.
Will it be possible to use the old sdk3 (manually installed) for old scripts in ovirt 4.2 ?
No, we will remove version 3 of the API from the server, so no client will be able to use the API unless it uses version 4.
Note that both are supported, but Python 3 doesn't get a lot of attention yet, so you may find issues. If you find any issue with Python 3 let as know, as we are committed to make it work.
# Remove the snapshot: snap_service = snaps_service.snap_service(snap.id) snap_service.remove()
I saw an example into the ansible [ working ] way to do the same thing and I found this : snapshot = snapshots_service.snapshot_service(module.params['snapshot_id']).get()
How can I get this working with sdk, I mean giving snapshot_id as a parameter?
Also the complete reference documentation of the Python SDK is available here:
http://ovirt.github.io/ovirt-engine-sdk/v4.0/4.0.3/index.html
There also SDKs for Ruby and Java, in case Python is not your preferred language:
Ruby: https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk
https://github.com/oVirt/ovirt-engine-sdk-ruby/tree/master/sdk/examples
http://www.rubydoc.info/gems/ovirt-engine-sdk
Java: https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk
https://github.com/oVirt/ovirt-engine-sdk-java/tree/master/sdk/src/test/java...
http://www.javadoc.io/doc/org.ovirt.engine.api/sdk
> -- > Nicolas ECARNOT > > _______________________________________________ > Users mailing list > Users@ovirt.org <mailto:Users@ovirt.org> > http://lists.ovirt.org/mailman/listinfo/users > <http://lists.ovirt.org/mailman/listinfo/users> > > > > > _______________________________________________ > Users mailing list > Users@ovirt.org > http://lists.ovirt.org/mailman/listinfo/users > _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

ovirt_vms_facts module returns list of vms which match the pattern, so something like this should work (I didn't try): - name: print shell: echo "{{ item.name }} >> vms_name" with_items: "{{ ovirt_vms }}" Oh right, the snapshots module wasn't merged, I will fix up, thank you. Yes I agree, that Ansible modules can't currently fully replace the CLI. On Fri, Dec 30, 2016 at 5:22 PM, Nathanaël Blanchet <blanchet@abes.fr> wrote:
Interesting work and thank you for this stuff. I played with some modules (ovirt_vms_facts) to get some vms name for example.
[root@acore ovirt]# ansible-playbook All_Vms_list.yml with - name: List vms ovirt_vms_facts: auth: "{{ ovirt_auth }}" pattern: name=test_cloud fetch_nested: true nested_attributes: name register: ovirt_vms
- shell: echo "{{ ovirt_vms.name }} > vms_name" // doesn't work
- shell: echo "{{ ovirt_vms }} > vms_name // returns an unicode json file, that's surely why we can't parse it. Can you help me to solve this into the ovirt_vms_facts.py file?
I have no such problem with ovirt_snaphots_module and I can easily get the snaphot.id variable.... but:
I had to manually copy the ovirt_snaphsots_module because it is not present on the git tree. This is very curious: we can find it here http://ovirt-ansible-modules.readthedocs.io/en/latest/_modules/ovirt_snapsho..., but it is not available on the main ansible git tre. On the doc, return values are not described
For the moment, my opinion is that ansible can't be as much convinient as the current CLI, e.g. ovirt-shell -E "list vms", out of the box. Is there a really reason to deprecate it?
Le 02/12/2016 à 14:12, Ondra Machacek a écrit :
Hello all,
I would like to kindly ask everyone who is Ansible or oVirt user for testing of the new Ansible oVirt modules. For everyone who is familiar with the Ansible and oVirt, this[1] describes the steps you need to do, to setup oVirt modules library and start using those modules (Most of those modules will be available in Ansible 2.3, some of them are already in 2.2).
If you have any issue setting this up, please contact me, I will do the best to help you.
If you have an issue, which you think is a bug, please open an issue here[2]. Please note that Ansible is merging it's repositories, so since next week it will actually be stored here[3]. If you are missing anything please open an issue as well, or just contact me, and I will do fix it. You are also very welcome to sent PR with fixes.
For those who don't have testing environment which can test against, I've created an Vagrant project which will deploy you the oVirt instance using Ansible playbooks. You can find how to use it here[4].
The repository also contains few examples[5], so you don't have to copy-paste them from the source.
Thanks all for reading this and any feedback, Ondra
[1] https://github.com/machacekondra/ovirt-tests/releases/tag/0.1 [2] https://github.com/ansible/ansible-modules-extras/issues [3] https://github.com/ansible/ansible [4] https://github.com/machacekondra/ovirt-tests [5] https://github.com/machacekondra/ovirt-tests/tree/master/examples _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
-- 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 blanchet@abes.fr

Thanks Ondra Le 05/01/2017 à 21:31, Ondra Machacek a écrit :
ovirt_vms_facts module returns list of vms which match the pattern, so something like this should work (I didn't try):
- name: print shell: echo "{{ item.name }} >> vms_name" with_items: "{{ ovirt_vms }}" Yes it works, more accurately with shell: echo "{{ item.name }}" >> vms_name
Now I want to get the full vm facts as a json file. For this, I use the return value ovirt_vms as this : shell: echo "{{ ovirt_vms }}" > ovirt_vms.json But the file is unicode format (with "u" anywhere) and I'd want to get the same in a standard json file (pretty or not). Is there a way to get this file in an ascci format or to convert it?
Oh right, the snapshots module wasn't merged, I will fix up, thank you.
Yes I agree, that Ansible modules can't currently fully replace the CLI.
On Fri, Dec 30, 2016 at 5:22 PM, Nathanaël Blanchet <blanchet@abes.fr> wrote:
Interesting work and thank you for this stuff. I played with some modules (ovirt_vms_facts) to get some vms name for example.
[root@acore ovirt]# ansible-playbook All_Vms_list.yml with - name: List vms ovirt_vms_facts: auth: "{{ ovirt_auth }}" pattern: name=test_cloud fetch_nested: true nested_attributes: name register: ovirt_vms
- shell: echo "{{ ovirt_vms.name }} > vms_name" // doesn't work
- shell: echo "{{ ovirt_vms }} > vms_name // returns an unicode json file, that's surely why we can't parse it. Can you help me to solve this into the ovirt_vms_facts.py file?
I have no such problem with ovirt_snaphots_module and I can easily get the snaphot.id variable.... but:
I had to manually copy the ovirt_snaphsots_module because it is not present on the git tree. This is very curious: we can find it here http://ovirt-ansible-modules.readthedocs.io/en/latest/_modules/ovirt_snapsho..., but it is not available on the main ansible git tre. On the doc, return values are not described
For the moment, my opinion is that ansible can't be as much convinient as the current CLI, e.g. ovirt-shell -E "list vms", out of the box. Is there a really reason to deprecate it?
Le 02/12/2016 à 14:12, Ondra Machacek a écrit :
Hello all,
I would like to kindly ask everyone who is Ansible or oVirt user for testing of the new Ansible oVirt modules. For everyone who is familiar with the Ansible and oVirt, this[1] describes the steps you need to do, to setup oVirt modules library and start using those modules (Most of those modules will be available in Ansible 2.3, some of them are already in 2.2).
If you have any issue setting this up, please contact me, I will do the best to help you.
If you have an issue, which you think is a bug, please open an issue here[2]. Please note that Ansible is merging it's repositories, so since next week it will actually be stored here[3]. If you are missing anything please open an issue as well, or just contact me, and I will do fix it. You are also very welcome to sent PR with fixes.
For those who don't have testing environment which can test against, I've created an Vagrant project which will deploy you the oVirt instance using Ansible playbooks. You can find how to use it here[4].
The repository also contains few examples[5], so you don't have to copy-paste them from the source.
Thanks all for reading this and any feedback, Ondra
[1] https://github.com/machacekondra/ovirt-tests/releases/tag/0.1 [2] https://github.com/ansible/ansible-modules-extras/issues [3] https://github.com/ansible/ansible [4] https://github.com/machacekondra/ovirt-tests [5] https://github.com/machacekondra/ovirt-tests/tree/master/examples _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
-- 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 blanchet@abes.fr
-- 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 blanchet@abes.fr

This is a cryptographically signed message in MIME format. --------------ms020309030908040404030106 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: quoted-printable Hi Ondra, I am testing oVirt ansible modules and I am stucked in this simple=20 scenario. I would like to create a new vm with new bootable disk=20 attached to it. I wrote this simple role for it http://pastebin.com/XwwyCH4b when I run it I got $ ansible-playbook site.yml PLAY [create ovirt vm]=20 ********************************************************* TASK [setup]=20 ******************************************************************* ok: [localhost] TASK [create_vm : ovirt_auth]=20 ************************************************** ok: [localhost] TASK [create_vm : ovirt_disks]=20 ************************************************* changed: [localhost] TASK [create_vm : ovirt_vms]=20 *************************************************** fatal: [localhost]: FAILED! =3D> {"changed": false, "failed": true, "msg"= :=20 "Fault reason is \"Operation Failed\". Fault detail is \"[Cannot run VM=20 without at least one bootable disk.\nAlternatives:\n- Create a disk for=20 this VM, and rerun the VM.\n- Change the boot sequence using the Edit VM = command (Boot Option Sub-Tab).\n- Use the 'Run Once' command to select a = different boot option and rerun the VM.]\". HTTP response code is 409."} to retry, use: --limit=20 @/home/dron/#work/#cit/ovirt/ansible/ovirt/site.retry PLAY RECAP=20 ********************************************************************* localhost : ok=3D3 changed=3D1 unreachable=3D0=20 failed=3D1 In the manager I can see the is disk successfully created, vm too, disk=20 is attached to vm but not activated. When I activate it manually, I am able to run this vm. Any ideas how can I achieve this via ansible? Thanks in advance, Jiri Slezka On 12/02/2016 02:12 PM, Ondra Machacek wrote:
Hello all,
I would like to kindly ask everyone who is Ansible or oVirt user for testing of the new Ansible oVirt modules. For everyone who is familiar with the Ansible and oVirt, this[1] describes the steps you need to do,=
to setup oVirt modules library and start using those modules (Most of those modules will be available in Ansible 2.3, some of them are alread= y in 2.2).
If you have any issue setting this up, please contact me, I will do the=
best to help you.
If you have an issue, which you think is a bug, please open an issue here[2]. Please note that Ansible is merging it's repositories, so sinc= e next week it will actually be stored here[3]. If you are missing anything please open an issue as well, or just contact me, and I will do fix it. You are also very welcome to sent PR with fixes.
For those who don't have testing environment which can test against, I've created an Vagrant project which will deploy you the oVirt instanc= e using Ansible playbooks. You can find how to use it here[4].
The repository also contains few examples[5], so you don't have to copy-paste them from the source.
Thanks all for reading this and any feedback, Ondra
[1] https://github.com/machacekondra/ovirt-tests/releases/tag/0.1 [2] https://github.com/ansible/ansible-modules-extras/issues [3] https://github.com/ansible/ansible [4] https://github.com/machacekondra/ovirt-tests [5] https://github.com/machacekondra/ovirt-tests/tree/master/examples _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
--------------ms020309030908040404030106 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCC Cn4wggUJMIID8aADAgECAhACt8ndrdK9CetZxFyQDGB4MA0GCSqGSIb3DQEBCwUAMGUxCzAJ BgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2Vy dC5jb20xJDAiBgNVBAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xNDExMTgx MjAwMDBaFw0yNDExMTgxMjAwMDBaMHIxCzAJBgNVBAYTAk5MMRYwFAYDVQQIEw1Ob29yZC1I b2xsYW5kMRIwEAYDVQQHEwlBbXN0ZXJkYW0xDzANBgNVBAoTBlRFUkVOQTEmMCQGA1UEAxMd VEVSRU5BIGVTY2llbmNlIFBlcnNvbmFsIENBIDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQCwp9Jj5Aej1xPkS1GV3LvBdemFmkUR//nSzBodqsU3dv2BCRD30r4gt5oRsYty qDGF2nnItxV1SkwVoDxFeRzOIHYNYvBRHaiGvCQjEXzPRTocOSVfWpmq/zAL/QOEqpJogeM+ 0IBGiJcAENJshl7UcfjYbBnN5qStk74f52VWFf/aiF7MVJnsUr3oriQvXYOzs8N/NXyyQyim atBbumJVCNszF1X+XHCGfPNvxlNFW9ktv7azK0baminfLcsh6ubCdINZc+Nof2lU387NCDgg oh3KsYVcZTSuhh7qp6MjxE5VqOZod1hpXXzDOkjK+DAMC57iZXssncp24eaN08VlAgMBAAGj ggGmMIIBojASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjB5BggrBgEFBQcB AQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcw AoY3aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENB LmNydDCBgQYDVR0fBHoweDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lD ZXJ0QXNzdXJlZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29t L0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggr BgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAdBgNVHQ4EFgQUjJ8RLubj egSlHlWLRggEpu2XcKYwHwYDVR0jBBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZI hvcNAQELBQADggEBAI5HEV91Oen8WHFCoJkeu2Av+b/kWTV2qH/YNI1Xsbou2hHKhh4IyNkF OxA/TUiuK2qQnQ5hAS0TIrs9SJ1Ke+DjXd/cTBiw7lCYSW5hkzigFV+iSivninpItafWqYBS WxITl1KHBS9YBskhEqO5GLliDMPiAgjqUBQ/H1qZMlZNQIuFu0UaFUQuZUpJFr4+0zpzPxsB iWU2muAoGItwbaP55EYshM7+v/J+x6kIhAJt5Dng8fOmOvR9F6Vw2/E0EZ6oQ8g1fdhwM101 S1OI6J1tUil1r7ES/svNqVWVb7YkUEBcPo8ppfHnTI/uxsn2tslsWefsOGJxNYUUSMAb9Eow ggVtMIIEVaADAgECAhAJGghy20GNQBKKy20wIXVXMA0GCSqGSIb3DQEBCwUAMHIxCzAJBgNV BAYTAk5MMRYwFAYDVQQIEw1Ob29yZC1Ib2xsYW5kMRIwEAYDVQQHEwlBbXN0ZXJkYW0xDzAN BgNVBAoTBlRFUkVOQTEmMCQGA1UEAxMdVEVSRU5BIGVTY2llbmNlIFBlcnNvbmFsIENBIDMw HhcNMTYxMDE3MDAwMDAwWhcNMTcxMTE2MTIwMDAwWjCBkzETMBEGCgmSJomT8ixkARkWA29y ZzEWMBQGCgmSJomT8ixkARkWBnRlcmVuYTETMBEGCgmSJomT8ixkARkWA3RjczELMAkGA1UE BhMCQ1oxJTAjBgNVBAoTHFNpbGVzaWFuIFVuaXZlcnNpdHkgaW4gT3BhdmExGzAZBgNVBAMT EkppcmkgU2xlemthIHNsZXprYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPd3 XaprhIlr9KQ0VkOzTRn8wTrzw26B1SWOr6M+/lL9x/T33HMJTwavfoATuzczB/PnURjHu3kW j5449dAKHmne3LgsNgLPp14YbhhXJtoe5WuJoZ/P1g2o5tR6neKkSlIMWUWBBiCMmZU70EfZ 2NmDjVAhyxOJedSw+Uk4lWs3nrRgtzg3c/K8fkalDnAbTrlCRs0UOUu0NdebrHDdc0AyGpdU apsdD/vBIMlh0aF0il5qfBeCMjND/YAMlJileuYAH59+XWZVnZ2vWwyhE1WEeEpDUhyr3P4B oWTkivIzlT/jynCIYlmoGlwA8qs3aMkcAF0z1xN+zmuJcJ//T30CAwEAAaOCAdswggHXMB8G A1UdIwQYMBaAFIyfES7m43oEpR5Vi0YIBKbtl3CmMB0GA1UdDgQWBBSs4bsp5TEqufKnjp5U kbi2XfR8vzAMBgNVHRMBAf8EAjAAMB0GA1UdEQQWMBSBEmppcmkuc2xlemthQHNsdS5jejAO BgNVHQ8BAf8EBAMCBLAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDQGA1UdIAQt MCswDAYKKoZIhvdMBQICATAMBgpghkgBhv1sBB8BMA0GCyqGSIb3TAUCAwMDMIGFBgNVHR8E fjB8MDygOqA4hjZodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vVEVSRU5BZVNjaWVuY2VQZXJz b25hbENBMy5jcmwwPKA6oDiGNmh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9URVJFTkFlU2Np ZW5jZVBlcnNvbmFsQ0EzLmNybDB7BggrBgEFBQcBAQRvMG0wJAYIKwYBBQUHMAGGGGh0dHA6 Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBFBggrBgEFBQcwAoY5aHR0cDovL2NhY2VydHMuZGlnaWNl cnQuY29tL1RFUkVOQWVTY2llbmNlUGVyc29uYWxDQTMuY3J0MA0GCSqGSIb3DQEBCwUAA4IB AQCg0e3UlUq/MB5fHWNWvp4sz2mknbburgqrARkEX2JUlcKe1rRZbN/6E4qBKqGvVeXdvIhi G9GQAhhXG2phojtY2r/MjmWt+vEE7zQoVhOyBxEY4ganXG4dhi4VLwsF7zggLh2XbqmhWcdZ G/SBwF3wEqiOI4hX9ryaPcKM4c/2ojzzNrHI/WQez7LzrRJKrQY1k8dCKXliW7Am7garfIEs L0xXK/6u4rZ5nH+PmvDVpr7MC0UpPP5AcfFAgf4dyu65IZ3TS3+ig0fqplGCpqCvaxGziWbn YyQsUWgcdQJZckUWOg234UAUd4aIvt3fx2aDK9o1hunXShp5Xstzf9xeMYIDwzCCA78CAQEw gYYwcjELMAkGA1UEBhMCTkwxFjAUBgNVBAgTDU5vb3JkLUhvbGxhbmQxEjAQBgNVBAcTCUFt c3RlcmRhbTEPMA0GA1UEChMGVEVSRU5BMSYwJAYDVQQDEx1URVJFTkEgZVNjaWVuY2UgUGVy c29uYWwgQ0EgMwIQCRoIcttBjUASisttMCF1VzANBglghkgBZQMEAgEFAKCCAg0wGAYJKoZI hvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTcwMjAxMTQyNzE1WjAvBgkq hkiG9w0BCQQxIgQgMd6zaJQcPH+kbWOrROM5LTbDvy34fqODbWzSXVMoBs8wbAYJKoZIhvcN AQkPMV8wXTALBglghkgBZQMEASowCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMA4GCCqGSIb3 DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDCBlwYJKwYB BAGCNxAEMYGJMIGGMHIxCzAJBgNVBAYTAk5MMRYwFAYDVQQIEw1Ob29yZC1Ib2xsYW5kMRIw EAYDVQQHEwlBbXN0ZXJkYW0xDzANBgNVBAoTBlRFUkVOQTEmMCQGA1UEAxMdVEVSRU5BIGVT Y2llbmNlIFBlcnNvbmFsIENBIDMCEAkaCHLbQY1AEorLbTAhdVcwgZkGCyqGSIb3DQEJEAIL MYGJoIGGMHIxCzAJBgNVBAYTAk5MMRYwFAYDVQQIEw1Ob29yZC1Ib2xsYW5kMRIwEAYDVQQH EwlBbXN0ZXJkYW0xDzANBgNVBAoTBlRFUkVOQTEmMCQGA1UEAxMdVEVSRU5BIGVTY2llbmNl IFBlcnNvbmFsIENBIDMCEAkaCHLbQY1AEorLbTAhdVcwDQYJKoZIhvcNAQEBBQAEggEAPzqP hrjrxPl+Z2WDypOff0pnol9cZBju9Ti6RJoKlRAL9kyG9nx4BIbSjIbH2BAxCHSRqDruRfp4 D/TK1Dz9oEeDt8+io4jd1lV/45MCxx3+sNNYvxdPtlK2GGvETECKRvlXwHBbZX6M+rD+FGmf ma4Du12sUTIZDBBgbLRqiUFmTPrGhxB9n/1mlHLlSJ6dd5rkAcL4l5dq/RTh0rFvOoGe4oOX ZdrNTrkzALdgIwrwNx9Xxw/TwXcvEIovNT9jWAO0Ik88sTE0ViGSiHIzmLtCqtRkva1hvNPi Rk4NGTTeuYUyrm/uQDJKzB1hzD9lMUJ6wPV51B3PnlwCFeJ5JQAAAAAAAA== --------------ms020309030908040404030106--

On Wed, Feb 1, 2017 at 3:27 PM, Jiří Sléžka <jiri.slezka@slu.cz> wrote:
Hi Ondra,
I am testing oVirt ansible modules and I am stucked in this simple scenario. I would like to create a new vm with new bootable disk attached to it.
I wrote this simple role for it
when I run it I got
$ ansible-playbook site.yml
PLAY [create ovirt vm] *********************************************************
TASK [setup] ******************************************************************* ok: [localhost]
TASK [create_vm : ovirt_auth] ************************************************** ok: [localhost]
TASK [create_vm : ovirt_disks] ************************************************* changed: [localhost]
TASK [create_vm : ovirt_vms] *************************************************** fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "Fault reason is \"Operation Failed\". Fault detail is \"[Cannot run VM without at least one bootable disk.\nAlternatives:\n- Create a disk for this VM, and rerun the VM.\n- Change the boot sequence using the Edit VM command (Boot Option Sub-Tab).\n- Use the 'Run Once' command to select a different boot option and rerun the VM.]\". HTTP response code is 409."} to retry, use: --limit @/home/dron/#work/#cit/ovirt/ansible/ovirt/site.retry
PLAY RECAP ********************************************************************* localhost : ok=3 changed=1 unreachable=0 failed=1
In the manager I can see the is disk successfully created, vm too, disk is attached to vm but not activated.
When I activate it manually, I am able to run this vm.
Any ideas how can I achieve this via ansible?
Yes, this is bug which was fixed[1], but wasn't backported to 2.2. But since you are using role you are good. Just download lastest vms module[2] and put it into the library directory, which you must create in your role, for example: $ mkdir roles/vm-create-role/library $ cd roles/vm-create-role/library $ wget https://raw.githubusercontent.com/ansible/ansible-modules-extras/devel/cloud... Then it should work OK, at least I think the modules in library has higher priority. If not then renaming that module should work, for example: $ mv ovirt_vms.py ovirt_vms_dev.py and then use it as: tasks: ... - name: Create vm ovirt_vms_dev: name: vm0 ... Btw. in ~month there should be Ansible 2.3 release, with has much more features, and also will have this issue fixed. [1] https://github.com/ansible/ansible-modules-extras/pull/3322 [2] https://raw.githubusercontent.com/ansible/ansible-modules-extras/devel/cloud...
Thanks in advance,
Jiri Slezka
On 12/02/2016 02:12 PM, Ondra Machacek wrote:
Hello all,
I would like to kindly ask everyone who is Ansible or oVirt user for testing of the new Ansible oVirt modules. For everyone who is familiar with the Ansible and oVirt, this[1] describes the steps you need to do, to setup oVirt modules library and start using those modules (Most of those modules will be available in Ansible 2.3, some of them are already in 2.2).
If you have any issue setting this up, please contact me, I will do the best to help you.
If you have an issue, which you think is a bug, please open an issue here[2]. Please note that Ansible is merging it's repositories, so since next week it will actually be stored here[3]. If you are missing anything please open an issue as well, or just contact me, and I will do fix it. You are also very welcome to sent PR with fixes.
For those who don't have testing environment which can test against, I've created an Vagrant project which will deploy you the oVirt instance using Ansible playbooks. You can find how to use it here[4].
The repository also contains few examples[5], so you don't have to copy-paste them from the source.
Thanks all for reading this and any feedback, Ondra
[1] https://github.com/machacekondra/ovirt-tests/releases/tag/0.1 [2] https://github.com/ansible/ansible-modules-extras/issues [3] https://github.com/ansible/ansible [4] https://github.com/machacekondra/ovirt-tests [5] https://github.com/machacekondra/ovirt-tests/tree/master/examples _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

This is a cryptographically signed message in MIME format. --------------ms010807000501020509040004 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Hi, On 02/01/2017 04:06 PM, Ondra Machacek wrote:
On Wed, Feb 1, 2017 at 3:27 PM, Ji=C5=99=C3=AD Sl=C3=A9=C5=BEka <jiri.s= lezka@slu.cz> wrote:
Hi Ondra,
I am testing oVirt ansible modules and I am stucked in this simple sce= nario. I would like to create a new vm with new bootable disk attached to it.=
I wrote this simple role for it
when I run it I got
$ ansible-playbook site.yml
PLAY [create ovirt vm] *********************************************************
TASK [setup] ******************************************************************* ok: [localhost]
TASK [create_vm : ovirt_auth] ************************************************** ok: [localhost]
TASK [create_vm : ovirt_disks] ************************************************* changed: [localhost]
TASK [create_vm : ovirt_vms] *************************************************** fatal: [localhost]: FAILED! =3D> {"changed": false, "failed": true, "m=
sg":
"Fault reason is \"Operation Failed\". Fault detail is \"[Cannot run V= M without at least one bootable disk.\nAlternatives:\n- Create a disk fo= r this VM, and rerun the VM.\n- Change the boot sequence using the Edit VM co= mmand (Boot Option Sub-Tab).\n- Use the 'Run Once' command to select a diffe= rent boot option and rerun the VM.]\". HTTP response code is 409."} to retry, use: --limit @/home/dron/#work/#cit/ovirt/ansible/ovirt/site.retry
PLAY RECAP ********************************************************************* localhost : ok=3D3 changed=3D1 unreachable=3D0 = failed=3D1
In the manager I can see the is disk successfully created, vm too, dis= k is attached to vm but not activated.
When I activate it manually, I am able to run this vm.
Any ideas how can I achieve this via ansible?
Yes, this is bug which was fixed[1], but wasn't backported to 2.2.
But since you are using role you are good. Just download lastest vms module[2] and put it into the library directo= ry, which you must create in your role, for example:
$ mkdir roles/vm-create-role/library $ cd roles/vm-create-role/library $ wget https://raw.githubusercontent.com/ansible/ansible-modules-extra= s/devel/cloud/ovirt/ovirt_vms.py
yes, it is the way. I have downloaded devel version of module, put it into library=20 directory. It was correctly used by ansible but it failed with an error "msg": "'NoneType' object has no attribute 'append'" never mind, I will wait till Ansible 2.3 and then I'll try it once more. Cheers, Jiri
Then it should work OK, at least I think the modules in library has higher priority. If not then renaming that module should work, for example:
$ mv ovirt_vms.py ovirt_vms_dev.py
and then use it as:
tasks: ... - name: Create vm ovirt_vms_dev: name: vm0 ...
Btw. in ~month there should be Ansible 2.3 release, with has much more =
features,
and also will have this issue fixed.
[1] https://github.com/ansible/ansible-modules-extras/pull/3322 [2] https://raw.githubusercontent.com/ansible/ansible-modules-extras/de= vel/cloud/ovirt/ovirt_vms.py
Thanks in advance,
Jiri Slezka
On 12/02/2016 02:12 PM, Ondra Machacek wrote:
Hello all,
I would like to kindly ask everyone who is Ansible or oVirt user for testing of the new Ansible oVirt modules. For everyone who is familia=
r
with the Ansible and oVirt, this[1] describes the steps you need to d= o, to setup oVirt modules library and start using those modules (Most of=
those modules will be available in Ansible 2.3, some of them are alre= ady in 2.2).
If you have any issue setting this up, please contact me, I will do t= he best to help you.
If you have an issue, which you think is a bug, please open an issue here[2]. Please note that Ansible is merging it's repositories, so si= nce next week it will actually be stored here[3]. If you are missing anything please open an issue as well, or just contact me, and I will=
do fix it. You are also very welcome to sent PR with fixes.
For those who don't have testing environment which can test against, I've created an Vagrant project which will deploy you the oVirt insta= nce using Ansible playbooks. You can find how to use it here[4].
The repository also contains few examples[5], so you don't have to copy-paste them from the source.
Thanks all for reading this and any feedback, Ondra
[1] https://github.com/machacekondra/ovirt-tests/releases/tag/0.1 [2] https://github.com/ansible/ansible-modules-extras/issues [3] https://github.com/ansible/ansible [4] https://github.com/machacekondra/ovirt-tests [5] https://github.com/machacekondra/ovirt-tests/tree/master/examples=
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
--------------ms010807000501020509040004 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCC Cn4wggUJMIID8aADAgECAhACt8ndrdK9CetZxFyQDGB4MA0GCSqGSIb3DQEBCwUAMGUxCzAJ BgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2Vy dC5jb20xJDAiBgNVBAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xNDExMTgx MjAwMDBaFw0yNDExMTgxMjAwMDBaMHIxCzAJBgNVBAYTAk5MMRYwFAYDVQQIEw1Ob29yZC1I b2xsYW5kMRIwEAYDVQQHEwlBbXN0ZXJkYW0xDzANBgNVBAoTBlRFUkVOQTEmMCQGA1UEAxMd VEVSRU5BIGVTY2llbmNlIFBlcnNvbmFsIENBIDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQCwp9Jj5Aej1xPkS1GV3LvBdemFmkUR//nSzBodqsU3dv2BCRD30r4gt5oRsYty qDGF2nnItxV1SkwVoDxFeRzOIHYNYvBRHaiGvCQjEXzPRTocOSVfWpmq/zAL/QOEqpJogeM+ 0IBGiJcAENJshl7UcfjYbBnN5qStk74f52VWFf/aiF7MVJnsUr3oriQvXYOzs8N/NXyyQyim atBbumJVCNszF1X+XHCGfPNvxlNFW9ktv7azK0baminfLcsh6ubCdINZc+Nof2lU387NCDgg oh3KsYVcZTSuhh7qp6MjxE5VqOZod1hpXXzDOkjK+DAMC57iZXssncp24eaN08VlAgMBAAGj ggGmMIIBojASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjB5BggrBgEFBQcB AQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcw AoY3aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENB LmNydDCBgQYDVR0fBHoweDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lD ZXJ0QXNzdXJlZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29t L0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggr BgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAdBgNVHQ4EFgQUjJ8RLubj egSlHlWLRggEpu2XcKYwHwYDVR0jBBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZI hvcNAQELBQADggEBAI5HEV91Oen8WHFCoJkeu2Av+b/kWTV2qH/YNI1Xsbou2hHKhh4IyNkF OxA/TUiuK2qQnQ5hAS0TIrs9SJ1Ke+DjXd/cTBiw7lCYSW5hkzigFV+iSivninpItafWqYBS WxITl1KHBS9YBskhEqO5GLliDMPiAgjqUBQ/H1qZMlZNQIuFu0UaFUQuZUpJFr4+0zpzPxsB iWU2muAoGItwbaP55EYshM7+v/J+x6kIhAJt5Dng8fOmOvR9F6Vw2/E0EZ6oQ8g1fdhwM101 S1OI6J1tUil1r7ES/svNqVWVb7YkUEBcPo8ppfHnTI/uxsn2tslsWefsOGJxNYUUSMAb9Eow ggVtMIIEVaADAgECAhAJGghy20GNQBKKy20wIXVXMA0GCSqGSIb3DQEBCwUAMHIxCzAJBgNV BAYTAk5MMRYwFAYDVQQIEw1Ob29yZC1Ib2xsYW5kMRIwEAYDVQQHEwlBbXN0ZXJkYW0xDzAN BgNVBAoTBlRFUkVOQTEmMCQGA1UEAxMdVEVSRU5BIGVTY2llbmNlIFBlcnNvbmFsIENBIDMw HhcNMTYxMDE3MDAwMDAwWhcNMTcxMTE2MTIwMDAwWjCBkzETMBEGCgmSJomT8ixkARkWA29y ZzEWMBQGCgmSJomT8ixkARkWBnRlcmVuYTETMBEGCgmSJomT8ixkARkWA3RjczELMAkGA1UE BhMCQ1oxJTAjBgNVBAoTHFNpbGVzaWFuIFVuaXZlcnNpdHkgaW4gT3BhdmExGzAZBgNVBAMT EkppcmkgU2xlemthIHNsZXprYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPd3 XaprhIlr9KQ0VkOzTRn8wTrzw26B1SWOr6M+/lL9x/T33HMJTwavfoATuzczB/PnURjHu3kW j5449dAKHmne3LgsNgLPp14YbhhXJtoe5WuJoZ/P1g2o5tR6neKkSlIMWUWBBiCMmZU70EfZ 2NmDjVAhyxOJedSw+Uk4lWs3nrRgtzg3c/K8fkalDnAbTrlCRs0UOUu0NdebrHDdc0AyGpdU apsdD/vBIMlh0aF0il5qfBeCMjND/YAMlJileuYAH59+XWZVnZ2vWwyhE1WEeEpDUhyr3P4B oWTkivIzlT/jynCIYlmoGlwA8qs3aMkcAF0z1xN+zmuJcJ//T30CAwEAAaOCAdswggHXMB8G A1UdIwQYMBaAFIyfES7m43oEpR5Vi0YIBKbtl3CmMB0GA1UdDgQWBBSs4bsp5TEqufKnjp5U kbi2XfR8vzAMBgNVHRMBAf8EAjAAMB0GA1UdEQQWMBSBEmppcmkuc2xlemthQHNsdS5jejAO BgNVHQ8BAf8EBAMCBLAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDQGA1UdIAQt MCswDAYKKoZIhvdMBQICATAMBgpghkgBhv1sBB8BMA0GCyqGSIb3TAUCAwMDMIGFBgNVHR8E fjB8MDygOqA4hjZodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vVEVSRU5BZVNjaWVuY2VQZXJz b25hbENBMy5jcmwwPKA6oDiGNmh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9URVJFTkFlU2Np ZW5jZVBlcnNvbmFsQ0EzLmNybDB7BggrBgEFBQcBAQRvMG0wJAYIKwYBBQUHMAGGGGh0dHA6 Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBFBggrBgEFBQcwAoY5aHR0cDovL2NhY2VydHMuZGlnaWNl cnQuY29tL1RFUkVOQWVTY2llbmNlUGVyc29uYWxDQTMuY3J0MA0GCSqGSIb3DQEBCwUAA4IB AQCg0e3UlUq/MB5fHWNWvp4sz2mknbburgqrARkEX2JUlcKe1rRZbN/6E4qBKqGvVeXdvIhi G9GQAhhXG2phojtY2r/MjmWt+vEE7zQoVhOyBxEY4ganXG4dhi4VLwsF7zggLh2XbqmhWcdZ G/SBwF3wEqiOI4hX9ryaPcKM4c/2ojzzNrHI/WQez7LzrRJKrQY1k8dCKXliW7Am7garfIEs L0xXK/6u4rZ5nH+PmvDVpr7MC0UpPP5AcfFAgf4dyu65IZ3TS3+ig0fqplGCpqCvaxGziWbn YyQsUWgcdQJZckUWOg234UAUd4aIvt3fx2aDK9o1hunXShp5Xstzf9xeMYIDwzCCA78CAQEw gYYwcjELMAkGA1UEBhMCTkwxFjAUBgNVBAgTDU5vb3JkLUhvbGxhbmQxEjAQBgNVBAcTCUFt c3RlcmRhbTEPMA0GA1UEChMGVEVSRU5BMSYwJAYDVQQDEx1URVJFTkEgZVNjaWVuY2UgUGVy c29uYWwgQ0EgMwIQCRoIcttBjUASisttMCF1VzANBglghkgBZQMEAgEFAKCCAg0wGAYJKoZI hvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTcwMjAxMTU0NDUzWjAvBgkq hkiG9w0BCQQxIgQg9EwiUGjOM67oXyNKghkOYTBuz6LWI9QAhcoPCCDlX10wbAYJKoZIhvcN AQkPMV8wXTALBglghkgBZQMEASowCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMA4GCCqGSIb3 DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDCBlwYJKwYB BAGCNxAEMYGJMIGGMHIxCzAJBgNVBAYTAk5MMRYwFAYDVQQIEw1Ob29yZC1Ib2xsYW5kMRIw EAYDVQQHEwlBbXN0ZXJkYW0xDzANBgNVBAoTBlRFUkVOQTEmMCQGA1UEAxMdVEVSRU5BIGVT Y2llbmNlIFBlcnNvbmFsIENBIDMCEAkaCHLbQY1AEorLbTAhdVcwgZkGCyqGSIb3DQEJEAIL MYGJoIGGMHIxCzAJBgNVBAYTAk5MMRYwFAYDVQQIEw1Ob29yZC1Ib2xsYW5kMRIwEAYDVQQH EwlBbXN0ZXJkYW0xDzANBgNVBAoTBlRFUkVOQTEmMCQGA1UEAxMdVEVSRU5BIGVTY2llbmNl IFBlcnNvbmFsIENBIDMCEAkaCHLbQY1AEorLbTAhdVcwDQYJKoZIhvcNAQEBBQAEggEA40eN qL9U+DMyuwuV++If3itlkQCdee14MhDf8Tv6H2rlTDfJkbtwlrI7PwLCJpoa++TlGpkKe4p2 LpDxIgSTha6yhe0ZJOp+H0nEhzMhQlgHjoLRuFMv/dpS4zccPec12IrzB+4xd8wY21n0b/Kq z12LMUvnRFDLA1zPgwkoU8ZRuj4HqRTdhOk2Cco0N/MpAKQnxd4acClbLpKl+/VRbXc3Cqiu CQM/NQ0mxyr4A1E55nGOENU26aiHKd2HjM/qg2SIqodUTXSlRR+Mo3alZt98XW74amYg4DdO B9thdR163wV6pj1LS72qGW4NVZmCIxaZzw3ne/M3HXeooXkUbwAAAAAAAA== --------------ms010807000501020509040004--
participants (8)
-
Andrea Ghelardi
-
Dan Yasny
-
Jiří Sléžka
-
Juan Hernández
-
Nathanaël Blanchet
-
Nicolas Ecarnot
-
Ondra Machacek
-
Yaniv Kaul