1 Commits

Author SHA1 Message Date
c3d62763c1 Add executable bits on sabayon.sh operatingsytem fact 2017-03-13 21:00:29 +00:00
50 changed files with 756 additions and 1304 deletions

3
.bundle/config Normal file
View File

@@ -0,0 +1,3 @@
---
BUNDLE_PATH: vendor/bundle
BUNDLE_DISABLE_SHARED_GEMS: true

5
.gitattributes vendored
View File

@@ -1,5 +0,0 @@
*.rb eol=lf
*.erb eol=lf
*.pp eol=lf
*.sh eol=lf
*.epp eol=lf

29
.gitignore vendored
View File

@@ -1,27 +1,2 @@
.git/
.*.sw[op]
.metadata
.yardoc
.yardwarns
*.iml
/.bundle/
/.idea/
/.vagrant/
/coverage/
/bin/
/doc/
/Gemfile.local
/Gemfile.lock
/junit/
/log/
/pkg/
/spec/fixtures/manifests/
/spec/fixtures/modules/
/tmp/
/vendor/
/convert_report.txt
/update_report.txt
.DS_Store
.project
.envrc
/inventory.yaml
# blacksmith output directory
pkg

View File

@@ -1,41 +0,0 @@
---
stages:
- syntax
- unit
cache:
paths:
- vendor/bundle
before_script:
- bundle -v
- rm Gemfile.lock || true
- gem update --system $RUBYGEMS_VERSION
- gem --version
- bundle -v
- bundle install --without system_tests --path vendor/bundle --jobs $(nproc)
syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop-Ruby 2.5.3-Puppet ~> 6:
stage: syntax
image: ruby:2.5.3
script:
- bundle exec rake syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop
variables:
PUPPET_GEM_VERSION: '~> 6'
parallel_spec-Ruby 2.5.3-Puppet ~> 6:
stage: unit
image: ruby:2.5.3
script:
- bundle exec rake parallel_spec
variables:
PUPPET_GEM_VERSION: '~> 6'
parallel_spec-Ruby 2.4.5-Puppet ~> 5:
stage: unit
image: ruby:2.4.5
script:
- bundle exec rake parallel_spec
variables:
PUPPET_GEM_VERSION: '~> 5'

View File

@@ -1,43 +0,0 @@
.git/
.*.sw[op]
.metadata
.yardoc
.yardwarns
*.iml
/.bundle/
/.idea/
/.vagrant/
/coverage/
/bin/
/doc/
/Gemfile.local
/Gemfile.lock
/junit/
/log/
/pkg/
/spec/fixtures/manifests/
/spec/fixtures/modules/
/tmp/
/vendor/
/convert_report.txt
/update_report.txt
.DS_Store
.project
.envrc
/inventory.yaml
/appveyor.yml
/.fixtures.yml
/Gemfile
/.gitattributes
/.gitignore
/.gitlab-ci.yml
/.pdkignore
/Rakefile
/rakelib/
/.rspec
/.rubocop.yml
/.travis.yml
/.yardopts
/spec/
/.vscode/
/circle.yml

View File

@@ -1 +0,0 @@
--relative

2
.rspec
View File

@@ -1,2 +0,0 @@
--color
--format documentation

View File

@@ -1,122 +0,0 @@
---
require: rubocop-rspec
AllCops:
DisplayCopNames: true
TargetRubyVersion: '2.1'
Include:
- "./**/*.rb"
Exclude:
- bin/*
- ".vendor/**/*"
- "**/Gemfile"
- "**/Rakefile"
- pkg/**/*
- spec/fixtures/**/*
- vendor/**/*
- "**/Puppetfile"
- "**/Vagrantfile"
- "**/Guardfile"
Metrics/LineLength:
Description: People have wide screens, use them.
Max: 200
GetText/DecorateString:
Description: We don't want to decorate test output.
Exclude:
- spec/*
RSpec/BeforeAfterAll:
Description: Beware of using after(:all) as it may cause state to leak between tests.
A necessary evil in acceptance testing.
Exclude:
- spec/acceptance/**/*.rb
RSpec/HookArgument:
Description: Prefer explicit :each argument, matching existing module's style
EnforcedStyle: each
Style/BlockDelimiters:
Description: Prefer braces for chaining. Mostly an aesthetical choice. Better to
be consistent then.
EnforcedStyle: braces_for_chaining
Style/ClassAndModuleChildren:
Description: Compact style reduces the required amount of indentation.
EnforcedStyle: compact
Style/EmptyElse:
Description: Enforce against empty else clauses, but allow `nil` for clarity.
EnforcedStyle: empty
Style/FormatString:
Description: Following the main puppet project's style, prefer the % format format.
EnforcedStyle: percent
Style/FormatStringToken:
Description: Following the main puppet project's style, prefer the simpler template
tokens over annotated ones.
EnforcedStyle: template
Style/Lambda:
Description: Prefer the keyword for easier discoverability.
EnforcedStyle: literal
Style/RegexpLiteral:
Description: Community preference. See https://github.com/voxpupuli/modulesync_config/issues/168
EnforcedStyle: percent_r
Style/TernaryParentheses:
Description: Checks for use of parentheses around ternary conditions. Enforce parentheses
on complex expressions for better readability, but seriously consider breaking
it up.
EnforcedStyle: require_parentheses_when_complex
Style/TrailingCommaInArguments:
Description: Prefer always trailing comma on multiline argument lists. This makes
diffs, and re-ordering nicer.
EnforcedStyleForMultiline: comma
Style/TrailingCommaInLiteral:
Description: Prefer always trailing comma on multiline literals. This makes diffs,
and re-ordering nicer.
EnforcedStyleForMultiline: comma
Style/SymbolArray:
Description: Using percent style obscures symbolic intent of array's contents.
EnforcedStyle: brackets
RSpec/MessageSpies:
EnforcedStyle: receive
Style/Documentation:
Exclude:
- lib/puppet/parser/functions/**/*
- spec/**/*
Style/WordArray:
EnforcedStyle: brackets
Style/CollectionMethods:
Enabled: true
Style/MethodCalledOnDoEndBlock:
Enabled: true
Style/StringMethods:
Enabled: true
Layout/EndOfLine:
Enabled: false
Layout/IndentHeredoc:
Enabled: false
Metrics/AbcSize:
Enabled: false
Metrics/BlockLength:
Enabled: false
Metrics/ClassLength:
Enabled: false
Metrics/CyclomaticComplexity:
Enabled: false
Metrics/MethodLength:
Enabled: false
Metrics/ModuleLength:
Enabled: false
Metrics/ParameterLists:
Enabled: false
Metrics/PerceivedComplexity:
Enabled: false
RSpec/DescribeClass:
Enabled: false
RSpec/ExampleLength:
Enabled: false
RSpec/MessageExpectation:
Enabled: false
RSpec/MultipleExpectations:
Enabled: false
RSpec/NestedGroups:
Enabled: false
Style/AsciiComments:
Enabled: false
Style/IfUnlessModifier:
Enabled: false
Style/SymbolProc:
Enabled: false

View File

@@ -1,54 +0,0 @@
---
dist: trusty
language: ruby
cache: bundler
before_install:
- bundle -v
- rm -f Gemfile.lock
- gem update --system $RUBYGEMS_VERSION
- gem --version
- bundle -v
script:
- 'bundle exec rake $CHECK'
bundler_args: --without system_tests
rvm:
- 2.5.3
stages:
- static
- spec
- acceptance
-
if: tag =~ ^v\d
name: deploy
matrix:
fast_finish: true
include:
-
env: CHECK="check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop syntax lint metadata_lint"
stage: static
-
env: PUPPET_GEM_VERSION="~> 5.0" CHECK=parallel_spec
rvm: 2.4.5
stage: spec
-
env: PUPPET_GEM_VERSION="~> 6.0" CHECK=parallel_spec
rvm: 2.5.3
stage: spec
-
env: DEPLOY_TO_FORGE=yes
stage: deploy
branches:
only:
- master
- /^v\d/
notifications:
email: false
deploy:
provider: puppetforge
user: puppet
password:
secure: ""
on:
tags: true
all_branches: true
condition: "$DEPLOY_TO_FORGE = yes"

View File

@@ -1 +0,0 @@
--markup markdown

View File

