[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