[ovirt-users] Request for oVirt Ansible modules testing feedback

Juan Hernández jhernand at redhat.com
Fri Jan 6 12:39:06 UTC 2017


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 at ecarnot.net
>>>>> <mailto:nicolas at 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/org/ovirt/engine/sdk4/examples
>>>>
>>>>
>>>>     http://www.javadoc.io/doc/org.ovirt.engine.api/sdk
>>>>
>>>>>       --
>>>>>       Nicolas ECARNOT
>>>>>
>>>>>       _______________________________________________
>>>>>       Users mailing list
>>>>>       Users at ovirt.org <mailto:Users at ovirt.org>
>>>>>       http://lists.ovirt.org/mailman/listinfo/users
>>>>>       <http://lists.ovirt.org/mailman/listinfo/users>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Users mailing list
>>>>> Users at ovirt.org
>>>>> http://lists.ovirt.org/mailman/listinfo/users
>>>>>
>>>> _______________________________________________
>>>> Users mailing list
>>>> Users at ovirt.org
>>>> http://lists.ovirt.org/mailman/listinfo/users
> 



More information about the Users mailing list