@@ -1,25 +1,3 @@
## 2-10-12-08 Release 0.6.1
- Improve parsing of package versions with respect to PMS v7 spec
## 2019-05-10 Release 0.6.0
- Adds `cleanup` task
- Convert module to using PDK
## 2018-10-14 Release 0.5.0
- Update package install error handling for compatbility with
puppet 6
- Add support for `pre_pre` package versions
- Update build-time gems
## 2017-03-13 Release 0.4.0
- Replace operatingsystem.rb native fact with executable fact to workaround
[https://tickets.puppetlabs.com/browse/FACT-1528](FACT-1528) (ace13)
## 2016-10-16 Release 0.3.0
- Add `entropy_repo` type to enable/disable repositories

82
Gemfile
View File

@@ -1,71 +1,19 @@
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
def location_for(place_or_version, fake_version = nil)
git_url_regex = %r{\A(?<url>(https?|git)[:@][^#]*)(#(?<branch>.*))?}
file_url_regex = %r{\Afile:\/\/(?<path>.*)}
puppetversion = ENV.key?('PUPPET_VERSION') ? ENV['PUPPET_VERSION'] : ['>= 3.3']
gem 'metadata-json-lint'
gem 'puppet', puppetversion
gem 'puppetlabs_spec_helper', '>= 1.0.0'
gem 'puppet-lint', '>= 1.0.0'
gem 'facter', '>= 1.7.0'
gem 'rspec-puppet'
gem 'puppet-blacksmith'
if place_or_version && (git_url = place_or_version.match(git_url_regex))
[fake_version, { git: git_url[:url], branch: git_url[:branch], require: false }].compact
elsif place_or_version && (file_url = place_or_version.match(file_url_regex))
['>= 0', { path: File.expand_path(file_url[:path]), require: false }]
else
[place_or_version, { require: false }]
end
# rspec must be v2 for ruby 1.8.7
if RUBY_VERSION >= '1.8.7' && RUBY_VERSION < '1.9'
gem 'rspec', '~> 2.0'
gem 'rake', '~> 10.0'
else
# rubocop requires ruby >= 1.9
gem 'rubocop'
end
ruby_version_segments = Gem::Version.new(RUBY_VERSION.dup).segments
minor_version = ruby_version_segments[0..1].join('.')
group :development do
gem "fast_gettext", '1.1.0', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.1.0')
gem "fast_gettext", require: false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1.0')
gem "json_pure", '<= 2.0.1', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0')
gem "json", '= 1.8.1', require: false if Gem::Version.new(RUBY_VERSION.dup) == Gem::Version.new('2.1.9')
gem "json", '= 2.0.4', require: false if Gem::Requirement.create('~> 2.4.2').satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "json", '= 2.1.0', require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "puppet-module-posix-default-r#{minor_version}", require: false, platforms: [:ruby]
gem "puppet-module-posix-dev-r#{minor_version}", require: false, platforms: [:ruby]
gem "puppet-module-win-default-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "puppet-module-win-dev-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw]
end
puppet_version = ENV['PUPPET_GEM_VERSION']
facter_version = ENV['FACTER_GEM_VERSION']
hiera_version = ENV['HIERA_GEM_VERSION']
gems = {}
gems['puppet'] = location_for(puppet_version)
# If facter or hiera versions have been specified via the environment
# variables
gems['facter'] = location_for(facter_version) if facter_version
gems['hiera'] = location_for(hiera_version) if hiera_version
if Gem.win_platform? && puppet_version =~ %r{^(file:///|git://)}
# If we're using a Puppet gem on Windows which handles its own win32-xxx gem
# dependencies (>= 3.5.0), set the maximum versions (see PUP-6445).
gems['win32-dir'] = ['<= 0.4.9', require: false]
gems['win32-eventlog'] = ['<= 0.6.5', require: false]
gems['win32-process'] = ['<= 0.7.5', require: false]
gems['win32-security'] = ['<= 0.2.5', require: false]
gems['win32-service'] = ['0.8.8', require: false]
end
gems.each do |gem_name, gem_params|
gem gem_name, *gem_params
end
# Evaluate Gemfile.local and ~/.gemfile if they exist
extra_gemfiles = [
"#{__FILE__}.local",
File.join(Dir.home, '.gemfile'),
]
extra_gemfiles.each do |gemfile|
if File.file?(gemfile) && File.readable?(gemfile)
eval(File.read(gemfile), binding)
end
end
# vim: syntax=ruby

91
Gemfile.lock Normal file
View File

@@ -0,0 +1,91 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (2.2.8)
ast (2.3.0)
diff-lcs (1.2.5)
domain_name (0.5.20160826)
unf (>= 0.0.5, < 1.0.0)
facter (2.4.6)
CFPropertyList (~> 2.2.6)
hiera (3.2.1)
http-cookie (1.0.3)
domain_name (~> 0.5)
json (2.0.2)
json_pure (1.8.3)
metaclass (0.0.4)
metadata-json-lint (0.0.11)
json
spdx-licenses (~> 1.0)
mime-types (2.99.3)
mocha (1.2.0)
metaclass (~> 0.0.1)
netrc (0.11.0)
parser (2.3.1.4)
ast (~> 2.2)
powerpack (0.1.1)
puppet (4.7.0)
CFPropertyList (~> 2.2.6)
facter (> 2.0, < 4)
hiera (>= 2.0, < 4)
json_pure (~> 1.8)
puppet-blacksmith (3.4.0)
puppet (>= 2.7.16)
rest-client (~> 1.8.0)
puppet-lint (2.0.2)
puppet-syntax (2.1.0)
rake
puppetlabs_spec_helper (1.2.2)
mocha (~> 1.0)
puppet-lint (~> 2.0)
puppet-syntax (~> 2.0)
rspec-puppet (~> 2.0)
rainbow (2.1.0)
rake (11.3.0)
rest-client (1.8.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 3.0)
netrc (~> 0.7)
rspec (3.5.0)
rspec-core (~> 3.5.0)
rspec-expectations (~> 3.5.0)
rspec-mocks (~> 3.5.0)
rspec-core (3.5.4)
rspec-support (~> 3.5.0)
rspec-expectations (3.5.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.5.0)
rspec-mocks (3.5.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.5.0)
rspec-puppet (2.4.0)
rspec
rspec-support (3.5.0)
rubocop (0.43.0)
parser (>= 2.3.1.1, < 3.0)
powerpack (~> 0.1)
rainbow (>= 1.99.1, < 3.0)
ruby-progressbar (~> 1.7)
unicode-display_width (~> 1.0, >= 1.0.1)
ruby-progressbar (1.8.1)
spdx-licenses (1.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.2)
unicode-display_width (1.1.1)
PLATFORMS
ruby
DEPENDENCIES
facter (>= 1.7.0)
metadata-json-lint
puppet (>= 3.3)
puppet-blacksmith
puppet-lint (>= 1.0.0)
puppetlabs_spec_helper (>= 1.0.0)
rspec-puppet
rubocop
BUNDLED WITH
1.12.5

View File

@@ -314,16 +314,6 @@ using the correct locale.
Overrides the detection of the operating system on Sabayon systems to `Sabayon`.
### Tasks
This module includes tasks for ad-hoc use with Puppet Bolt or Choria.
### `cleanup`
This task executes `equo cleanup` command on the target nodes, which frees up
disk space used by cached package downloads. It does not accept any parameters,
and does not support running noop mode.
## Limitations
This module is actively used by the developer against current Sabayon versions.
@@ -335,7 +325,3 @@ best-efforts basis.
Pull requests welcome!
## Contributors
* [https://github.com/ace13](ace13)

View File

@@ -1,76 +1,33 @@
require 'puppetlabs_spec_helper/rake_tasks'
require 'puppet-syntax/tasks/puppet-syntax'
require 'puppet_blacksmith/rake_tasks' if Bundler.rubygems.find_name('puppet-blacksmith').any?
require 'github_changelog_generator/task' if Bundler.rubygems.find_name('github_changelog_generator').any?
require 'puppet-strings/tasks' if Bundler.rubygems.find_name('puppet-strings').any?
require 'puppet-lint/tasks/puppet-lint'
require 'metadata-json-lint/rake_task'
require 'puppet_blacksmith/rake_tasks'
def changelog_user
return unless Rake.application.top_level_tasks.include? "changelog"
returnVal = nil || JSON.load(File.read('metadata.json'))['author']
raise "unable to find the changelog_user in .sync.yml, or the author in metadata.json" if returnVal.nil?
puts "GitHubChangelogGenerator user:#{returnVal}"
returnVal
if RUBY_VERSION >= '1.9'
require 'rubocop/rake_task'
RuboCop::RakeTask.new
end
def changelog_project
return unless Rake.application.top_level_tasks.include? "changelog"
returnVal = nil || JSON.load(File.read('metadata.json'))['name']
raise "unable to find the changelog_project in .sync.yml or the name in metadata.json" if returnVal.nil?
puts "GitHubChangelogGenerator project:#{returnVal}"
returnVal
end
PuppetLint.configuration.send('disable_80chars')
PuppetLint.configuration.relative = true
PuppetLint.configuration.ignore_paths = ['spec/**/*.pp', 'pkg/**/*.pp', 'vendor/**/*.pp']
def changelog_future_release
return unless Rake.application.top_level_tasks.include? "changelog"
returnVal = "v%s" % JSON.load(File.read('metadata.json'))['version']
raise "unable to find the future_release (version) in metadata.json" if returnVal.nil?
puts "GitHubChangelogGenerator future_release:#{returnVal}"
returnVal
end
PuppetLint.configuration.send('disable_relative')
if Bundler.rubygems.find_name('github_changelog_generator').any?
GitHubChangelogGenerator::RakeTask.new :changelog do |config|
raise "Set CHANGELOG_GITHUB_TOKEN environment variable eg 'export CHANGELOG_GITHUB_TOKEN=valid_token_here'" if Rake.application.top_level_tasks.include? "changelog" and ENV['CHANGELOG_GITHUB_TOKEN'].nil?
config.user = "#{changelog_user}"
config.project = "#{changelog_project}"
config.future_release = "#{changelog_future_release}"
config.exclude_labels = ['maintenance']
config.header = "# Change log\n\nAll notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org)."
config.add_pr_wo_labels = true
config.issues = false
config.merge_prefix = "### UNCATEGORIZED PRS; GO LABEL THEM"
config.configure_sections = {
"Changed" => {
"prefix" => "### Changed",
"labels" => ["backwards-incompatible"],
},
"Added" => {
"prefix" => "### Added",
"labels" => ["feature", "enhancement"],
},
"Fixed" => {
"prefix" => "### Fixed",
"labels" => ["bugfix"],
},
}
desc 'Validate manifests, templates, and ruby files'
task :validate do
Dir['manifests/**/*.pp'].each do |manifest|
sh "puppet parser validate --noop #{manifest}"
end
else
desc 'Generate a Changelog from GitHub'
task :changelog do
raise <<EOM
The changelog tasks depends on unreleased features of the github_changelog_generator gem.
Please manually add it to your .sync.yml for now, and run `pdk update`:
---
Gemfile:
optional:
':development':
- gem: 'github_changelog_generator'
git: 'https://github.com/skywinder/github-changelog-generator'
ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018'
condition: "Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2')"
EOM
Dir['spec/**/*.rb', 'lib/**/*.rb'].each do |ruby_file|
sh "ruby -c #{ruby_file}" unless ruby_file =~ %r{spec/fixtures}
end
Dir['templates/**/*.erb'].each do |template|
sh "erb -P -x -T '-' #{template} | ruby -c"
end
end
desc 'Run metadata_lint, lint, validate, and spec tests.'
task :test do
[:metadata_lint, :lint, :validate, :spec].each do |test|
Rake::Task[test].invoke
end
end

View File

@@ -1,55 +0,0 @@
---
version: 1.1.x.{build}
branches:
only:
- master
skip_commits:
message: /^\(?doc\)?.*/
clone_depth: 10
init:
- SET
- 'mkdir C:\ProgramData\PuppetLabs\code && exit 0'
- 'mkdir C:\ProgramData\PuppetLabs\facter && exit 0'
- 'mkdir C:\ProgramData\PuppetLabs\hiera && exit 0'
- 'mkdir C:\ProgramData\PuppetLabs\puppet\var && exit 0'
environment:
matrix:
-
RUBY_VERSION: 24-x64
CHECK: syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop
-
PUPPET_GEM_VERSION: ~> 5.0
RUBY_VERSION: 24
CHECK: parallel_spec
-
PUPPET_GEM_VERSION: ~> 5.0
RUBY_VERSION: 24-x64
CHECK: parallel_spec
-
PUPPET_GEM_VERSION: ~> 6.0
RUBY_VERSION: 25
CHECK: parallel_spec
-
PUPPET_GEM_VERSION: ~> 6.0
RUBY_VERSION: 25-x64
CHECK: parallel_spec
matrix:
fast_finish: true
install:
- set PATH=C:\Ruby%RUBY_VERSION%\bin;%PATH%
- bundle install --jobs 4 --retry 2 --without system_tests
- type Gemfile.lock
build: off
test_script:
- bundle exec puppet -V
- ruby -v
- gem -v
- bundle -v
- bundle exec rake %CHECK%
notifications:
- provider: Email
to:
- nobody@nowhere.com
on_build_success: false
on_build_failure: false
on_build_status_changed: false

View File

@@ -1,15 +1,16 @@
Facter.add('entropy_repos') do
confine operatingsystem: :Sabayon
confine :operatingsystem => :Sabayon
setcode do
# Use the types/providers to do the heavy lifting here
repos = {}
Puppet::Type.type(:entropy_repo).provider(:file).instances.each do |repo|
Puppet::Type.type(:entropy_repo).provider(:file).instances().each do |repo|
Facter.debug(repo.enabled)
r = {
repo_type: repo.repo_type,
enabled: repo.enabled,
:repo_type => repo.repo_type,
:enabled => repo.enabled,
}
repos[repo.name] = r
@@ -17,4 +18,5 @@ Facter.add('entropy_repos') do
repos
end
end

View File

@@ -1,6 +1,7 @@
Facter.add(:locale) do
confine osfamily: :gentoo
confine :osfamily => :gentoo
setcode do
Facter::Core::Execution.exec('eselect --colour=no --brief locale show').strip
end
end

View File

@@ -1,19 +1,19 @@
Puppet::Type.type(:enman_repo).provide(:enman) do
desc 'Enman provider for Enman Repositories'
desc "Enman provider for Enman Repositories"
defaultfor operatingsystem: :sabayon
defaultfor :operatingsystem => :sabayon
commands(enman: 'enman')
commands({:enman => "enman"})
mk_resource_methods
def create
enman('add', resource[:name])
enman("add", resource[:name])
@property_hash[:ensure] = :present
end
def destroy
enman('remove', resource[:name])
enman("remove", resource[:name])
@property_hash[:ensure] = :absent
end
@@ -22,31 +22,33 @@ Puppet::Type.type(:enman_repo).provide(:enman) do
end
def self.instances
all_installed = enman('list', '--quiet', '--installed').chomp.split
all_available = enman('list', '--quiet', '--available').chomp.split
all_installed = enman("list", "--quiet", "--installed").chomp.split
all_available = enman("list", "--quiet", "--available").chomp.split
all_available.map do |available_repo|
all_available.collect do |available_repo|
repo = {
name: available_repo,
ensure: all_installed.include?(available_repo) ? :present : :absent,
provider: :enman_repo,
:name => available_repo,
:ensure => all_installed.include?(available_repo) ? :present : :absent,
:provider => :enman_repo,
}
Puppet.debug(repo)
new(repo)
end
end
def self.prefetch(resources)
available_repos = instances
available_repos = self.instances()
resources.each do |name, _resource|
provider = available_repos.find { |r| r.name == name }
if provider
resources.each do |name, resource|
if provider = available_repos.find { |r| r.name == name }
resources[name].provider = provider
end
end
end
end
# vim: set ts=2 shiftwidth=2 expandtab :

View File

@@ -1,55 +1,41 @@
require 'puppet/provider/parsedfile'
file = '/etc/entropy/packages/package.keywords'
file = "/etc/entropy/packages/package.keywords"
Puppet::Type.type(:entropy_keywords).provide(:parsed,
parent: Puppet::Provider::ParsedFile,
default_target: file,
filetype: :flat) do
:parent => Puppet::Provider::ParsedFile,
:default_target => file,
:filetype => :flat
) do
desc 'Override keywords for entropy packages'
desc "Override keywords for entropy packages"
defaultfor operatingsystem: :sabayon
defaultfor :operatingsystem => :sabayon
text_line :blank,
match: %r{^\s*$}
:match => /^\s*$/
text_line :comment,
match: %r{^\s*#}
:match => /^\s*#/
text_line :unmanaged,
match: %r{
^(\S+)\s+([<>]?=)?
(?:
((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?
(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?
)?
(?:\s*repo=([a-zA-Z0-9\._-]+))?
\s*$
}x
:match => %r{^(\S+)\s+([<>]?=)?(?:((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?)?(?:\s*repo=([a-zA-Z0-9\._-]+))?\s*$}
record_line :parsed,
fields: ['keyword', 'operator', 'package', 'version', 'repo', 'name'],
match: %r{
^(\S+)\s+([<>]?=)?
(?:
((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?
(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?
)?
(?:\s*repo=([a-zA-Z0-9\._-]+))?
\s+\#+\s+Puppet\s+Name:\s+(.*)
\s*$
}x,
to_line: proc { |record|
line = record[:keyword] + ' '
:fields => %w{keyword operator package version repo name},
:match => %r{^(\S+)\s+([<>]?=)?(?:((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?)?(?:\s*repo=([a-zA-Z0-9\._-]+))?\s+## Puppet Name: (.*)\s*$},
:to_line => proc { |record|
line = record[:keyword] + " "
line += record[:operator] if record[:operator]
line += record[:package] if record[:package]
line += '-' + record[:version] if record[:version]
line += ' ' if record[:package] && record[:repo]
line += 'repo=' + record[:repo] if record[:repo]
line += ' ## Puppet Name: ' + record[:name]
line += "-" + record[:version] if record[:version]
line += " " if record[:package] && record[:repo]
line += "repo=" + record[:repo] if record[:repo]
line += " ## Puppet Name: " + record[:name]
line
}
end
# vim: set ts=2 shiftwidth=2 expandtab :

View File

@@ -1,57 +1,43 @@
require 'puppet/provider/parsedfile'
masks = '/etc/entropy/packages/package.mask'
masks = "/etc/entropy/packages/package.mask"
Puppet::Type.type(:entropy_mask).provide(:parsed,
parent: Puppet::Provider::ParsedFile,
default_target: masks,
filetype: :flat) do
:parent => Puppet::Provider::ParsedFile,
:default_target => masks,
:filetype => :flat
) do
desc 'File mask provider for entropy packages'
desc "File mask provider for entropy packages"
defaultfor operatingsystem: :sabayon
defaultfor :operatingsystem => :sabayon
text_line :blank,
match: %r{^\s*$}
:match => /^\s*$/
text_line :comment,
match: %r{^\s*#}
:match => /^\s*#/
text_line :unmanaged,
match: %r{
^([<>]?=)?
((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?
(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?
(?::([a-zA-Z0-9._-]+))?
(?:\[([^\]]*)\])?
(?:\#([a-zA-Z0-9._-]+))?
(?:::([a-zA-Z0-9\._-]+))?\s*$
}x
:match => %r{^([<>]?=)?((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?(?::([a-zA-Z0-9._-]+))?(?:\[([^\]]*)\])?(?:#([a-zA-Z0-9._-]+))?(?:::([a-zA-Z0-9\._-]+))?\s*$}
record_line :parsed,
fields: ['operator', 'package', 'version', 'slot', 'use', 'tag', 'repo', 'name'],
match: %r{
^([<>]?=)?
((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?
(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?
(?::([a-zA-Z0-9._-]+))?
(?:\[([^\]]*)\])?
(?:\#([a-zA-Z0-9._-]+))?
(?:::([a-zA-Z0-9\._-]+))?
\s+\#+\s+Puppet\s+Name:\s+(.*)\s*$
}x,
to_line: proc { |record|
line = ''
:fields => %w{operator package version slot use tag repo name},
:match => %r{^([<>]?=)?((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?(?::([a-zA-Z0-9._-]+))?(?:\[([^\]]*)\])?(?:#([a-zA-Z0-9._-]+))?(?:::([a-zA-Z0-9\._-]+))?\s+#+ Puppet Name: (.*)\s*$},
:to_line => proc { |record|
line = ""
line += record[:operator] if record[:operator]
line += record[:package] if record[:package]
line += '-' + record[:version] if record[:version]
line += ':' + record[:slot] if record[:slot]
line += '[' + record[:use] + ']' if record[:use]
line += '#' + record[:tag] if record[:tag]
line += '::' + record[:repo] if record[:repo]
line += ' ## Puppet Name: ' + record[:name]
line += "-" + record[:version] if record[:version]
line += ":" + record[:slot] if record[:slot]
line += "[" + record[:use] + "]" if record[:use]
line += "#" + record[:tag] if record[:tag]
line += "::" + record[:repo] if record[:repo]
line += " ## Puppet Name: " + record[:name]
line
}
end
# vim: set ts=2 shiftwidth=2 expandtab :

View File

@@ -1,7 +1,7 @@
Puppet::Type.type(:entropy_repo).provide(:file) do
desc 'File provider for Entropy Repositories'
desc "File provider for Entropy Repositories"
defaultfor operatingsystem: :sabayon
defaultfor :operatingsystem => :sabayon
mk_resource_methods
@@ -17,13 +17,15 @@ Puppet::Type.type(:entropy_repo).provide(:file) do
enabled_filename = "/etc/entropy/repositories.conf.d/entropy_#{type_prefix}#{@property_hash[:name]}"
disabled_filename = "/etc/entropy/repositories.conf.d/_entropy_#{type_prefix}#{@property_hash[:name]}"
if ['true', :true].include?(value)
if File.exist?(disabled_filename)
if value == 'true' || value == :true
if File.exists?(disabled_filename)
File.rename(disabled_filename, enabled_filename)
end
elsif File.exist?(enabled_filename)
else
if File.exists?(enabled_filename)
File.rename(enabled_filename, disabled_filename)
end
end
@property_hash[:enabled] = value
end
@@ -31,41 +33,42 @@ Puppet::Type.type(:entropy_repo).provide(:file) do
def self.instances
repos = Dir.entries('/etc/entropy/repositories.conf.d/')
repos.map { |r|
if ['.', '..'].include?(r)
repos.collect do |r|
if r == '.' || r == '..'
nil
elsif r =~ %r{\.example$}
elsif r =~ /\.example$/
nil
elsif r !~ %r{^_?entropy_}
elsif r !~ /^_?entropy_/
nil
else
matches = %r{^(_)?entropy_(enman_)?(.*)$}.match(r)
matches = /^(_)?entropy_(enman_)?(.*)$/.match(r)
enabled = matches[1].nil? ? 'true' : 'false'
type = (matches[2] == 'enman_') ? 'enman' : 'entropy'
type = matches[2] == 'enman_' ? 'enman' : 'entropy'
name = matches[3]
repo = {
name: name,
repo_type: type,
enabled: enabled,
provider: :entropy_repo,
:name => name,
:repo_type => type,
:enabled => enabled,
:provider => :entropy_repo,
}
new(repo)
end
}.compact
end.compact
end
def self.prefetch(resources)
repos = instances
repos = self.instances()
resources.each do |name, _resource|
provider = repos.find { |r| r.name == name }
if provider
resources.each do |name, resource|
if provider = repos.find { |r| r.name == name }
resources[name].provider = provider
end
end
end
end
# vim: set ts=2 shiftwidth=2 expandtab :

View File

@@ -1,59 +1,43 @@
require 'puppet/provider/parsedfile'
file = '/etc/entropy/packages/package.splitdebug'
file = "/etc/entropy/packages/package.splitdebug"
Puppet::Type.type(:entropy_splitdebug).provide(:parsed,
parent: Puppet::Provider::ParsedFile,
default_target: file,
filetype: :flat) do
:parent => Puppet::Provider::ParsedFile,
:default_target => file,
:filetype => :flat
) do
desc 'File splitdebug provider for entropy packages'
desc "File splitdebug provider for entropy packages"
defaultfor operatingsystem: :sabayon
defaultfor :operatingsystem => :sabayon
text_line :blank,
match: %r{^\s*$}
:match => /^\s*$/
text_line :comment,
match: %r{^\s*#}
:match => /^\s*#/
text_line :unmanaged,
match: %r{
^([<>]?=)?
((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?
(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?
(?::([a-zA-Z0-9\._-]+))?
(?:\[([^\]]*)\])?
(?:\#([a-zA-Z0-9\._-]+))?
(?:::([a-zA-Z0-9\._-]+))?
\s*$
}x
:match => %r{^([<>]?=)?((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?(?::([a-zA-Z0-9\._-]+))?(?:\[([^\]]*)\])?(?:#([a-zA-Z0-9\._-]+))?(?:::([a-zA-Z0-9\._-]+))?\s*$}
record_line :parsed,
fields: ['operator', 'package', 'version', 'slot', 'use', 'tag', 'repo', 'name'],
match: %r{
^([<>]?=)?
((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?
(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?
(?::([a-zA-Z0-9\._-]+))?
(?:\[([^\]]*)\])?
(?:\#([a-zA-Z0-9\._-]+))?
(?:::([a-zA-Z0-9\._-]+))?
\s+\#+\s+Puppet\s+Name:\s+(.*)
\s*$
}x,
to_line: proc { |record|
line = ''
:fields => %w{operator package version slot use tag repo name},
:match => %r{^([<>]?=)?((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?(?::([a-zA-Z0-9\._-]+))?(?:\[([^\]]*)\])?(?:#([a-zA-Z0-9\._-]+))?(?:::([a-zA-Z0-9\._-]+))?\s+#+ Puppet Name: (.*)\s*$},
:to_line => proc { |record|
line = ""
line += record[:operator] if record[:operator]
line += record[:package] if record[:package]
line += '-' + record[:version] if record[:version]
line += ':' + record[:slot] if record[:slot]
line += '[' + record[:use] + ']' if record[:use]
line += '#' + record[:tag] if record[:tag]
line += '::' + record[:repo] if record[:repo]
line += ' ## Puppet Name: ' + record[:name]
line += "-" + record[:version] if record[:version]
line += ":" + record[:slot] if record[:slot]
line += "[" + record[:use] + "]" if record[:use]
line += "#" + record[:tag] if record[:tag]
line += "::" + record[:repo] if record[:repo]
line += " ## Puppet Name: " + record[:name]
line
}
end
# vim: set ts=2 shiftwidth=2 expandtab :

View File

@@ -1,58 +1,43 @@
require 'puppet/provider/parsedfile'
file = '/etc/entropy/packages/package.splitdebug.mask'
file = "/etc/entropy/packages/package.splitdebug.mask"
Puppet::Type.type(:entropy_splitdebug_mask).provide(:parsed,
parent: Puppet::Provider::ParsedFile,
default_target: file,
filetype: :flat) do
:parent => Puppet::Provider::ParsedFile,
:default_target => file,
:filetype => :flat
) do
desc 'File splitdebug mask provider for entropy packages'
desc "File splitdebug mask provider for entropy packages"
defaultfor operatingsystem: :sabayon
defaultfor :operatingsystem => :sabayon
text_line :blank,
match: %r{^\s*$}
:match => /^\s*$/
text_line :comment,
match: %r{^\s*#}
:match => /^\s*#/
text_line :unmanaged,
match: %r{
^([<>]?=)?
((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?
(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?
(?::([a-zA-Z0-9\._-]+))?
(?:\[([^\]]*)\])?
(?:\#([a-zA-Z0-9._-]+))?
(?:::([a-zA-Z0-9._-]+))?
\s*$
}x
:match => %r{^([<>]?=)?((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?(?::([a-zA-Z0-9\._-]+))?(?:\[([^\]]*)\])?(?:#([a-zA-Z0-9._-]+))?(?:::([a-zA-Z0-9._-]+))?\s*$}
record_line :parsed,
fields: ['operator', 'package', 'version', 'slot', 'use', 'tag', 'repo', 'name'],
match: %r{
^([<>]?=)?
((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?
(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?
(?::([a-zA-Z0-9._-]+))?(?:\[([^\]]*)\])?
(?:\#([a-zA-Z0-9._-]+))?
(?:::([a-zA-Z0-9._-]+))?
\s+\#+\s+Puppet\s+Name:\s+(.*)
\s*$
}x,
to_line: proc { |record|
line = ''
:fields => %w{operator package version slot use tag repo name},
:match => %r{^([<>]?=)?((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?(?::([a-zA-Z0-9._-]+))?(?:\[([^\]]*)\])?(?:#([a-zA-Z0-9._-]+))?(?:::([a-zA-Z0-9._-]+))?\s+#+ Puppet Name: (.*)\s*$},
:to_line => proc { |record|
line = ""
line += record[:operator] if record[:operator]
line += record[:package] if record[:package]
line += '-' + record[:version] if record[:version]
line += ':' + record[:slot] if record[:slot]
line += '[' + record[:use] + ']' if record[:use]
line += '#' + record[:tag] if record[:tag]
line += '::' + record[:repo] if record[:repo]
line += ' ## Puppet Name: ' + record[:name]
line += "-" + record[:version] if record[:version]
line += ":" + record[:slot] if record[:slot]
line += "[" + record[:use] + "]" if record[:use]
line += "#" + record[:tag] if record[:tag]
line += "::" + record[:repo] if record[:repo]
line += " ## Puppet Name: " + record[:name]
line
}
end
# vim: set ts=2 shiftwidth=2 expandtab :

View File

@@ -1,59 +1,43 @@
require 'puppet/provider/parsedfile'
unmasks = '/etc/entropy/packages/package.unmask'
unmasks = "/etc/entropy/packages/package.unmask"
Puppet::Type.type(:entropy_unmask).provide(:parsed,
parent: Puppet::Provider::ParsedFile,
default_target: unmasks,
filetype: :flat) do
:parent => Puppet::Provider::ParsedFile,
:default_target => unmasks,
:filetype => :flat
) do
desc 'File unmask provider for entropy packages'
desc "File unmask provider for entropy packages"
defaultfor operatingsystem: :sabayon
defaultfor :operatingsystem => :sabayon
text_line :blank,
match: %r{^\s*$}
:match => /^\s*$/
text_line :comment,
match: %r{^\s*#}
:match => /^\s*#/
text_line :unmanaged,
match: %r{
^([<>]?=)?
((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?
(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?
(?::([a-zA-Z0-9._-]+))?
(?:\[([^\]]*)\])?
(?:\#([a-zA-Z0-9._-]+))?
(?:::([a-zA-Z0-9._-]+))?
\s*$
}x
:match => %r{^([<>]?=)?((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?(?::([a-zA-Z0-9._-]+))?(?:\[([^\]]*)\])?(?:#([a-zA-Z0-9._-]+))?(?:::([a-zA-Z0-9._-]+))?\s*$}
record_line :parsed,
fields: ['operator', 'package', 'version', 'slot', 'use', 'tag', 'repo', 'name'],
match: %r{
^([<>]?=)?
((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?
(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?
(?::([a-zA-Z0-9._-]+))?
(?:\[([^\]]*)\])?
(?:\#([a-zA-Z0-9._-]+))?
(?:::([a-zA-Z0-9._-]+))?
\s+\#+\s+Puppet\s+Name:\s+(.*)
\s*$
}x,
to_line: proc { |record|
line = ''
:fields => %w{operator package version slot use tag repo name},
:match => %r{^([<>]?=)?((?:[A-Za-z0-9+_.-]+/)?[a-zA-Z0-9+_-]+)?(?:-(\d+(?:\.\d+)*[a-z]*(?:_(?:alpha|beta|pre|p|rc)\d*)?(?:-r\d+)?))?(?::([a-zA-Z0-9._-]+))?(?:\[([^\]]*)\])?(?:#([a-zA-Z0-9._-]+))?(?:::([a-zA-Z0-9._-]+))?\s+#+ Puppet Name: (.*)\s*$},
:to_line => proc { |record|
line = ""
line += record[:operator] if record[:operator]
line += record[:package] if record[:package]
line += '-' + record[:version] if record[:version]
line += ':' + record[:slot] if record[:slot]
line += '[' + record[:use] + ']' if record[:use]
line += '#' + record[:tag] if record[:tag]
line += '::' + record[:repo] if record[:repo]
line += ' ## Puppet Name: ' + record[:name]
line += "-" + record[:version] if record[:version]
line += ":" + record[:slot] if record[:slot]
line += "[" + record[:use] + "]" if record[:use]
line += "#" + record[:tag] if record[:tag]
line += "::" + record[:repo] if record[:repo]
line += " ## Puppet Name: " + record[:name]
line
}
end
# vim: set ts=2 shiftwidth=2 expandtab :

View File

@@ -1,7 +1,7 @@
require 'puppet/provider/package'
require 'fileutils'
Puppet::Type.type(:package).provide(:entropy, parent: Puppet::Provider::Package) do
Puppet::Type.type(:package).provide(:entropy, :parent => Puppet::Provider::Package) do
desc "Provides packaging support for Sabayon's entropy system."
has_feature :versionable
@@ -9,61 +9,57 @@ Puppet::Type.type(:package).provide(:entropy, parent: Puppet::Provider::Package)
has_feature :uninstallable
has_feature :upgradeable
has_command(:equo, 'equo') do
has_command(:equo, "equo") do
locale = Facter.value(:locale)
environment(LANG: locale,
LC_ALL: locale,
LANGUAHE: locale)
environment({
:LANG => locale,
:LC_ALL => locale,
:LANGUAHE => locale,
})
end
# Require the locale fact exist
confine false: Facter.value(:locale).nil?
confine osfamily: :Gentoo
confine :false => Facter.value(:locale).nil?
confine :osfamily => :Gentoo
defaultfor operatingsystem: :Sabayon
defaultfor :operatingsystem => :Sabayon
def self.instances
result_format = %r{
^(\S+)\/(\S+)-([\.\d]+[a-z]?(?:_(?:alpha|beta|pre|pre_pre|rc|p)\d*)?
(?:-r\d+)?)(?:\#(\S+))?$
}x
result_format = /^(\S+)\/(\S+)-([\.\d]+(?:_?(?:a(?:lpha)?|b(?:eta)?|pre|rc|p)\d*)?(?:-r\d+)?)(?:#(\S+))?$/
result_fields = [:category, :name, :ensure]
begin
search_output = equo('query', 'list', 'installed', '--quiet', '--verbose').chomp
search_output = equo("query", "list", "installed", "--quiet", "--verbose").chomp
packages = []
search_output.each_line do |search_result|
match = result_format.match(search_result)
next unless match
if match
package = {}
result_fields.zip(match.captures) do |field, value|
package[field] = value unless !value || value.empty?
package[field] = value unless !value or value.empty?
end
package[:provider] = :entropy
packages << new(package)
end
end
return packages
rescue Puppet::ExecutionFailure => detail
raise Puppet::Error, detail.message
raise Puppet::Error.new(detail)
end
end
def install
should = @resource.should(:ensure)
name = package_name
unless [:present, :latest].include?(should)
unless should == :present or should == :latest
# We must install a specific version
name = "=#{name}-#{should}"
end
begin
equo 'install', name
rescue Puppet::ExecutionFailure => detail
raise Puppet::Error, detail.message
end
equo "install", name
end
# The common package name format.
@@ -76,33 +72,29 @@ Puppet::Type.type(:package).provide(:entropy, parent: Puppet::Provider::Package)
end
def uninstall
equo 'remove', package_name
rescue Puppet::ExecutionFailure => detail
raise Puppet::Error, detail.message
equo "remove", package_name
end
def update
install
self.install
end
def query
result_format = %r{
^(\S+)\/(\S+)-([\.\d]+[a-z]?(?:_(?:alpha|beta|pre_pre|pre|rc|p)\d*)?(?:-r\d+)?)
(?::[^\#]+)?(?:\#(\S+))?$
}x
result_format = /^(\S+)\/(\S+)-([\.\d]+(?:_(?:alpha|beta|pre|rc|p)\d+)?(?:-r\d+)?)(?::[^#]+)?(?:#(\S+))?$/
result_fields = [:category, :name, :version_available]
begin
# Look for an installed package from a known repository
search_output = equo('match', '--quiet', '--verbose', package_name).chomp
search_output = equo("match", "--quiet", "--verbose", package_name).chomp
search_match = search_output.match(result_format)
if search_match
package = {}
result_fields.zip(search_match.captures).each do |field, value|
package[field] = value unless !value || value.empty?
package[field] = value unless !value or value.empty?
end
begin
installed_output = equo('match', '--quiet', '--verbose', '--installed', package_name).chomp
installed_match = installed_output.match(result_format)
@@ -122,34 +114,38 @@ Puppet::Type.type(:package).provide(:entropy, parent: Puppet::Provider::Package)
else
# List all installed packages and try and find if it's installed from outside a repository
# If so, assume the installed version is the latest available
all_installed = equo('query', 'list', 'installed', '--quiet', '--verbose').chomp
all_installed = equo("query", "list", "installed", "--quiet", "--verbose").chomp
all_installed.split("\n").each do |installed_package|
search_match = installed_package.match(result_format)
next unless search_match
if search_match
search_captures = search_match.captures
next unless (search_captures[0] == (@resource[:category]) && search_captures[1] == (@resource[:name])) || package_name == "#{search_captures[0]}/#{search_captures[1]}"
if (search_captures[0] == @resource[:category] and search_captures[1] == @resource[:name]) or "#{search_captures[0]}/#{search_captures[1]}" == package_name
package = {
ensure: search_captures[2],
:ensure => search_captures[2]
}
result_fields.zip(search_captures).each do |field, value|
package[field] = value unless !value || value.empty?
package[field] = value unless !value or value.empty?
end
return package
end
end
end
raise Puppet::Error, "No package found with the specified name [#{package_name}]"
raise Puppet::Error.new("No package found with the specified name [#{package_name}]")
end
rescue Puppet::ExecutionFailure => detail
raise Puppet::Error, detail.message
raise Puppet::Error.new(detail)
end
end
def latest
query[:version_available]
self.query[:version_available]
end
end

View File

@@ -1,7 +1,8 @@
# Manage systemd services using /bin/systemctl
Puppet::Type.type(:service).provide :sabayon, parent: :systemd do
desc 'Manages `systemd` services using `systemctl`.'
Puppet::Type.type(:service).provide :sabayon, :parent => :systemd do
desc "Manages `systemd` services using `systemctl`."
defaultfor :operatingsystem => :sabayon
defaultfor operatingsystem: :sabayon
end

View File

@@ -1,16 +1,18 @@
Puppet::Type.newtype(:enman_repo) do
@desc = 'Manages Sabayon Community Repositories'
@desc = "Manages Sabayon Community Repositories"
ensurable
newparam(:name) do
desc 'Name of the Enman Repository'
desc "Name of the Enman Repository"
isnamevar
end
autorequire(:package) do
['enman']
end
end
# vim: set ts=2 shiftwidth=2 expandtab :

View File

@@ -1,23 +1,23 @@
Puppet::Type.newtype(:entropy_keywords) do
@desc = 'Override keywords for Entropy packages'
@desc = "Override keywords for Entropy packages"
ensurable
newparam(:name) do
desc 'Unique name for this keyword entry'
desc "Unique name for this keyword entry"
end
newproperty(:keyword) do
desc 'Keyword to be applied to matching packages'
desc "Keyword to be applied to matching packages"
defaultto do
defaultto {
os = Facter.value(:os)
if os.key?('architecture')
os['architecture']
else
'**'
end
end
}
end
newproperty(:operator) do
@@ -25,35 +25,35 @@ Puppet::Type.newtype(:entropy_keywords) do
end
newproperty(:package) do
desc 'Name of the package being keyworded'
desc "Name of the package being keyworded"
newvalues(%r{^(?:[A-Za-z0-9+_.-]+\/)?[a-zA-Z0-9+_-]+$})
end
newproperty(:version) do
desc 'Version of the package'
desc "Version of the package"
newvalues(%r{^(\d*(?:\.\d+[a-zA-Z]*)*)(?:_((?:alpha|beta|pre|rc)\d*))?(-r\d+)?$})
end
newproperty(:repo) do
desc 'Repo for the package'
desc "Repo for the package"
end
newproperty(:target) do
desc 'Location of the package.keywords file being managed'
desc "Location of the package.keywords file being managed"
defaultto do
defaultto {
if @resource.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
@resource.class.defaultprovider.default_target
else
nil
end
end
}
end
validate do
raise(ArgumentError, 'Package is required when a version is specified') if self[:package].nil? && !self[:version].nil?
raise(ArgumentError, "Package is required when a version is specified") if self[:package].nil? && !self[:version].nil?
raise(ArgumentError, 'Version is required when an operator is specified') if self[:version].nil? && !self[:operator].nil?
raise(ArgumentError, "Version is required when an operator is specified") if self[:version].nil? && !self[:operator].nil?
end
autobefore(:package) do
@@ -62,3 +62,4 @@ Puppet::Type.newtype(:entropy_keywords) do
end
# vim: set ts=2 sw=2 expandtab:

View File

@@ -1,10 +1,10 @@
Puppet::Type.newtype(:entropy_mask) do
@desc = 'Mask packages in Entropy'
@desc = "Mask packages in Entropy"
ensurable
newparam(:name) do
desc 'Unique name for this mask'
desc "Unique name for this mask"
end
newproperty(:operator) do
@@ -12,47 +12,47 @@ Puppet::Type.newtype(:entropy_mask) do
end
newproperty(:package) do
desc 'Name of the package being masked'
desc "Name of the package being masked"
newvalues(%r{^(?:[A-Za-z0-9+_.-]+\/)?[a-zA-Z0-9+_-]+$})
end
newproperty(:version) do
desc 'Version of the package'
desc "Version of the package"
newvalues(%r{^(\d*(?:\.\d+[a-zA-Z]*)*)(?:_((?:alpha|beta|pre|rc)\d*))?(-r\d+)?$})
end
newproperty(:slot) do
desc 'Slot the package is in'
desc "Slot the package is in"
end
newproperty(:use) do
desc 'Useflags for the package'
desc "Useflags for the package"
end
newproperty(:tag) do
desc 'Tag for the package'
desc "Tag for the package"
end
newproperty(:repo) do
desc 'Repo for the package'
desc "Repo for the package"
end
newproperty(:target) do
desc 'Location of the package.mask file being managed'
desc "Location of the package.mask file being managed"
defaultto do
defaultto {
if @resource.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
@resource.class.defaultprovider.default_target
else
nil
end
end
}
end
validate do
raise(ArgumentError, 'Package is required when a version is specified') if self[:package].nil? && !self[:version].nil?
raise(ArgumentError, "Package is required when a version is specified") if self[:package].nil? && !self[:version].nil?
raise(ArgumentError, 'Version is required when an operator is specified') if self[:version].nil? && !self[:operator].nil?
raise(ArgumentError, "Version is required when an operator is specified") if self[:version].nil? && !self[:operator].nil?
end
autobefore(:package) do
@@ -61,3 +61,4 @@ Puppet::Type.newtype(:entropy_mask) do
end
# vim: set ts=2 sw=2 expandtab:

View File

@@ -1,20 +1,22 @@
require 'puppet/property/boolean'
Puppet::Type.newtype(:entropy_repo) do
@desc = 'Manages Entropy Repositories'
@desc = "Manages Entropy Repositories"
newparam(:name) do
desc 'Name of the Entropy Repository'
desc "Name of the Entropy Repository"
end
newproperty(:repo_type, readonly: true) do
desc 'What type of repository this is (enman or entropy)'
newproperty(:repo_type, :readonly => true) do
desc "What type of repository this is (enman or entropy)"
end
newproperty(:enabled) do
desc 'Whether the repository is enabled or not'
desc "Whether the repository is enabled or not"
newvalues('true', 'false')
end
end
# vim: set ts=2 shiftwidth=2 expandtab :

View File

@@ -1,10 +1,10 @@
Puppet::Type.newtype(:entropy_splitdebug) do
@desc = 'Manages splitdebug for packages in Entropy'
@desc = "Manages splitdebug for packages in Entropy"
ensurable
newparam(:name) do
desc 'Unique name for this splitdebug specification'
desc "Unique name for this splitdebug specification"
end
newproperty(:operator) do
@@ -12,47 +12,47 @@ Puppet::Type.newtype(:entropy_splitdebug) do
end
newproperty(:package) do
desc 'Name of the package with splitdebug'
desc "Name of the package with splitdebug"
newvalues(%r{^(?:[A-Za-z0-9+_.-]+\/)?[a-zA-Z0-9+_-]+$})
end
newproperty(:version) do
desc 'Version of the package'
desc "Version of the package"
newvalues(%r{^(\d*(?:\.\d+[a-zA-Z]*)*)(?:_((?:alpha|beta|pre|rc)\d*))?(-r\d+)?$})
end
newproperty(:slot) do
desc 'Slot the package is in'
desc "Slot the package is in"
end
newproperty(:use) do
desc 'Useflags for the package'
desc "Useflags for the package"
end
newproperty(:tag) do
desc 'Tag for the package'
desc "Tag for the package"
end
newproperty(:repo) do
desc 'Repo for the package'
desc "Repo for the package"
end
newproperty(:target) do
desc 'Location of the package.splitdebug file being managed'
desc "Location of the package.splitdebug file being managed"
defaultto do
defaultto {
if @resource.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
@resource.class.defaultprovider.default_target
else
nil
end
end
}
end
validate do
raise(ArgumentError, 'Package is required when a version is specified') if self[:package].nil? && !self[:version].nil?
raise(ArgumentError, "Package is required when a version is specified") if self[:package].nil? && !self[:version].nil?
raise(ArgumentError, 'Version is required when an operator is specified') if self[:version].nil? && !self[:operator].nil?
raise(ArgumentError, "Version is required when an operator is specified") if self[:version].nil? && !self[:operator].nil?
end
autobefore(:package) do
@@ -61,3 +61,4 @@ Puppet::Type.newtype(:entropy_splitdebug) do
end
# vim: set ts=2 sw=2 expandtab:

View File

@@ -1,10 +1,10 @@
Puppet::Type.newtype(:entropy_splitdebug_mask) do
@desc = 'Manages splitdebug masks for packages in Entropy'
@desc = "Manages splitdebug masks for packages in Entropy"
ensurable
newparam(:name) do
desc 'Unique name for this splitdebug mask specification'
desc "Unique name for this splitdebug mask specification"
end
newproperty(:operator) do
@@ -12,47 +12,47 @@ Puppet::Type.newtype(:entropy_splitdebug_mask) do
end
newproperty(:package) do
desc 'Name of the package with splitdebug mask'
desc "Name of the package with splitdebug mask"
newvalues(%r{^(?:[A-Za-z0-9+_.-]+\/)?[a-zA-Z0-9+_-]+$})
end
newproperty(:version) do
desc 'Version of the package'
desc "Version of the package"
newvalues(%r{^(\d*(?:\.\d+[a-zA-Z]*)*)(?:_((?:alpha|beta|pre|rc)\d*))?(-r\d+)?$})
end
newproperty(:slot) do
desc 'Slot the package is in'
desc "Slot the package is in"
end
newproperty(:use) do
desc 'Useflags for the package'
desc "Useflags for the package"
end
newproperty(:tag) do
desc 'Tag for the package'
desc "Tag for the package"
end
newproperty(:repo) do
desc 'Repo for the package'
desc "Repo for the package"
end
newproperty(:target) do
desc 'Location of the package.splitdebug.mask file being managed'
desc "Location of the package.splitdebug.mask file being managed"
defaultto do
defaultto {
if @resource.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
@resource.class.defaultprovider.default_target
else
nil
end
end
}
end
validate do
raise(ArgumentError, 'Package is required when a version is specified') if self[:package].nil? && !self[:version].nil?
raise(ArgumentError, "Package is required when a version is specified") if self[:package].nil? && !self[:version].nil?
raise(ArgumentError, 'Version is required when an operator is specified') if self[:version].nil? && !self[:operator].nil?
raise(ArgumentError, "Version is required when an operator is specified") if self[:version].nil? && !self[:operator].nil?
end
autobefore(:package) do
@@ -61,3 +61,4 @@ Puppet::Type.newtype(:entropy_splitdebug_mask) do
end
# vim: set ts=2 sw=2 expandtab:

View File

@@ -1,10 +1,10 @@
Puppet::Type.newtype(:entropy_unmask) do
@desc = 'Unmask packages in Entropy'
@desc = "Unmask packages in Entropy"
ensurable
newparam(:name) do
desc 'Unique name for this unmask'
desc "Unique name for this unmask"
end
newproperty(:operator) do
@@ -12,47 +12,47 @@ Puppet::Type.newtype(:entropy_unmask) do
end
newproperty(:package) do
desc 'Name of the package being masked'
desc "Name of the package being masked"
newvalues(%r{^(?:[A-Za-z0-9+_.-]+\/)?[a-zA-Z0-9+_-]+$})
end
newproperty(:version) do
desc 'Version of the package'
desc "Version of the package"
newvalues(%r{^(\d*(?:\.\d+[a-zA-Z]*)*)(?:_((?:alpha|beta|pre|rc)\d*))?(-r\d+)?$})
end
newproperty(:slot) do
desc 'Slot the package is in'
desc "Slot the package is in"
end
newproperty(:use) do
desc 'Useflags for the package'
desc "Useflags for the package"
end
newproperty(:tag) do
desc 'Tag for the package'
desc "Tag for the package"
end
newproperty(:repo) do
desc 'Repo for the package'
desc "Repo for the package"
end
newproperty(:target) do
desc 'Location of the package.unmask file being managed'
desc "Location of the package.unmask file being managed"
defaultto do
defaultto {
if @resource.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
@resource.class.defaultprovider.default_target
else
nil
end
end
}
end
validate do
raise(ArgumentError, 'Package is required when a version is specified') if self[:package].nil? && !self[:version].nil?
raise(ArgumentError, "Package is required when a version is specified") if self[:package].nil? && !self[:version].nil?
raise(ArgumentError, 'Version is required when an operator is specified') if self[:version].nil? && !self[:operator].nil?
raise(ArgumentError, "Version is required when an operator is specified") if self[:version].nil? && !self[:operator].nil?
end
autobefore(:package) do
@@ -61,3 +61,4 @@ Puppet::Type.newtype(:entropy_unmask) do
end
# vim: set ts=2 sw=2 expandtab:

View File

@@ -1,39 +1,27 @@
{
"name": "optiz0r-sabayon",
"version": "0.6.1",
"version": "0.3.1",
"author": "Ben Roberts",
"summary": "Extends Puppet with support for the Sabayon Linux distribution",
"license": "MIT",
"summary": "Extends Puppet with support for the Sabayon Linux distribution",
"source": "https://github.com/Sabayon/puppet-sabayon.git",
"project_page": "https://github.com/Sabayon/puppet-sabayon",
"issues_url": "https://github.com/Sabayon/puppet-sabayon/issues",
"dependencies": [
"tags": [
"sabayon",
"entropy"
],
"data_provider": "hiera",
"operatingsystem_support": [
{
"operatingsystem": "Sabayon",
"operatingsystemrelease": [
"16.07",
"16.11",
"19.03",
"19.05",
"19.10"
"16.11"
]
}
],
"requirements": [
{
"name": "puppet",
"version_requirement": ">= 4.10.0 < 7.0.0"
}
"dependencies": [
],
"tags": [
"sabayon",
"entropy"
],
"pdk-version": "1.10.0",
"template-url": "file:///opt/puppetlabs/pdk/share/cache/pdk-templates.git#1.10.0",
"template-ref": "1.10.0-0-gbba9ac3"
"data_provider": "hiera"
}

View File

@@ -1,7 +1,7 @@
require 'spec_helper'
describe 'sabayon' do
context 'with default values for all parameters' do
it { is_expected.to contain_class('sabayon') }
it { is_expected.to contain_package('app-admin/enman') }
it { should contain_class('sabayon') }
it { should contain_package('app-admin/enman') }
end
end

View File

@@ -1,7 +0,0 @@
# Use default_module_facts.yml for module specific facts.
#
# Facts specified here will override the values provided by rspec-puppet-facts.
---
ipaddress: "172.16.254.254"
is_pe: false
macaddress: "AA:AA:AA:AA:AA:AA"

View File

@@ -1,48 +1 @@
require 'puppetlabs_spec_helper/module_spec_helper'
require 'rspec-puppet-facts'
require 'spec_helper_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_local.rb'))
include RspecPuppetFacts
default_facts = {
puppetversion: Puppet.version,
facterversion: Facter.version,
}
default_fact_files = [
File.expand_path(File.join(File.dirname(__FILE__), 'default_facts.yml')),
File.expand_path(File.join(File.dirname(__FILE__), 'default_module_facts.yml')),
]
default_fact_files.each do |f|
next unless File.exist?(f) && File.readable?(f) && File.size?(f)
begin
default_facts.merge!(YAML.safe_load(File.read(f), [], [], true))
rescue => e
RSpec.configuration.reporter.message "WARNING: Unable to load #{f}: #{e}"
end
end
RSpec.configure do |c|
c.mock_with :mocha
c.default_facts = default_facts
c.before :each do
# set to strictest setting for testing
# by default Puppet runs at warning level
Puppet.settings[:strict] = :warning
end
c.filter_run_excluding(bolt: true) unless ENV['GEM_BOLT']
c.after(:suite) do
end
end
def ensure_module_defined(module_name)
module_name.split('::').reduce(Object) do |last_module, next_module|
last_module.const_set(next_module, Module.new) unless last_module.const_defined?(next_module, false)
last_module.const_get(next_module, false)
end
end
# 'spec_overrides' from sync.yml will appear below this line

View File

@@ -1,11 +1,10 @@
require 'spec_helper'
describe Puppet::Type.type(:entropy_keywords).provider(:parsed) do
let(:default_target) { described_class.default_target }
before(:each) do
before do
described_class.stubs(:filetype).returns(Puppet::Util::FileType::FileTypeRam)
described_class.stubs(:filetype=)
@default_target = described_class.default_target
end
describe 'should have a default target of /etc/entropy/packages/package.keywords' do
@@ -15,7 +14,7 @@ describe Puppet::Type.type(:entropy_keywords).provider(:parsed) do
end
describe 'when parsing' do
it 'parses out the name' do
it 'should parse out the name' do
line = '** app-admin/foobar ## Puppet Name: foobar'
expect(described_class.parse_line(line)[:name]).to eq('foobar')
end
@@ -24,15 +23,15 @@ describe Puppet::Type.type(:entropy_keywords).provider(:parsed) do
line = '** app-admin/foobar ## Puppet Name: foobar'
parsed = described_class.parse_line(line)
it 'parses out the keyword' do
it 'should parse out the keyword' do
expect(parsed[:keyword]).to eq('**')
end
it 'parses out the package name' do
it 'should parse out the package name' do
expect(parsed[:package]).to eq('app-admin/foobar')
end
it 'has all other parameters undefined' do
it 'should have all other parameters undefined' do
[:operator, :version, :repo].each do |param|
expect(parsed[param]).to be_nil
end
@@ -43,19 +42,19 @@ describe Puppet::Type.type(:entropy_keywords).provider(:parsed) do
line = '** app-admin/foobar-1.2.3_alpha1-r1 ## Puppet Name: foobar'
parsed = described_class.parse_line(line)
it 'parses out the keyword' do
it 'should parse out the keyword' do
expect(parsed[:keyword]).to eq('**')
end
it 'parses out the package name' do
it 'should parse out the package name' do
expect(parsed[:package]).to eq('app-admin/foobar')
end
it 'parses out the version' do
it 'should parse out the version' do
expect(parsed[:version]).to eq('1.2.3_alpha1-r1')
end
it 'has all other parameters undefined' do
it 'should have all other parameters undefined' do
[:operator, :repo].each do |param|
expect(parsed[param]).to be_nil
end
@@ -66,23 +65,23 @@ describe Puppet::Type.type(:entropy_keywords).provider(:parsed) do
line = '** >=app-admin/foobar-1.2.3_alpha1-r1 ## Puppet Name: foobar'
parsed = described_class.parse_line(line)
it 'parses out the keyword' do
it 'should parse out the keyword' do
expect(parsed[:keyword]).to eq('**')
end
it 'parses out the package name' do
it 'should parse out the package name' do
expect(parsed[:package]).to eq('app-admin/foobar')
end
it 'parses out the version' do
it 'should parse out the version' do
expect(parsed[:version]).to eq('1.2.3_alpha1-r1')
end
it 'parses out the operator' do
it 'should parse out the operator' do
expect(parsed[:operator]).to eq('>=')
end
it 'has all other parameters undefined' do
it 'should have all other parameters undefined' do
[:repo].each do |param|
expect(parsed[param]).to be_nil
end
@@ -93,19 +92,19 @@ describe Puppet::Type.type(:entropy_keywords).provider(:parsed) do
line = '** app-admin/foobar repo=community ## Puppet Name: foobar'
parsed = described_class.parse_line(line)
it 'parses out the keyword' do
it 'should parse out the keyword' do
expect(parsed[:keyword]).to eq('**')
end
it 'parses out the package name' do
it 'should parse out the package name' do
expect(parsed[:package]).to eq('app-admin/foobar')
end
it 'parses out the repo' do
it 'should parse out the repo' do
expect(parsed[:repo]).to eq('community')
end
it 'has all other parameters undefined' do
it 'should have all other parameters undefined' do
[:operator, :version].each do |param|
expect(parsed[param]).to be_nil
end
@@ -116,15 +115,15 @@ describe Puppet::Type.type(:entropy_keywords).provider(:parsed) do
line = 'amd64 repo=community ## Puppet Name: foobar'
parsed = described_class.parse_line(line)
it 'parses out the keyword' do
it 'should parse out the keyword' do
expect(parsed[:keyword]).to eq('amd64')
end
it 'parses out the repo' do
it 'should parse out the repo' do
expect(parsed[:repo]).to eq('community')
end
it 'has all other parameters undefined' do
it 'should have all other parameters undefined' do
[:package, :operator, :version].each do |param|
expect(parsed[param]).to be_nil
end
@@ -136,99 +135,99 @@ describe Puppet::Type.type(:entropy_keywords).provider(:parsed) do
parsed = described_class.parse_line(line)
expected = {
name: 'foobar',
keyword: '**',
package: 'app-admin/foobar',
operator: '>=',
version: '1.2.3a_alpha1-r1',
repo: 'community',
:name => 'foobar',
:keyword => '**',
:package => 'app-admin/foobar',
:operator => '>=',
:version => '1.2.3a_alpha1-r1',
:repo => 'community',
}
it 'parses out all parameters' do
it 'should parse out all parameters' do
expected.each do |param, value|
expect(parsed[param]).to eq(value)
end
end
end
end
describe 'when flushing' do
let(:ramfile) { Puppet::Util::FileType::FileTypeRam.new(:default_target) }
before :each do
File.stubs(:exist?).with(:default_target).returns(true)
described_class.stubs(:target_object).returns(:ramfile)
@ramfile = Puppet::Util::FileType::FileTypeRam.new(@default_target)
File.stubs(:exist?).with(@default_target).returns(true)
described_class.any_instance.stubs(:target_object).returns(@ramfile)
end
after :each do
described_class.clear
end
it 'outputs a single package entry' do
it 'should output a single package entry' do
resource = {
record_type: :parsed,
name: 'test',
keyword: '**',
package: 'app-admin/foobar',
:record_type => :parsed,
:name => 'test',
:keyword => '**',
:package => 'app-admin/foobar',
}
expect(described_class.to_line(resource)).to eq '** app-admin/foobar ## Puppet Name: test'
expect(described_class.to_line(resource)).to eq ('** app-admin/foobar ## Puppet Name: test')
end
it 'outputs a versioned package entry' do
it 'should output a versioned package entry' do
resource = {
record_type: :parsed,
name: 'test',
keyword: '**',
package: 'app-admin/foobar',
version: '1.2.3',
:record_type => :parsed,
:name => 'test',
:keyword => '**',
:package => 'app-admin/foobar',
:version => '1.2.3',
}
expect(described_class.to_line(resource)).to eq '** app-admin/foobar-1.2.3 ## Puppet Name: test'
expect(described_class.to_line(resource)).to eq ('** app-admin/foobar-1.2.3 ## Puppet Name: test')
end
it 'outputs a ranged versioned package entry' do
it 'should output a ranged versioned package entry' do
resource = {
record_type: :parsed,
name: 'test',
keyword: '**',
package: 'app-admin/foobar',
version: '1.2.3',
operator: '>=',
:record_type => :parsed,
:name => 'test',
:keyword => '**',
:package => 'app-admin/foobar',
:version => '1.2.3',
:operator => '>=',
}
expect(described_class.to_line(resource)).to eq '** >=app-admin/foobar-1.2.3 ## Puppet Name: test'
expect(described_class.to_line(resource)).to eq ('** >=app-admin/foobar-1.2.3 ## Puppet Name: test')
end
it 'outputs a repo-specific package entry' do
it 'should output a repo-specific package entry' do
resource = {
record_type: :parsed,
name: 'test',
keyword: '**',
package: 'app-admin/foobar',
repo: 'community',
:record_type => :parsed,
:name => 'test',
:keyword => '**',
:package => 'app-admin/foobar',
:repo => 'community',
}
expect(described_class.to_line(resource)).to eq '** app-admin/foobar repo=community ## Puppet Name: test'
expect(described_class.to_line(resource)).to eq ('** app-admin/foobar repo=community ## Puppet Name: test')
end
it 'outputs a whole-repo entry' do
it 'should output a whole-repo entry' do
resource = {
record_type: :parsed,
name: 'test',
keyword: '**',
repo: 'community',
:record_type => :parsed,
:name => 'test',
:keyword => '**',
:repo => 'community',
}
expect(described_class.to_line(resource)).to eq '** repo=community ## Puppet Name: test'
expect(described_class.to_line(resource)).to eq ('** repo=community ## Puppet Name: test')
end
it 'outputs all fields for a package entry' do
it 'should output all fields for a package entry' do
resource = {
record_type: :parsed,
name: 'test',
keyword: '**',
package: 'app-admin/foobar',
operator: '>=',
version: '1.2.3',
repo: 'community',
:record_type => :parsed,
:name => 'test',
:keyword => '**',
:package => 'app-admin/foobar',
:operator => '>=',
:version => '1.2.3',
:repo => 'community',
}
expect(described_class.to_line(resource)).to eq '** >=app-admin/foobar-1.2.3 repo=community ## Puppet Name: test'
expect(described_class.to_line(resource)).to eq ('** >=app-admin/foobar-1.2.3 repo=community ## Puppet Name: test')
end
end
end

View File

@@ -8,33 +8,33 @@ describe Puppet::Type.type(:entropy_repo).provider(:file) do
let(:repos) do
[
{ name: 'sabayonlinux.org', type: 'entropy', enabled: 'true' },
{ name: 'sabayon-limbo', type: 'entropy', enabled: 'false' },
{ name: 'community', type: 'enman', enabled: 'true' },
{:name => 'sabayonlinux.org', :type => 'entropy', :enabled => 'true'},
{:name => 'sabayon-limbo', :type => 'entropy', :enabled => 'false'},
{:name => 'community', :type => 'enman', :enabled => 'true'},
]
end
before(:each) do
before do
Dir.stubs(:entries).with('/etc/entropy/repositories.conf.d/').returns([
'.', '..', 'README',
'entropy_sabayonlinux.org',
'_entropy_sabayon-limbo',
'entropy_enman_community',
'entropy_foobar.example'
'entropy_foobar.example',
])
end
it 'identifies the correct number of repos' do
it 'should identify the correct number of repos' do
expect(instances.size).to eq(repos.size)
end
it 'identifies the correct repo name' do
it 'should identify the correct repo name' do
repos.each_with_index do |repo, index|
expect(instances[index].name).to eq(repo[:name])
end
end
it 'identifies the correct enabled state' do
it 'should identify the correct enabled state' do
repos.each_with_index do |repo, index|
expect(instances[index].enabled).to eq(repo[:enabled])
end
@@ -42,19 +42,19 @@ describe Puppet::Type.type(:entropy_repo).provider(:file) do
end
describe 'when enabling a repository' do
it 'enables a disabled repository' do
File.stubs(:exist?).with('/etc/entropy/repositories.conf.d/entropy_sabayonlinux.org').returns(true).once
it 'should enable a disabled repository' do
File.stubs(:exists?).with('/etc/entropy/repositories.conf.d/entropy_sabayonlinux.org').returns(true).once
File.stubs(:rename).with('/etc/entropy/repositories.conf.d/entropy_sabayonlinux.org', '/etc/entropy/repositories.conf.d/_entropy_sabayonlinux.org').once
instance = described_class.new(name: 'sabayonlinux.org', enabled: 'true', type: 'entropy')
instance = described_class.new(:name => 'sabayonlinux.org', :enabled => 'true', :type => 'entropy')
instance.enabled = 'false'
end
end
describe 'when disabling a repository' do
it 'disables an enabled repository' do
File.stubs(:exist?).with('/etc/entropy/repositories.conf.d/_entropy_sabayon-limbo').returns(true).once
it 'should disable an enabled repository' do
File.stubs(:exists?).with('/etc/entropy/repositories.conf.d/_entropy_sabayon-limbo').returns(true).once
File.stubs(:rename).with('/etc/entropy/repositories.conf.d/_entropy_sabayon-limbo', '/etc/entropy/repositories.conf.d/entropy_sabayon-limbo').once
instance = described_class.new(name: 'sabayon-limbo', enabled: 'false', type: 'entropy')
instance = described_class.new(:name => 'sabayon-limbo', :enabled => 'false', :type => 'entropy')
instance.enabled = 'true'
end
end

View File

@@ -5,26 +5,25 @@ require 'puppet/type/entropy_splitdebug'
require 'puppet/type/entropy_splitdebug_mask'
types = {
entropy_mask: Puppet::Type::Entropy_mask,
entropy_unmask: Puppet::Type::Entropy_unmask,
entropy_splitdebug: Puppet::Type::Entropy_splitdebug,
entropy_splitdebug_mask: Puppet::Type::Entropy_splitdebug_mask,
:entropy_mask => Puppet::Type::Entropy_mask,
:entropy_unmask => Puppet::Type::Entropy_unmask,
:entropy_splitdebug => Puppet::Type::Entropy_splitdebug,
:entropy_splitdebug_mask => Puppet::Type::Entropy_splitdebug_mask,
}
default_targets = {
entropy_mask: '/etc/entropy/packages/package.mask',
entropy_unmask: '/etc/entropy/packages/package.unmask',
entropy_splitdebug: '/etc/entropy/packages/package.splitdebug',
entropy_splitdebug_mask: '/etc/entropy/packages/package.splitdebug.mask',
:entropy_mask => '/etc/entropy/packages/package.mask',
:entropy_unmask => '/etc/entropy/packages/package.unmask',
:entropy_splitdebug => '/etc/entropy/packages/package.splitdebug',
:entropy_splitdebug_mask => '/etc/entropy/packages/package.splitdebug.mask',
}
types.each do |type_name, _type|
types.each do |type_name, type|
describe Puppet::Type.type(type_name).provider(:parsed) do
let(:default_target) { described_class.default_target }
before(:each) do
before do
described_class.stubs(:filetype).returns(Puppet::Util::FileType::FileTypeRam)
described_class.stubs(:filetype=)
@default_target = described_class.default_target
end
describe "should have a default target of #{default_targets[type_name]}" do
@@ -34,7 +33,7 @@ types.each do |type_name, _type|
end
describe 'when parsing' do
it 'parses out the name' do
it 'should parse out the name' do
line = 'app-admin/foobar ## Puppet Name: foobar'
expect(described_class.parse_line(line)[:name]).to eq('foobar')
end
@@ -43,11 +42,11 @@ types.each do |type_name, _type|
line = 'app-admin/foobar ## Puppet Name: foobar'
parsed = described_class.parse_line(line)
it 'parses out the package name' do
it 'should parse out the package name' do
expect(parsed[:package]).to eq('app-admin/foobar')
end
it 'has all other parameters undefined' do
it 'should have all other parameters undefined' do
[:operator, :version, :slot, :use, :tag, :repo].each do |param|
expect(parsed[param]).to be_nil
end
@@ -58,15 +57,15 @@ types.each do |type_name, _type|
line = 'app-admin/foobar-1.2.3_alpha1-r1 ## Puppet Name: foobar'
parsed = described_class.parse_line(line)
it 'parses out the package name' do
it 'should parse out the package name' do
expect(parsed[:package]).to eq('app-admin/foobar')
end
it 'parses out the version' do
it 'should parse out the version' do
expect(parsed[:version]).to eq('1.2.3_alpha1-r1')
end
it 'has all other parameters undefined' do
it 'should have all other parameters undefined' do
[:operator, :slot, :use, :tag, :repo].each do |param|
expect(parsed[param]).to be_nil
end
@@ -77,19 +76,19 @@ types.each do |type_name, _type|
line = '>=app-admin/foobar-1.2.3_alpha1-r1 ## Puppet Name: foobar'
parsed = described_class.parse_line(line)
it 'parses out the package name' do
it 'should parse out the package name' do
expect(parsed[:package]).to eq('app-admin/foobar')
end
it 'parses out the version' do
it 'should parse out the version' do
expect(parsed[:version]).to eq('1.2.3_alpha1-r1')
end
it 'parses out the operator' do
it 'should parse out the operator' do
expect(parsed[:operator]).to eq('>=')
end
it 'has all other parameters undefined' do
it 'should have all other parameters undefined' do
[:slot, :use, :tag, :repo].each do |param|
expect(parsed[param]).to be_nil
end
@@ -100,15 +99,15 @@ types.each do |type_name, _type|
line = 'app-admin/foobar:1.1 ## Puppet Name: foobar'
parsed = described_class.parse_line(line)
it 'parses out the package name' do
it 'should parse out the package name' do
expect(parsed[:package]).to eq('app-admin/foobar')
end
it 'parses out the slot' do
it 'should parse out the slot' do
expect(parsed[:slot]).to eq('1.1')
end
it 'has all other parameters undefined' do
it 'should have all other parameters undefined' do
[:operator, :version, :use, :tag, :repo].each do |param|
expect(parsed[param]).to be_nil
end
@@ -119,15 +118,15 @@ types.each do |type_name, _type|
line = 'app-admin/foobar[-foo,bar] ## Puppet Name: foobar'
parsed = described_class.parse_line(line)
it 'parses out the package name' do
it 'should parse out the package name' do
expect(parsed[:package]).to eq('app-admin/foobar')
end
it 'parses out the use' do
it 'should parse out the use' do
expect(parsed[:use]).to eq('-foo,bar')
end
it 'has all other parameters undefined' do
it 'should have all other parameters undefined' do
[:operator, :version, :slot, :tag, :repo].each do |param|
expect(parsed[param]).to be_nil
end
@@ -138,15 +137,15 @@ types.each do |type_name, _type|
line = 'app-admin/foobar#server ## Puppet Name: foobar'
parsed = described_class.parse_line(line)
it 'parses out the package name' do
it 'should parse out the package name' do
expect(parsed[:package]).to eq('app-admin/foobar')
end
it 'parses out the tag' do
it 'should parse out the tag' do
expect(parsed[:tag]).to eq('server')
end
it 'has all other parameters undefined' do
it 'should have all other parameters undefined' do
[:operator, :version, :slot, :use, :repo].each do |param|
expect(parsed[param]).to be_nil
end
@@ -157,15 +156,15 @@ types.each do |type_name, _type|
line = 'app-admin/foobar::community ## Puppet Name: foobar'
parsed = described_class.parse_line(line)
it 'parses out the package name' do
it 'should parse out the package name' do
expect(parsed[:package]).to eq('app-admin/foobar')
end
it 'parses out the repo' do
it 'should parse out the repo' do
expect(parsed[:repo]).to eq('community')
end
it 'has all other parameters undefined' do
it 'should have all other parameters undefined' do
[:operator, :version, :slot, :use, :tag].each do |param|
expect(parsed[param]).to be_nil
end
@@ -177,130 +176,128 @@ types.each do |type_name, _type|
parsed = described_class.parse_line(line)
expected = {
name: 'foobar',
operator: '>=',
package: 'app-admin/foobar',
version: '1.2.3a_alpha1-r1',
slot: '1',
use: '-foo',
tag: 'server',
repo: 'community',
:name => 'foobar',
:operator => '>=',
:package => 'app-admin/foobar',
:version => '1.2.3a_alpha1-r1',
:slot => '1',
:use => '-foo',
:tag => 'server',
:repo => 'community',
}
it 'parses out all parameters' do
it 'should parse out all parameters' do
expected.each do |param, value|
expect(parsed[param]).to eq(value)
end
end
end
end
describe 'when flushing' do
let(:ramfile) do
Puppet::Util::FileType::FileTypeRam.new(:default_target)
end
before :each do
@ramfile = Puppet::Util::FileType::FileTypeRam.new(@default_target)
File.stubs(:exist?).with(default_targets[type_name]).returns(true)
described_class.stubs(:target_object).returns(:ramfile)
described_class.any_instance.stubs(:target_object).returns(@ramfile)
end
after :each do
described_class.clear
end
it 'outputs a single package entry' do
it 'should output a single package entry' do
resource = {
record_type: :parsed,
name: 'test',
package: 'app-admin/foobar',
:record_type => :parsed,
:name => 'test',
:package => 'app-admin/foobar',
}
expect(described_class.to_line(resource)).to eq 'app-admin/foobar ## Puppet Name: test'
expect(described_class.to_line(resource)).to eq ('app-admin/foobar ## Puppet Name: test')
end
it 'outputs a versioned package entry' do
it 'should output a versioned package entry' do
resource = {
record_type: :parsed,
name: 'test',
package: 'app-admin/foobar',
version: '1.2.3',
:record_type => :parsed,
:name => 'test',
:package => 'app-admin/foobar',
:version => '1.2.3',
}
expect(described_class.to_line(resource)).to eq 'app-admin/foobar-1.2.3 ## Puppet Name: test'
expect(described_class.to_line(resource)).to eq ('app-admin/foobar-1.2.3 ## Puppet Name: test')
end
it 'outputs a ranged versioned package entry' do
it 'should output a ranged versioned package entry' do
resource = {
record_type: :parsed,
name: 'test',
package: 'app-admin/foobar',
version: '1.2.3',
operator: '>=',
:record_type => :parsed,
:name => 'test',
:package => 'app-admin/foobar',
:version => '1.2.3',
:operator => '>=',
}
expect(described_class.to_line(resource)).to eq '>=app-admin/foobar-1.2.3 ## Puppet Name: test'
expect(described_class.to_line(resource)).to eq ('>=app-admin/foobar-1.2.3 ## Puppet Name: test')
end
it 'outputs a use-restricted package entry' do
it 'should output a use-restricted package entry' do
resource = {
record_type: :parsed,
name: 'test',
package: 'app-admin/foobar',
use: '-foo,bar',
:record_type => :parsed,
:name => 'test',
:package => 'app-admin/foobar',
:use => '-foo,bar',
}
expect(described_class.to_line(resource)).to eq 'app-admin/foobar[-foo,bar] ## Puppet Name: test'
expect(described_class.to_line(resource)).to eq ('app-admin/foobar[-foo,bar] ## Puppet Name: test')
end
it 'outputs a slotted package entry' do
it 'should output a slotted package entry' do
resource = {
record_type: :parsed,
name: 'test',
package: 'app-admin/foobar',
slot: '1.1',
:record_type => :parsed,
:name => 'test',
:package => 'app-admin/foobar',
:slot => '1.1',
}
expect(described_class.to_line(resource)).to eq 'app-admin/foobar:1.1 ## Puppet Name: test'
expect(described_class.to_line(resource)).to eq ('app-admin/foobar:1.1 ## Puppet Name: test')
end
it 'outputs a tagged package entry' do
it 'should output a tagged package entry' do
resource = {
record_type: :parsed,
name: 'test',
package: 'app-admin/foobar',
tag: 'server',
:record_type => :parsed,
:name => 'test',
:package => 'app-admin/foobar',
:tag => 'server',
}
expect(described_class.to_line(resource)).to eq 'app-admin/foobar#server ## Puppet Name: test'
expect(described_class.to_line(resource)).to eq ('app-admin/foobar#server ## Puppet Name: test')
end
it 'outputs a repo-specific package entry' do
it 'should output a repo-specific package entry' do
resource = {
record_type: :parsed,
name: 'test',
package: 'app-admin/foobar',
repo: 'community',
:record_type => :parsed,
:name => 'test',
:package => 'app-admin/foobar',
:repo => 'community',
}
expect(described_class.to_line(resource)).to eq 'app-admin/foobar::community ## Puppet Name: test'
expect(described_class.to_line(resource)).to eq ('app-admin/foobar::community ## Puppet Name: test')
end
it 'outputs a whole-repo entry' do
it 'should output a whole-repo entry' do
resource = {
record_type: :parsed,
name: 'test',
repo: 'community',
:record_type => :parsed,
:name => 'test',
:repo => 'community',
}
expect(described_class.to_line(resource)).to eq '::community ## Puppet Name: test'
expect(described_class.to_line(resource)).to eq ('::community ## Puppet Name: test')
end
it 'outputs all fields for a package entry' do
it 'should output all fields for a package entry' do
resource = {
record_type: :parsed,
name: 'test',
package: 'app-admin/foobar',
operator: '>=',
version: '1.2.3',
slot: '1.1',
use: '-foo,bar',
tag: 'server',
repo: 'community',
:record_type => :parsed,
:name => 'test',
:package => 'app-admin/foobar',
:operator => '>=',
:version => '1.2.3',
:slot => '1.1',
:use => '-foo,bar',
:tag => 'server',
:repo => 'community',
}
expect(described_class.to_line(resource)).to eq '>=app-admin/foobar-1.2.3:1.1[-foo,bar]#server::community ## Puppet Name: test'
expect(described_class.to_line(resource)).to eq ('>=app-admin/foobar-1.2.3:1.1[-foo,bar]#server::community ## Puppet Name: test')
end
end
end

View File

@@ -1,17 +1,15 @@
require 'spec_helper'
describe Puppet::Type.type(:enman_repo) do
before(:each) do
provider = stub 'provider'
provider.stubs(:name).returns(:enman)
described_class.stubs(:defaultprovider).returns(provider)
before do
@provider = stub 'provider'
@provider.stubs(:name).returns(:enman)
described_class.stubs(:defaultprovider).returns(@provider)
end
it 'is an instance of Puppet::Type::Enman_repo' do
expect(described_class.new(name: 'test')).to be_an_instance_of Puppet::Type::Enman_repo
it "should be an instance of Puppet::Type::Enman_repo" do
expect(described_class.new(:name => "test")).to be_an_instance_of Puppet::Type::Enman_repo
end
describe 'when validating attributes' do
describe "when validating attributes" do
params = [:name]
params.each do |param|
@@ -21,7 +19,7 @@ describe Puppet::Type.type(:enman_repo) do
end
end
it 'has name as the namevar' do
it "should have name as the namevar" do
expect(described_class.key_attributes).to eq [:name]
end
end

View File

@@ -1,19 +1,17 @@
require 'spec_helper'
describe Puppet::Type.type(:entropy_keywords) do
before(:each) do
provider = stub 'provider'
provider.stubs(:name).returns(:parsed)
provider.stubs(:ancestors).returns([Puppet::Provider::ParsedFile])
provider.stubs(:default_target).returns('defaulttarget')
described_class.stubs(:defaultprovider).returns(provider)
before do
@provider = stub 'provider'
@provider.stubs(:name).returns(:parsed)
@provider.stubs(:ancestors).returns([Puppet::Provider::ParsedFile])
@provider.stubs(:default_target).returns("defaulttarget")
described_class.stubs(:defaultprovider).returns(@provider)
end
it 'is an instance of Puppet::Type::Entropy_keywords' do
expect(described_class.new(name: 'test', package: 'app-admin/dummy')).to be_an_instance_of Puppet::Type::Entropy_keywords
it "should be an instance of Puppet::Type::Entropy_keywords" do
expect(described_class.new(:name => "test", :package => "app-admin/dummy")).to be_an_instance_of Puppet::Type::Entropy_keywords
end
describe 'when validating attributes' do
describe "when validating attributes" do
params = [:name]
properties = [:package, :operator, :version, :repo, :target]
@@ -28,36 +26,37 @@ describe Puppet::Type.type(:entropy_keywords) do
expect(described_class.attrtype(property)).to eq :property
end
end
end
it 'has name as the namevar' do
it "should have name as the namevar" do
expect(described_class.key_attributes).to eq [:name]
end
describe 'when validating the target property' do
it "defaults to the provider's default target" do
expect(described_class.new(name: 'test', package: 'app-admin/dummy').should(:target)).to eq 'defaulttarget'
describe "when validating the target property" do
it "should default to the provider's default target" do
expect(described_class.new(:name => "test", :package => "app-admin/dummy").should(:target)).to eq "defaulttarget"
end
end
describe 'when validating required properties' do
it 'raises an error when a version is passed with no package' do
describe "when validating required properties" do
it "should raise an error when a version is passed with no package" do
expect {
described_class.new(name: 'test', repo: 'test', version: '1.2.3')
}.to raise_error(Puppet::Error, %r{Package is required})
described_class.new(:name => "test", :repo => "test", :version => "1.2.3")
}.to raise_error(Puppet::Error, /Package is required/)
end
it 'raises an error when an operator is passed with no version' do
it "should raise an error when an operator is passed with no version" do
expect {
described_class.new(name: 'test', package: 'app-admin/dummy', operator: '<=')
}.to raise_error(Puppet::Error, %r{Version is required})
described_class.new(:name => "test", :package => "app-admin/dummy", :operator => "<=")
}.to raise_error(Puppet::Error, /Version is required/)
end
end
describe 'when the catalog includes a matching package' do
it 'has an autobefore relationship' do
resource = described_class.new(name: 'test', package: 'app-admin/dummy')
package = Puppet::Type.type(:package).new(title: 'app-admin/dummy')
describe "when the catalog includes a matching package" do
it "should have an autobefore relationship" do
resource = described_class.new(:name => "test", :package => "app-admin/dummy")
package = Puppet::Type.type(:package).new(:title => 'app-admin/dummy')
catalog = Puppet::Resource::Catalog.new
catalog.add_resource package

View File

@@ -1,17 +1,15 @@
require 'spec_helper'
describe Puppet::Type.type(:entropy_repo) do
before(:each) do
provider = stub 'provider'
provider.stubs(:name).returns(:file)
described_class.stubs(:defaultprovider).returns(provider)
before do
@provider = stub 'provider'
@provider.stubs(:name).returns(:file)
described_class.stubs(:defaultprovider).returns(@provider)
end
it 'is an instance of Puppet::Type::Entropy_repo' do
expect(described_class.new(name: 'test')).to be_an_instance_of Puppet::Type::Entropy_repo
it "should be an instance of Puppet::Type::Entropy_repo" do
expect(described_class.new(:name => "test")).to be_an_instance_of Puppet::Type::Entropy_repo
end
describe 'when validating attributes' do
describe "when validating attributes" do
params = [:name]
properties = [:repo_type, :enabled]
@@ -28,7 +26,7 @@ describe Puppet::Type.type(:entropy_repo) do
end
end
it 'has name as the namevar' do
it "should have name as the namevar" do
expect(described_class.key_attributes).to eq [:name]
end
end

View File

@@ -5,27 +5,27 @@ require 'puppet/type/entropy_splitdebug'
require 'puppet/type/entropy_splitdebug_mask'
types = {
entropy_mask: Puppet::Type::Entropy_mask,
entropy_unmask: Puppet::Type::Entropy_unmask,
entropy_splitdebug: Puppet::Type::Entropy_splitdebug,
entropy_splitdebug_mask: Puppet::Type::Entropy_splitdebug_mask,
:entropy_mask => Puppet::Type::Entropy_mask,
:entropy_unmask => Puppet::Type::Entropy_unmask,
:entropy_splitdebug => Puppet::Type::Entropy_splitdebug,
:entropy_splitdebug_mask => Puppet::Type::Entropy_splitdebug_mask,
}
types.each do |type_name, type|
describe Puppet::Type.type(type_name) do
before(:each) do
provider = stub 'provider'
provider.stubs(:name).returns(:parsed)
provider.stubs(:ancestors).returns([Puppet::Provider::ParsedFile])
provider.stubs(:default_target).returns('defaulttarget')
described_class.stubs(:defaultprovider).returns(provider)
before do
@provider = stub 'provider'
@provider.stubs(:name).returns(:parsed)
@provider.stubs(:ancestors).returns([Puppet::Provider::ParsedFile])
@provider.stubs(:default_target).returns("defaulttarget")
described_class.stubs(:defaultprovider).returns(@provider)
end
it "should be an instance of #{type.class.name}" do
expect(described_class.new(name: 'test', package: 'app-admin/dummy')).to be_an_instance_of type
expect(described_class.new(:name => "test", :package => "app-admin/dummy")).to be_an_instance_of type
end
describe 'when validating attributes' do
describe "when validating attributes" do
params = [:name]
properties = [:package, :operator, :version, :slot, :use, :tag, :repo, :target]
@@ -40,31 +40,32 @@ types.each do |type_name, type|
expect(described_class.attrtype(property)).to eq :property
end
end
end
it 'has name as the namevar' do
it "should have name as the namevar" do
expect(described_class.key_attributes).to eq [:name]
end
describe 'when validating the target property' do
it "defaults to the provider's default target" do
expect(described_class.new(name: 'test', package: 'app-admin/dummy').should(:target)).to eq 'defaulttarget'
describe "when validating the target property" do
it "should default to the provider's default target" do
expect(described_class.new(:name => "test", :package => "app-admin/dummy").should(:target)).to eq "defaulttarget"
end
end
describe 'when validating required properties' do
describe "when validating required properties" do
packages = [
'virtual/package',
'package',
'package-with-dash',
'package_with_underscores',
'category-123/package2',
'category.with.dots/package',
'category.with.dots/package'
]
packages.each do |package|
it "should accept valid package name #{package}" do
expect {
described_class.new(name: 'test', package: package)
described_class.new(:name => 'test', :package => package)
}.not_to raise_error
end
end
@@ -78,28 +79,28 @@ types.each do |type_name, type|
packages.each do |package|
it "should reject invalid package name #{package}" do
expect {
described_class.new(name: 'test', package: package)
described_class.new(:name => 'test', :package => package)
}.to raise_error(Puppet::Error)
end
end
it 'raises an error when a version is passed with no package' do
it "should raise an error when a version is passed with no package" do
expect {
described_class.new(name: 'test', repo: 'test', version: '1.2.3')
}.to raise_error(Puppet::Error, %r{Package is required})
described_class.new(:name => "test", :repo => "test", :version => "1.2.3")
}.to raise_error(Puppet::Error, /Package is required/)
end
it 'raises an error when an operator is passed with no version' do
it "should raise an error when an operator is passed with no version" do
expect {
described_class.new(name: 'test', package: 'app-admin/dummy', operator: '<=')
}.to raise_error(Puppet::Error, %r{Version is required})
described_class.new(:name => "test", :package => "app-admin/dummy", :operator => "<=")
}.to raise_error(Puppet::Error, /Version is required/)
end
end
describe 'when the catalog includes a matching package' do
it 'has an autobefore relationship' do
resource = described_class.new(name: 'test', package: 'app-admin/dummy')
package = Puppet::Type.type(:package).new(title: 'app-admin/dummy')
describe "when the catalog includes a matching package" do
it "should have an autobefore relationship" do
resource = described_class.new(:name => "test", :package => "app-admin/dummy")
package = Puppet::Type.type(:package).new(:title => 'app-admin/dummy')
catalog = Puppet::Resource::Catalog.new
catalog.add_resource package

View File

@@ -1,7 +0,0 @@
{
"puppet_task_version": 1,
"supports_noop": false,
"description": "Run `equo cleanup` on target nodes to free up disk space used by downloaded packages",
"parameters": {
}
}

View File

@@ -1,3 +0,0 @@
#!/bin/sh
/usr/bin/equo cleanup

View File

@@ -1,11 +0,0 @@
{
"puppet_task_version": 1,
"supports_noop": false,
"description": "Run `equo update` on target nodes to refresh repository definitions",
"parameters": {
"repo": {
"description": "Restrict update to only this named repository",
"type": "Optional[Pattern[/^[a-zA-Z0-9._-]+$/]]"
}
}
}

View File

@@ -1,7 +0,0 @@
#!/bin/sh
if [ ! -z "${PT_repo}" ]; then
/usr/bin/equo update "${PT_repo}"
else
/usr/bin/equo update
fi

1
vendor/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
bundle