The recent rewrites of most of the keystone providers introduced a ruby module, Puppet::Util::Openstack that is required in the types. This is not a problem on a live system because everything in $vardir/lib is loaded after pluginsync. It's not a problem in puppet-keystone's own rspec tests because puppet-keystone's actual libdir is used rather than one of the fixture modules' libdirs. However, it causes problems when other modules need to run rspec-puppet tests against puppet-keystone. Rspec-puppet adds all of the libdirs in the spec/fixtures/modules directory as a colon-separated string to Puppet[:libdir] [1]. Puppet then appends this whole string to the $LOAD_PATH array [2]. Ruby can't actually look up files in a colon separated string, it instead searches through the $LOAD_PATH array and treats each entry as a distinct path.
The long-term solution is to patch Puppet to split the colon-separated string into individual entries. The short-term solution is to update the $LOAD_PATH in each of the keystone types prior to requiring anything in puppet/util.
[1] https://github.com/rodjek/rspec-puppet/blob/4ce0b109412f3f6e750b209a9628b79bda77b604/lib/rspec-puppet/support.rb#L145
[2] https://github.com/puppetlabs/puppet/blob/master/lib/puppet/defaults.rb#L246
Fix proposed to branch: master /review. openstack. org/145677
Review: https:/