Don't use proc in title patterns

Using a proc in type title patterns causes an error when generating
puppet types for environment isolation. For example, running `puppet
generate types` on a puppet master produces the following error:
```
Error:
/etc/puppetlabs/code/environments/production/modules/keystone/lib/puppet/type/keystone_user_role.rb:
title patterns that use procs are not supported.
```

This commit changes the `project_domain` parameter to always default to
`DEFAULT_DOMAIN` even when using a `<user>::<user_domain>@::<domain>` or
`<user>@::<domain>` title pattern. The only place I could find that
utilized `project_domain` being unset was determining `keystone_domain`
autorequires. The logic was updated to reflect that `project_domain` is
either set or should use the default unless `domain` is set.

Change-Id: Icd29c5aa89ae442ca69cad0411188162462bf6ff
This commit is contained in:
Nick Bertrand 2019-03-20 17:27:14 -05:00
parent b0a0cda06c
commit e17812f1ce
2 changed files with 11 additions and 13 deletions

View File

@ -95,8 +95,11 @@ Puppet::Type.newtype(:keystone_user_role) do
r[:ensure] == :present r[:ensure] == :present
end end
rv = [self[:user_domain]] rv = [self[:user_domain]]
rv << self[:project_domain] if parameter_set?(:project_domain) if parameter_set?(:domain)
rv << self[:domain] if parameter_set?(:domain) rv << self[:domain]
else
rv << self[:project_domain]
end
# Only used to display the deprecation warning. # Only used to display the deprecation warning.
rv << default_domain.name unless default_domain.nil? rv << default_domain.name unless default_domain.nil?
rv rv
@ -113,7 +116,6 @@ Puppet::Type.newtype(:keystone_user_role) do
domain = user domain = user
user_domain = Regexp.new(/(?:[^:@]|:[^:@])+/) user_domain = Regexp.new(/(?:[^:@]|:[^:@])+/)
project = user_domain project = user_domain
unset = ->(_) { PuppetX::Keystone::CompositeNamevar::Unset }
[ [
[ [
# fully qualified user with fully qualified project # fully qualified user with fully qualified project
@ -127,14 +129,11 @@ Puppet::Type.newtype(:keystone_user_role) do
], ],
# fully qualified user with domain # fully qualified user with domain
[ [
/^(#{user})::(#{user_domain})@::(#{domain})($)/, /^(#{user})::(#{user_domain})@::(#{domain})$/,
[ [
[:user], [:user],
[:user_domain], [:user_domain],
[:domain], [:domain]
# Don't want to have project_domain set to default, while
# not used.
[:project_domain, unset]
] ]
], ],
# fully qualified user with project # fully qualified user with project
@ -157,11 +156,10 @@ Puppet::Type.newtype(:keystone_user_role) do
], ],
# user with domain # user with domain
[ [
/^(#{user})@::(#{domain})($)/, /^(#{user})@::(#{domain})$/,
[ [
[:user], [:user],
[:domain], [:domain]
[:project_domain, unset]
] ]
], ],
# user with project # user with project

View File

@ -40,7 +40,7 @@ describe Puppet::Type.type(:keystone_user_role) do
:user => user, :user => user,
:user_domain => 'user_domain', :user_domain => 'user_domain',
:project => PuppetX::Keystone::CompositeNamevar::Unset, :project => PuppetX::Keystone::CompositeNamevar::Unset,
:project_domain => PuppetX::Keystone::CompositeNamevar::Unset, :project_domain => 'Default',
:domain => 'domain' :domain => 'domain'
end end
@ -67,7 +67,7 @@ describe Puppet::Type.type(:keystone_user_role) do
:user => user, :user => user,
:user_domain => 'Default', :user_domain => 'Default',
:project => PuppetX::Keystone::CompositeNamevar::Unset, :project => PuppetX::Keystone::CompositeNamevar::Unset,
:project_domain => PuppetX::Keystone::CompositeNamevar::Unset, :project_domain => 'Default',
:domain => 'domain' :domain => 'domain'
end end