Compare commits

...

2 Commits

Author SHA1 Message Date
Kienan Stewart a90aba4365 WIP: Do not pre-filter based on environment 2022-09-02 09:58:07 -04:00
Kienan Stewart 32bb734f56 WIP: Tests 2022-08-28 09:45:40 -04:00
6 changed files with 77 additions and 2 deletions

3
debian/control vendored
View File

@ -11,7 +11,8 @@ Rules-Requires-Root: no
Package: puppet-terminus-redis Package: puppet-terminus-redis
Architecture: all Architecture: all
Depends: ${misc:Depends}, puppet-master | puppet-master-passenger, redis, ruby-redis Depends: ${misc:Depends}, puppet-master | puppet-master-passenger | puppetserver, redis, ruby-redis
Build-Depends: ${misc:Build-Depends}, ruby-puppetlabs-spec-helper
Description: Cache and data store terminus for puppet servers Description: Cache and data store terminus for puppet servers
This provides an integration for using redis as a data store for This provides an integration for using redis as a data store for
cached facts and/or storeconfigs from a puppet server. cached facts and/or storeconfigs from a puppet server.

View File

@ -31,7 +31,9 @@ class Puppet::Resource::Redis < Puppet::Indirector::REST
# #
key = "catalog_#{host}_#{environment}" key = "catalog_#{host}_#{environment}"
resources = [] resources = []
keys = redis.keys("catalog_*_#{environment}") # With puppetdb, resources are picked up regardless of environment,
# and the user may choose to filter or not in the collector.
keys = redis.keys("catalog_*")
keys.each do |k| keys.each do |k|
next if k == key next if k == key
catalog = JSON.parse(redis.get(k)) catalog = JSON.parse(redis.get(k))

0
spec/fixtures/manifests/site.pp vendored Normal file
View File

View File

@ -0,0 +1,32 @@
#!/usr/bin/env rspec
require 'spec_helper'
require 'puppet/util/feature'
require 'puppet/indirector/facts/redis'
require 'puppet/util/log'
describe Puppet::Node::Facts::Redis do
before :each do
Puppet::Node::Facts.indirection.stubs(:terminus).returns(subject)
create_environmentdir("test_environment")
end
describe '#save' do
let(:facts) { Puppet::Node::Facts.new('foo') }
let(:options) {{
:environment => "test_environment",
}}
let(:redis) { Puppet::Node::Facts::Redis.new }
it "should have a name" do
print(subject.name)
end
it "should save a fact keyed with name and environment" do
facts.values['foo'] = 100
request = Puppet::Node::Facts.indirection.request(:save, facts.name, facts, options)
subject.save(request)
end
end
end

View File

@ -0,0 +1,7 @@
#!/usr/bin/env rspec
require 'spec_helper'
# Despite the fact the class is Puppet::Resource::Redis, we use the
# path with 'indirector' to load it.
require 'puppet/indirector/resource/redis'

33
spec/spec_helper.rb Normal file
View File

@ -0,0 +1,33 @@
require 'puppetlabs_spec_helper/puppet_spec_helper'
require 'puppet/util'
RSpec.configure do |config|
def create_environmentdir(environment)
envdir = File.join(Puppet[:environmentpath], environment)
if not Dir.exists?(envdir)
Dir.mkdir(envdir)
end
end
# before :each do
# @logs = []
# Puppet::Util::Log.level = :info
# Puppet::Util::Log.newdestination(Puppet::Test::LogCollector.new(@logs))
# # dir = File.join(File.expand_path(File.dirname(__FILE__)), 'fixtures')
# # environments = Puppet::Environments::Cached.new(
# # Puppet::Environments::Directories.new(dir, [])
# # )
# # Puppet.push_context(
# # {
# # :environments => environments,
# # :current_environment => Puppet::Node::Environment.create(:testing, [])
# # }
# # )
# # print(Puppet.lookup(:environments))
# def test_logs
# @logs.map(&:message)
# end
# end
end