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 <nico...@ecarnot.net >>>>> <mailto:nico...@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@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 > _______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users