<div dir="ltr"><div><div>Hello Juan ! <br><br>Thank you very much ! I am quite new to ovirt sdk and I really appreciate your help. <br><br></div> ** with 4.0 I actually meant 3.6 , my typo :) <br></div><div><br></div><div><br></div><br><div><div><div><br></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 8, 2017 at 9:18 PM, Juan Hernández <span dir="ltr">&lt;<a href="mailto:jhernand@redhat.com" target="_blank">jhernand@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 03/08/2017 06:53 PM, Niyazi Elvan wrote:<br>
&gt; Hi Folks !<br>
&gt;<br>
&gt; I am looking for a documentation for ovirt-engine-sdk-python-4.1 but<br>
&gt; could not find anything yet. Looks like there are many changes compared<br>
&gt; to 4.0.<br>
&gt;<br>
<br>
</span>Version 4.1 of the SDK isn&#39;t very different for version 4.0. It is very<br>
different from version 3.6.<br>
<br>
Note that version 3 of the API, and version 3 of the SDK are deprecated<br>
since version 4.0 of the engine, and they will be removed in version 4.2<br>
of the engine.<br>
<br>
There is a general description of version 4 of the SDK here:<br>
<br>
  <a href="https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/README.adoc" rel="noreferrer" target="_blank">https://github.com/oVirt/<wbr>ovirt-engine-sdk/blob/master/<wbr>sdk/README.adoc</a><br>
<br>
A collection of examples here:<br>
<br>
  <a href="https://github.com/oVirt/ovirt-engine-sdk/tree/master/sdk/examples" rel="noreferrer" target="_blank">https://github.com/oVirt/<wbr>ovirt-engine-sdk/tree/master/<wbr>sdk/examples</a><br>
<br>
And reference documentation here:<br>
<br>
  <a href="http://ovirt.github.io/ovirt-engine-sdk/4.1" rel="noreferrer" target="_blank">http://ovirt.github.io/ovirt-<wbr>engine-sdk/4.1</a><br>
<br>
You may also find useful the documentation of the API itself:<br>
<br>
  <a href="http://ovirt.github.io/ovirt-engine-api-model/4.1" rel="noreferrer" target="_blank">http://ovirt.github.io/ovirt-<wbr>engine-api-model/4.1</a><br>
<br>
Specially the section that describes how to add virtual machines, as<br>
there is an example of how to add a virtual machine from a snapshot there:<br>
<br>
<br>
<a href="http://ovirt.github.io/ovirt-engine-api-model/4.1/#services/vms/methods/add" rel="noreferrer" target="_blank">http://ovirt.github.io/ovirt-<wbr>engine-api-model/4.1/#<wbr>services/vms/methods/add</a><br>
<span class=""><br>
&gt; Can anyone help me about how to clone a VM from a snapshot using the<br>
&gt; latest sdk ?<br>
&gt;<br>
<br>
</span>To create a virtual machine from a snapshot with the latest version of<br>
the SDK you will need something like this:<br>
<br>
---8&lt;---<br>
import time<br>
<br>
import ovirtsdk4 as sdk<br>
import ovirtsdk4.types as types<br>
<br>
# This example shows how to clone a virtual machine from an snapshot.<br>
<br>
# Create the connection to the server:<br>
connection = sdk.Connection(<br>
    url=&#39;<a href="https://engine.example.com/ovirt-engine/api" rel="noreferrer" target="_blank">https://engine.example.<wbr>com/ovirt-engine/api</a>&#39;,<br>
    username=&#39;admin@internal&#39;,<br>
    password=&#39;...&#39;,<br>
    ca_file=&#39;ca.pem&#39;<br>
)<br>
<br>
# Get the reference to the root of the tree of services:<br>
system_service = connection.system_service()<br>
<br>
# Find the virtual machine:<br>
vms_service = system_service.vms_service()<br>
vm = vms_service.list(search=&#39;name=<wbr>myvm&#39;)[0]<br>
<br>
# Find the service that manages the virtual machine:<br>
vm_service = vms_service.vm_service(<a href="http://vm.id" rel="noreferrer" target="_blank">vm.id</a>)<br>
<br>
# Find the snapshot. Note that the snapshots collection doesn&#39;t support<br>
# search, so we need to retrieve the complete list and the look for the<br>
# snapshot that has the description that we are looking for.<br>
snaps_service = vm_service.snapshots_service()<br>
snaps = snaps_service.list()<br>
snap = next(<br>
  (s for s in snaps if s.description == &#39;mysnap&#39;),<br>
  None<br>
)<br>
<br>
# Create a new virtual machine, cloning it from the snapshot:<br>
cloned_vm = vms_service.add(<br>
    vm=types.Vm(<br>
        name=&#39;myclonedvm&#39;,<br>
        snapshots=[<br>
            types.Snapshot(<br>
                id=<a href="http://snap.id" rel="noreferrer" target="_blank">snap.id</a><br>
            )<br>
        ],<br>
        cluster=types.Cluster(<br>
            name=&#39;mycluster&#39;<br>
        )<br>
    )<br>
)<br>
<br>
# Find the service that manages the cloned virtual machine:<br>
cloned_vm_service = vms_service.vm_service(<a href="http://cloned_vm.id" rel="noreferrer" target="_blank">cloned_<wbr>vm.id</a>)<br>
<br>
# Wait till the virtual machine is down, as that means that the creation<br>
# of the disks of the virtual machine has been completed:<br>
while True:<br>
    time.sleep(5)<br>
    cloned_vm = cloned_vm_service.get()<br>
    if cloned_vm.status == types.VmStatus.DOWN:<br>
        break<br>
<br>
# Close the connection to the server:<br>
connection.close()<br>
---&gt;8---<br>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Niyazi Elvan</div>
</div>