-
Hello, our
As far as I could verify what happens, everything should work out just fine. Most surprising is, that the same client can request a catalog from the master, which does contain the desired parameters for the
Applying this catalog with I've run successful tests where the parameters are compared against the
In case that matters, the code for the Does anyone have an idea what is going wrong in this situation? Thank you for your time,
type Multipath::Config = Struct[{
Optional['defaults'] => Multipath::Config::Defaults,
Optional['blacklist'] => Multipath::Config::Blacklist,
Optional['blacklist_exceptions'] => Multipath::Config::Blacklist_exceptions,
Optional['devices'] => Array[Multipath::Config::Device],
'multipaths' => Array[Multipath::Config::Multipath],
}]
type Multipath::Config::Device = Struct[{
'vendor' => String,
'product' => String,
Optional['alias_prefix'] => String,
(...)
}]
type Multipath::Config::Multipath = Struct[{
'wwid' => String,
Optional['alias'] => String,
(...)
}] EDIT: As requested on the Puppet Slack, here is the full source code of the class multipath (
String $package = 'device-mapper-multipath',
Stdlib::Unixpath $multipath_conf = '/etc/multipath.conf',
String $service = 'multipathd',
Boolean $locked = false,
Multipath::Config $config = {},
) {
package { $package: }
-> file { $multipath_conf:
owner => 'root',
group => 'root',
replace => ! $locked,
content => template("${module_name}/multipath.conf.erb"),
}
~> service { $service:
ensure => 'running',
enable => true,
hasrestart => true,
hasstatus => true,
}
} EDIT2: Also as requested on Slack, this is how the class { 'multipath':
locked => $multipath_locked,
config => {
'defaults' => $multipath_defaults,
'devices' => $multipath_devices,
'blacklist' => {
'devnode' => [
'^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*',
'^hd[a-z]'
],
},
'multipaths' => $gridka_gxfs_multipath_aliases_struct,
},
}
$multipath_defaults = {
'hw_str_match' => 'yes',
'user_friendly_names' => 'yes',
(...)
'log_checker_err' => 'always',
}
$multipath_devices = [
{
'vendor' => '(LSI|NETAPP)',
'product' => 'INF-01-00',
'product_blacklist' => 'Universal Xport',
(...)
'rr_min_io_rq' => 1,
},
]
|
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
Thanks to all the support found on Puppet Slack! We determined that the issue is not with the input data, nor with the custom Puppet data type or the multipaths {
<% @config['multipaths'].sort { |x, y| x['wwid'] <=> y['wwid'] }.each do |multipath| -%>
multipath {
<%-# Start each multipath subsection with the wwid. -%>
wwid <%= multipath.delete('wwid') %>
<%- multipath.keys.sort.each do |k| -%>
<%= k %> <%= multipath[k] %>
<%- end -%>
}
<% end -%>
} The issue is triggered by The solution ultimately is to avoid using |
Beta Was this translation helpful? Give feedback.
Thanks to all the support found on Puppet Slack! We determined that the issue is not with the input data, nor with the custom Puppet data type or the
multipath
class, but in fact the ERB template. It processes the hash of multipaths like this:The issue is triggered by
multipath.delete('wwid')
. It obviously removes thewwid
key and value from the hash. And when the t…