[openstack-dev] [puppet][Fuel] Using Native Ruby Client for Openstack Providers

Rich Megginson rmeggins at redhat.com
Tue Oct 13 14:18:36 UTC 2015

On 10/13/2015 07:13 AM, Vladimir Kuklin wrote:
> Puppetmaster and Fuelers,
> Last week I mentioned that I would like to bring the theme of using 
> native ruby OpenStack client and use it within the providers.
> Emilien told me that I had already been late and the decision was made 
> that puppet-openstack decided to not work with Aviator based on [0]. I 
> went through this thread and did not find any unresolvable issues with 
> using Aviator in comparison with potential benefits it could have 
> brought up.
> What I saw actually was like that:
> * Pros
> 1) It is a native ruby client
> 2) We can import it in puppet and use all the power of Ruby
> 3) We will not need to have a lot of forks/execs for puppet

I think 1), 2), and 3) go together - that is, the reason why 1) and 2) 
are good is because of 3) - since aviator is native ruby, there is no 
need to fork/exec.  What other "power of Ruby" is there to be taken 
advantage of?

As for fork/exec, it remains to be seen that fork/exec is causing a 
performance problem.  Note that you can also run the openstackclient in 
"persistent" mode - that is, use it as a persistent pipe, which will 
read commands from stdin and output to stdout, which should alleviate 
much if not all of any performance problem caused by multiple 
fork/exec.  We just haven't investigated this route yet because it needs 
to be proven that fork/exec causes performance problems.

> 4) You are relying on negotiated and structured output provided by API 
> (JSON) instead of introducing workarounds for client output like [1]

openstackclient can output JSON.

> * Cons
> 1) Aviator is not actively supported

This is huge.

> 2) Aviator does not track all the upstream OpenStack features while 
> native OpenStack client does support them

This is also huge.

> 3) Ruby community is not really interested in OpenStack (this one is 
> arguable, I think)
> * Proposed solution
> While I completely understand all the cons against using Aviator right 
> now, I see that Pros above are essential enough to change our mind and 
> invest our own resources into creating really good OpenStack binding 
> in Ruby.

I'm still not convinced.

> Some are saying that there is not so big involvement of Ruby into 
> OpenStack. But we are actually working with Puppet/Ruby and are 
> invloved into community. So why should not we own this by ourselves 
> and lead by example here?

> I understand that many of you do already have a lot of things on their 
> plate and cannot or would not want to support things like additional 
> library when native OpenStack client is working reasonably well for 
> you. But if I propose the following scheme to get support of native 
> Ruby client for OpenStack:
> 1) we (community) have these resources (speaking of the company I am 
> working for, we at Mirantis have a set of guys who could be very 
> interested in working on Ruby client for OpenStack)
> 2) we gradually improve Aviator code base up to the level that it 
> eliminates issues that are mentioned in  'Cons' section
> 3) we introduce additional set of providers and allow users and 
> operators to pick whichever they want
> 4) we leave OpenStackClient default one
> Would you support it and allow such code to be merged into upstream 
> puppet-openstack modules?

I would be in favor of such a plan if 
https://etherpad.openstack.org/p/puppet-openstack-weekly-meeting-20151013 questions 
0.4.1-0.4.7 could be answered in the affirmative.

> [0] 
> https://groups.google.com/a/puppetlabs.com/forum/#!searchin/puppet-openstack/aviator$20openstackclient/puppet-openstack/GJwDHNAFVYw/ayN4cdg3EW0J 
> <https://groups.google.com/a/puppetlabs.com/forum/#%21searchin/puppet-openstack/aviator$20openstackclient/puppet-openstack/GJwDHNAFVYw/ayN4cdg3EW0J>
> [1] 
> https://github.com/openstack/puppet-swift/blob/master/lib/puppet/provider/swift_ring_builder.rb#L21-L86
> -- 
> Yours Faithfully,
> Vladimir Kuklin,
> Fuel Library Tech Lead,
> Mirantis, Inc.
> +7 (495) 640-49-04
> +7 (926) 702-39-68
> Skype kuklinvv
> 35bk3, Vorontsovskaya Str.
> Moscow, Russia,
> www.mirantis.com <http://www.mirantis.ru/>
> www.mirantis.ru <http://www.mirantis.ru/>
> vkuklin at mirantis.com <mailto:vkuklin at mirantis.com>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20151013/616d59ce/attachment.html>

More information about the OpenStack-dev mailing list