[openstack-dev] [puppet] Adding "IPv6" bracket handling utilities in openstacklib.

Sofer Athlan-Guyot sathlang at redhat.com
Fri Jan 8 10:57:47 UTC 2016


Cody Herriges <cody at herriges.org> writes:

Sorry I didn't see you reply before.  Comments below.

> Sofer Athlan-Guyot wrote:
>> Hi,
>> 
>> There are a few places where I would like to be able to check for IPv6
>> address and add bracket to the parameters.  I think that would be a nice
>> addition to the puppet-openstacklib/lib/puppet/parser.
>> 
>> Here the interface I have in mind with the puppet-nova module:
>> 
>> class nova::vncproxy::common (
>>   $vncproxy_host     = undef,
>>   $vncproxy_protocol = undef,
>>   $vncproxy_port     = undef,
>>   $vncproxy_path     = undef,
>> ) {
>> 
>>   include ::nova::deps
>> 
>>   $vncproxy_host_real     = pick(
>>     ipv6_add_bracket_maybe($vncproxy_host,
>>                            $::nova::compute::vncproxy_host,
>>                            $::nova::vncproxy::host,
>>                            false)
>> 
>> 
>> This would returns an array with the host decorated with "[]" if the
>> value is an IPv6 address.  Ideally the function could take only one
>> value and return it or take an array and return an array for seamless
>> integration in the code.
>> 
>> WDYT?
>> 
>
> I see this and it looks like that only only reason this is a problem is
> because we've broken up all the pieces of data needed to generate a URI
> so it becomes inappropriate to decorate the vncproxy_host variable's
> value with "[]" because it lacks the port appended to the end.  What are
> the ramifications of simply switching to a "$vnc_uri" variable much the
> same that has happened with identity_uri and auth_uri, e.g.
> https://review.openstack.org/262799. If one has to simply define the
> entire URI, they'll be able to properly decorate the IPv6 address.

Yes, that could be something to consider as well.  The difficulties with
this approach, that I see are that it's not easy on the user (change of
interface) and must rely on a deprecation period (code to maintain).

Adding a function on the other hand is transparent for the user and it
may be useful in other part of the code.

As for this solution (adding a function) I had to lower my expectation
to meet puppet < 4.1 reality.  There is no splat operator, and no way to
chain functions as I wanted at the beginning.  What I did is a simpler
function that take only one argument, the stuff to maybe transform.  The
example above adjusted:


  $vncproxy_host_real = ipv6_add_bracket_maybe(pick(
      $vncproxy_host,
      $::nova::compute::vncproxy_host,
      $::nova::vncproxy::host,
    false))

Please let me know what you think.
-- 
Sofer Athlan-Guyot



More information about the OpenStack-dev mailing list