<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, May 2, 2017 at 10:46 PM, Akira Yoshiyama <span dir="ltr"><<a href="mailto:akirayoshiyama@gmail.com" target="_blank">akirayoshiyama@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello all,<br>
<br>
I'm pleased to announce Yakumo, yet another unified OpenStack client<br>
library with an interactive shell. You can find Yakumo below:<br>
<br>
   PyPI: <a href="https://pypi.python.org/pypi/yakumo/" rel="noreferrer" target="_blank">https://pypi.python.org/pypi/<wbr>yakumo/</a><br>
   Github: <a href="https://github.com/yosshy/python-yakumo/" rel="noreferrer" target="_blank">https://github.com/yosshy/<wbr>python-yakumo/</a><br>
<br>
Yakumo development focuses to:<br>
<br>
* Pythonic: handles each cloud resource as an object in the same manner<br>
* Unified: handles all OpenStack APIs at once<br>
* Less dependency: no import of other OpenStack client libraries<br>
<br>
Why do we have to specify IDs of cloud resources in Python<br>
programming? Python is an object-oriented programming language. IMO,<br>
we should use objects to represent cloud resources, including method<br>
arguments. It's one of the reasons I've started Yakumo project.<br>
<br>
Yakumo 0.11.0 suports OpenStack APIs below:<br>
<br>
* Identity API v2/v3<br>
* Compute API v2<br>
* Networking v2<br>
* Image Service API v1/v2<br>
* Block Storage v1/v2<br>
* Object Storage v1<br>
<br>
Yakumo has 23 sample smoke tests below for the APIs now. It's useful<br>
to test your cloud and learn usage of Yakumo.<br>
<br>
   <a href="https://github.com/yosshy/python-yakumo/tree/master/yakumo/smoketests" rel="noreferrer" target="_blank">https://github.com/yosshy/<wbr>python-yakumo/tree/master/<wbr>yakumo/smoketests</a><br>
<br>
And also you can use 'ossh', an interactive python shell in Yakumo.<br>
It's a good example.<br>
# ossh --os-cloud=mypackstack<br>
<br>
Finding existing resources:<br>
(c is an client object automatically generated for mypackstack environment)<br>
>>> i = c.image.find_one(name="trusty"<wbr>)<br>
>>> f = c.flavor.find_one(name='m1.<wbr>small')<br>
>>> k = c.key_pair.find_one(name='<wbr>key1')<br>
>>> n = c.network.find_one(name='<wbr>private')<br>
>>> i, f, k, n<br>
(<yakumo.glance.v2.image.<wbr>Resource<br>
(id="887b0393-5065-4bcf-941d-<wbr>623100baa06e", name="trusty")>,<br>
<yakumo.nova.v2.flavor.<wbr>Resource (id="2", name="m1.small")>,<br>
<yakumo.nova.v2.key_pair.<wbr>Resource (name="key1")>,<br>
<yakumo.neutron.v2.network.<wbr>Resource<br>
(id="22e3fa30-11c0-4065-bbf7-<wbr>8d8bbb50f63b", name="private")>)<br>
<br>
Creating a server:<br>
>>> s = c.server.create(name='vm1', image=i, flavor=f, networks=[n], key_pair=k)<br>
>>> s<br>
<yakumo.nova.v2.server.<wbr>Resource<br>
(id="b1477f6c-bbc4-4c37-ba05-<wbr>14b935a5d08c" empty)><br>
<br>
Waiting for building task finished:<br>
>>> s.wait_for_finished()<br>
>>> s.status<br>
u'ACTIVE'<br>
<br>
Deleting the server:<br>
>>> s.delete()<br>
<br>
See README for more usage and details:<br>
<br>
   <a href="https://github.com/yosshy/python-yakumo/blob/master/README.md" rel="noreferrer" target="_blank">https://github.com/yosshy/<wbr>python-yakumo/blob/master/<wbr>README.md</a><br>
<br>
Feedback is welcome!<br>
<br>
Cheers,<br>
Akira Yoshiyama</blockquote><div><br></div><div>Looks almost exactly like openstacksdk. Why duplicate that and pollute an already crowded space as there are already far too many existing libraries to work with OpenStack?</div></div></div></div>