octocatalog-diff 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.version +1 -0
- data/LICENSE +20 -0
- data/README.md +82 -0
- data/bin/octocatalog-diff +75 -0
- data/doc/advanced-bootstrap.md +33 -0
- data/doc/advanced-cache-dir.md +24 -0
- data/doc/advanced-catalog-only.md +37 -0
- data/doc/advanced-ci.md +13 -0
- data/doc/advanced-dynamic-ignores.md +123 -0
- data/doc/advanced-future-parser.md +11 -0
- data/doc/advanced-ignores.md +224 -0
- data/doc/advanced-output-formats.md +96 -0
- data/doc/advanced-output-hacks.md +45 -0
- data/doc/advanced-override-facts.md +67 -0
- data/doc/advanced-pe-enc.md +52 -0
- data/doc/advanced-puppet-master.md +50 -0
- data/doc/advanced-puppet-versions.md +9 -0
- data/doc/advanced-storeconfigs.md +72 -0
- data/doc/advanced-using-without-git.md +15 -0
- data/doc/advanced.md +43 -0
- data/doc/basic.md +70 -0
- data/doc/configuration-enc.md +69 -0
- data/doc/configuration-hiera.md +103 -0
- data/doc/configuration-puppetdb.md +49 -0
- data/doc/configuration.md +51 -0
- data/doc/dev/README.md +1 -0
- data/doc/dev/coverage.md +34 -0
- data/doc/dev/how-to-add-options.md +83 -0
- data/doc/dev/integration-tests.md +63 -0
- data/doc/dev/releasing.md +19 -0
- data/doc/installation.md +49 -0
- data/doc/limitations.md +34 -0
- data/doc/optionsref.md +947 -0
- data/doc/requirements.md +16 -0
- data/doc/roadmap.md +26 -0
- data/doc/similar.md +17 -0
- data/doc/troubleshooting.md +54 -0
- data/lib/octocatalog-diff.rb +12 -0
- data/lib/octocatalog-diff/bootstrap.rb +53 -0
- data/lib/octocatalog-diff/catalog-diff/cli.rb +205 -0
- data/lib/octocatalog-diff/catalog-diff/cli/catalogs.rb +240 -0
- data/lib/octocatalog-diff/catalog-diff/cli/diffs.rb +145 -0
- data/lib/octocatalog-diff/catalog-diff/cli/helpers/fact_override.rb +99 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options.rb +173 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/basedir.rb +14 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/bootstrap_environment.rb +18 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/bootstrap_script.rb +14 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/bootstrap_then_exit.rb +12 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/bootstrapped_dirs.rb +18 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/cached_master_dir.rb +21 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/catalog_only.rb +14 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/color.rb +13 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/compare_file_text.rb +15 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/debug.rb +12 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/display_datatype_changes.rb +16 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/display_detail_add.rb +12 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/display_source_file_line.rb +12 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/enc.rb +31 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/existing_catalogs.rb +25 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/fact_file.rb +23 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/fact_override.rb +19 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/facts_terminus.rb +16 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/from_puppetdb.rb +13 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/header.rb +24 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/hiera_config.rb +18 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/hiera_path_strip.rb +12 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/hostname.rb +13 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/ignore.rb +24 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/ignore_attr.rb +16 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/ignore_tags.rb +23 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/include_tags.rb +12 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/master_cache_branch.rb +12 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/output_file.rb +15 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/output_format.rb +15 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/parallel.rb +12 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/parser.rb +48 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/pass_env_vars.rb +19 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_ssl_ca.rb +15 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_ssl_client_cert.rb +14 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_ssl_client_key.rb +14 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_token.rb +15 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_token_file.rb +17 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_url.rb +19 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/puppet_binary.rb +16 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/puppet_master.rb +16 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/puppet_master_api_version.rb +20 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/puppet_master_ssl_ca.rb +19 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/puppet_master_ssl_client_cert.rb +19 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/puppet_master_ssl_client_key.rb +19 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_ssl_ca.rb +15 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_ssl_client_cert.rb +14 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_ssl_client_key.rb +14 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_ssl_client_password.rb +14 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_ssl_client_password_file.rb +13 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_url.rb +18 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/quiet.rb +12 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/retry_failed_catalog.rb +13 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/safe_to_delete_cached_master_dir.rb +15 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/storeconfigs.rb +12 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/suppress_absent_file_details.rb +14 -0
- data/lib/octocatalog-diff/catalog-diff/cli/options/to_from_branch.rb +16 -0
- data/lib/octocatalog-diff/catalog-diff/cli/printer.rb +52 -0
- data/lib/octocatalog-diff/catalog-diff/differ.rb +615 -0
- data/lib/octocatalog-diff/catalog-diff/display.rb +125 -0
- data/lib/octocatalog-diff/catalog-diff/display/json.rb +25 -0
- data/lib/octocatalog-diff/catalog-diff/display/text.rb +452 -0
- data/lib/octocatalog-diff/catalog-util/bootstrap.rb +145 -0
- data/lib/octocatalog-diff/catalog-util/builddir.rb +289 -0
- data/lib/octocatalog-diff/catalog-util/cached_master_directory.rb +169 -0
- data/lib/octocatalog-diff/catalog-util/command.rb +96 -0
- data/lib/octocatalog-diff/catalog-util/enc.rb +77 -0
- data/lib/octocatalog-diff/catalog-util/enc/noop.rb +22 -0
- data/lib/octocatalog-diff/catalog-util/enc/pe.rb +99 -0
- data/lib/octocatalog-diff/catalog-util/enc/pe/v1.rb +61 -0
- data/lib/octocatalog-diff/catalog-util/enc/script.rb +88 -0
- data/lib/octocatalog-diff/catalog-util/facts.rb +89 -0
- data/lib/octocatalog-diff/catalog-util/fileresources.rb +83 -0
- data/lib/octocatalog-diff/catalog-util/git.rb +65 -0
- data/lib/octocatalog-diff/catalog.rb +209 -0
- data/lib/octocatalog-diff/catalog/computed.rb +205 -0
- data/lib/octocatalog-diff/catalog/json.rb +30 -0
- data/lib/octocatalog-diff/catalog/noop.rb +19 -0
- data/lib/octocatalog-diff/catalog/puppetdb.rb +82 -0
- data/lib/octocatalog-diff/catalog/puppetmaster.rb +121 -0
- data/lib/octocatalog-diff/external/pson/LICENSE +17 -0
- data/lib/octocatalog-diff/external/pson/README.md +20 -0
- data/lib/octocatalog-diff/external/pson/common.rb +370 -0
- data/lib/octocatalog-diff/external/pson/pure.rb +15 -0
- data/lib/octocatalog-diff/external/pson/pure/generator.rb +395 -0
- data/lib/octocatalog-diff/external/pson/pure/parser.rb +307 -0
- data/lib/octocatalog-diff/external/pson/version.rb +8 -0
- data/lib/octocatalog-diff/facts.rb +125 -0
- data/lib/octocatalog-diff/facts/json.rb +20 -0
- data/lib/octocatalog-diff/facts/puppetdb.rb +59 -0
- data/lib/octocatalog-diff/facts/yaml.rb +29 -0
- data/lib/octocatalog-diff/puppetdb.rb +163 -0
- data/lib/octocatalog-diff/util/colored.rb +20 -0
- data/lib/octocatalog-diff/util/httparty.rb +158 -0
- data/lib/octocatalog-diff/util/parallel.rb +170 -0
- data/lib/octocatalog-diff/util/puppetversion.rb +24 -0
- data/lib/octocatalog-diff/version.rb +7 -0
- metadata +386 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Helper to use the 'parallel' gem to perform tasks
|
|
2
|
+
|
|
3
|
+
require 'parallel'
|
|
4
|
+
require 'stringio'
|
|
5
|
+
|
|
6
|
+
module OctocatalogDiff
|
|
7
|
+
module Util
|
|
8
|
+
# This is a utility class to execute tasks in parallel, using the 'parallel' gem.
|
|
9
|
+
# If parallel processing has been disabled, this instead executes the tasks serially,
|
|
10
|
+
# but provides the same API as the parallel tasks.
|
|
11
|
+
class Parallel
|
|
12
|
+
# This class represents a parallel task. It requires a method reference, which will be executed with
|
|
13
|
+
# any supplied arguments. It can optionally take a text description and a validator function.
|
|
14
|
+
class Task
|
|
15
|
+
attr_reader :description
|
|
16
|
+
attr_accessor :args
|
|
17
|
+
|
|
18
|
+
def initialize(opts = {})
|
|
19
|
+
@method = opts.fetch(:method)
|
|
20
|
+
@args = opts.fetch(:args, {})
|
|
21
|
+
@description = opts[:description] || @method.name
|
|
22
|
+
@validator = opts[:validator]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def execute(logger = Logger.new(StringIO.new))
|
|
26
|
+
@method.call(@args, logger)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def validate(result, logger = Logger.new(StringIO.new))
|
|
30
|
+
return true if @validator.nil?
|
|
31
|
+
@validator.call(result, logger)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# This class represents the result from a parallel task. The status is set to true (success), false (error),
|
|
36
|
+
# or nil (task was killed before it could complete). The exception (for failure) and output object (for success)
|
|
37
|
+
# are readable attributes. The validity of the results, determined by executing the 'validate' method of the Task,
|
|
38
|
+
# is available to be set and fetched.
|
|
39
|
+
class Result
|
|
40
|
+
attr_reader :output, :args
|
|
41
|
+
attr_accessor :status, :exception
|
|
42
|
+
|
|
43
|
+
def initialize(opts = {})
|
|
44
|
+
@status = opts[:status]
|
|
45
|
+
@exception = opts[:exception]
|
|
46
|
+
@output = opts[:output]
|
|
47
|
+
@args = opts.fetch(:args, {})
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Entry point for parallel processing. By default this will perform parallel processing,
|
|
52
|
+
# but it will also accept an option to do serial processing instead.
|
|
53
|
+
# @param task_array [Array<Parallel::Task>] Tasks to run
|
|
54
|
+
# @param logger [Logger] Optional logger object
|
|
55
|
+
# @param parallelized [Boolean] True for parallel processing, false for serial processing
|
|
56
|
+
# @return [Array<Parallel::Result>] Parallel results (same order as tasks)
|
|
57
|
+
def self.run_tasks(task_array, logger = nil, parallelized = true)
|
|
58
|
+
# Create a throwaway logger object if one is not given
|
|
59
|
+
logger ||= Logger.new(StringIO.new)
|
|
60
|
+
|
|
61
|
+
# Validate input - we need an array. If the array is empty then return an empty array right away.
|
|
62
|
+
raise ArgumentError, "run_tasks() argument must be array, not #{task_array.class}" unless task_array.is_a?(Array)
|
|
63
|
+
return [] if task_array.empty?
|
|
64
|
+
|
|
65
|
+
# Make sure each element in the array is a OctocatalogDiff::Util::Parallel::Task
|
|
66
|
+
task_array.each do |x|
|
|
67
|
+
next if x.is_a?(OctocatalogDiff::Util::Parallel::Task)
|
|
68
|
+
raise ArgumentError, "Element #{x.inspect} must be a OctocatalogDiff::Util::Parallel::Task, not a #{x.class}"
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Actually do the processing - choose here between parallel and serial
|
|
72
|
+
parallelized ? run_tasks_parallel(task_array, logger) : run_tasks_serial(task_array, logger)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Use the parallel gem to run each task in the task array. Under the hood this is forking a process for
|
|
76
|
+
# each task, and serializing/deserializing the arguments and the outputs.
|
|
77
|
+
# @param task_array [Array<OctocatalogDiff::Util::Parallel::Task>] Tasks to perform
|
|
78
|
+
# @param logger [Logger] Logger
|
|
79
|
+
# @return [Array<OctocatalogDiff::Util::Parallel::Result>] Parallel task results
|
|
80
|
+
def self.run_tasks_parallel(task_array, logger)
|
|
81
|
+
# Create an empty array of results. The status is nil and the exception is pre-populated. If the code
|
|
82
|
+
# runs successfully and doesn't get killed, all of these default values will be overwritten. If the code
|
|
83
|
+
# gets killed before the task finishes, this exception will remain.
|
|
84
|
+
result = task_array.map do |x|
|
|
85
|
+
Result.new(exception: ::Parallel::Kill.new('Killed'), args: x.args)
|
|
86
|
+
end
|
|
87
|
+
logger.debug "Initialized parallel task result array: size=#{result.size}"
|
|
88
|
+
|
|
89
|
+
# Do parallel processing
|
|
90
|
+
::Parallel.each(task_array,
|
|
91
|
+
finish: lambda do |item, i, parallel_result|
|
|
92
|
+
# Set the result array element to the result
|
|
93
|
+
result[i] = parallel_result
|
|
94
|
+
|
|
95
|
+
# Kill all other parallel tasks if this task failed by throwing an exception
|
|
96
|
+
raise ::Parallel::Kill unless parallel_result.exception.nil?
|
|
97
|
+
|
|
98
|
+
# Run the validator to determine if the result is in fact valid. The validator
|
|
99
|
+
# returns true or false. If true, set the 'valid' attribute in the result. If
|
|
100
|
+
# false, kill all other parallel tasks.
|
|
101
|
+
if item.validate(parallel_result.output, logger)
|
|
102
|
+
logger.debug("Success #{item.description}")
|
|
103
|
+
else
|
|
104
|
+
logger.warn("Failed #{item.description}")
|
|
105
|
+
result[i].status = false
|
|
106
|
+
raise ::Parallel::Kill
|
|
107
|
+
end
|
|
108
|
+
end) do |ele|
|
|
109
|
+
# simplecov does not detect that this code runs because it's forked, but this is
|
|
110
|
+
# tested extensively in the parallel_spec.rb spec file.
|
|
111
|
+
# :nocov:
|
|
112
|
+
begin
|
|
113
|
+
logger.debug("Begin #{ele.description}")
|
|
114
|
+
output = ele.execute(logger)
|
|
115
|
+
logger.debug("Success #{ele.description}")
|
|
116
|
+
Result.new(output: output, status: true, args: ele.args)
|
|
117
|
+
rescue => exc
|
|
118
|
+
logger.debug("Failed #{ele.description}: #{exc.class} #{exc.message}")
|
|
119
|
+
Result.new(exception: exc, status: false, args: ele.args)
|
|
120
|
+
end
|
|
121
|
+
# :nocov:
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# Return result
|
|
125
|
+
result
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Perform the tasks in serial.
|
|
129
|
+
# @param task_array [Array<OctocatalogDiff::Util::Parallel::Task>] Tasks to perform
|
|
130
|
+
# @param logger [Logger] Logger
|
|
131
|
+
# @return [Array<OctocatalogDiff::Util::Parallel::Result>] Parallel task results
|
|
132
|
+
def self.run_tasks_serial(task_array, logger)
|
|
133
|
+
# Create an empty array of results. The status is nil and the exception is pre-populated. If the code
|
|
134
|
+
# runs successfully, all of these default values will be overwritten. If a predecessor task fails, all
|
|
135
|
+
# later task will have the defined exception.
|
|
136
|
+
result = task_array.map do |x|
|
|
137
|
+
Result.new(exception: ::RuntimeError.new('Cancellation - A prior task failed'), args: x.args)
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# Perform the tasks 1 by 1 - each successful task will replace an element in the 'result' array,
|
|
141
|
+
# whereas a failed task will replace the current element with an exception, and all later tasks
|
|
142
|
+
# will not be replaced (thereby being populated with the cancellation error).
|
|
143
|
+
task_counter = 0
|
|
144
|
+
task_array.each do |ele|
|
|
145
|
+
begin
|
|
146
|
+
logger.debug("Begin #{ele.description}")
|
|
147
|
+
output = ele.execute(logger)
|
|
148
|
+
result[task_counter] = Result.new(output: output, status: true, args: ele.args)
|
|
149
|
+
rescue => exc
|
|
150
|
+
logger.debug("Failed #{ele.description}: #{exc.class} #{exc.message}")
|
|
151
|
+
result[task_counter] = Result.new(exception: exc, status: false, args: ele.args)
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
if ele.validate(output, logger)
|
|
155
|
+
logger.debug("Success #{ele.description}")
|
|
156
|
+
else
|
|
157
|
+
logger.warn("Failed #{ele.description}")
|
|
158
|
+
result[task_counter].status = false
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
break unless result[task_counter].status
|
|
162
|
+
task_counter += 1
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# Return the result
|
|
166
|
+
result
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Helper to determine the version of Puppet
|
|
2
|
+
|
|
3
|
+
require 'fileutils'
|
|
4
|
+
require 'open3'
|
|
5
|
+
require 'shellwords'
|
|
6
|
+
|
|
7
|
+
module OctocatalogDiff
|
|
8
|
+
module Util
|
|
9
|
+
# This is a utility class to determine the version of Puppet.
|
|
10
|
+
class PuppetVersion
|
|
11
|
+
# Determine the version of Puppet.
|
|
12
|
+
# @param puppet [String] Path to Puppet binary
|
|
13
|
+
# @return [String] Puppet version number
|
|
14
|
+
def self.puppet_version(puppet)
|
|
15
|
+
raise ArgumentError, 'Puppet binary was not supplied' if puppet.nil?
|
|
16
|
+
raise Errno::ENOENT, "Puppet binary #{puppet} doesn't exist" unless File.file?(puppet)
|
|
17
|
+
cmdline = [Shellwords.escape(puppet), '--version'].join(' ')
|
|
18
|
+
output, _code = Open3.capture2e(cmdline)
|
|
19
|
+
return Regexp.last_match(1) if output =~ /^([\d\.]+)\s*$/
|
|
20
|
+
raise "Unable to determine Puppet version: #{output}"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: octocatalog-diff
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.5.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- GitHub, Inc.
|
|
8
|
+
- Kevin Paulisse
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2016-10-20 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: diffy
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
requirements:
|
|
18
|
+
- - ">="
|
|
19
|
+
- !ruby/object:Gem::Version
|
|
20
|
+
version: 3.1.0
|
|
21
|
+
type: :runtime
|
|
22
|
+
prerelease: false
|
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
24
|
+
requirements:
|
|
25
|
+
- - ">="
|
|
26
|
+
- !ruby/object:Gem::Version
|
|
27
|
+
version: 3.1.0
|
|
28
|
+
- !ruby/object:Gem::Dependency
|
|
29
|
+
name: httparty
|
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
|
31
|
+
requirements:
|
|
32
|
+
- - ">="
|
|
33
|
+
- !ruby/object:Gem::Version
|
|
34
|
+
version: 0.11.0
|
|
35
|
+
type: :runtime
|
|
36
|
+
prerelease: false
|
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
38
|
+
requirements:
|
|
39
|
+
- - ">="
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: 0.11.0
|
|
42
|
+
- !ruby/object:Gem::Dependency
|
|
43
|
+
name: hashdiff
|
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
|
45
|
+
requirements:
|
|
46
|
+
- - ">="
|
|
47
|
+
- !ruby/object:Gem::Version
|
|
48
|
+
version: 0.3.0
|
|
49
|
+
type: :runtime
|
|
50
|
+
prerelease: false
|
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
52
|
+
requirements:
|
|
53
|
+
- - ">="
|
|
54
|
+
- !ruby/object:Gem::Version
|
|
55
|
+
version: 0.3.0
|
|
56
|
+
- !ruby/object:Gem::Dependency
|
|
57
|
+
name: parallel
|
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
|
59
|
+
requirements:
|
|
60
|
+
- - ">="
|
|
61
|
+
- !ruby/object:Gem::Version
|
|
62
|
+
version: 1.9.0
|
|
63
|
+
type: :runtime
|
|
64
|
+
prerelease: false
|
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
66
|
+
requirements:
|
|
67
|
+
- - ">="
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: 1.9.0
|
|
70
|
+
- !ruby/object:Gem::Dependency
|
|
71
|
+
name: rugged
|
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
|
73
|
+
requirements:
|
|
74
|
+
- - ">="
|
|
75
|
+
- !ruby/object:Gem::Version
|
|
76
|
+
version: 0.25.0b2
|
|
77
|
+
type: :runtime
|
|
78
|
+
prerelease: false
|
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
80
|
+
requirements:
|
|
81
|
+
- - ">="
|
|
82
|
+
- !ruby/object:Gem::Version
|
|
83
|
+
version: 0.25.0b2
|
|
84
|
+
- !ruby/object:Gem::Dependency
|
|
85
|
+
name: rspec
|
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
|
87
|
+
requirements:
|
|
88
|
+
- - "~>"
|
|
89
|
+
- !ruby/object:Gem::Version
|
|
90
|
+
version: 3.4.0
|
|
91
|
+
type: :development
|
|
92
|
+
prerelease: false
|
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
94
|
+
requirements:
|
|
95
|
+
- - "~>"
|
|
96
|
+
- !ruby/object:Gem::Version
|
|
97
|
+
version: 3.4.0
|
|
98
|
+
- !ruby/object:Gem::Dependency
|
|
99
|
+
name: rake
|
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
|
101
|
+
requirements:
|
|
102
|
+
- - '='
|
|
103
|
+
- !ruby/object:Gem::Version
|
|
104
|
+
version: 11.2.2
|
|
105
|
+
type: :development
|
|
106
|
+
prerelease: false
|
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
108
|
+
requirements:
|
|
109
|
+
- - '='
|
|
110
|
+
- !ruby/object:Gem::Version
|
|
111
|
+
version: 11.2.2
|
|
112
|
+
- !ruby/object:Gem::Dependency
|
|
113
|
+
name: parallel_tests
|
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
|
115
|
+
requirements:
|
|
116
|
+
- - '='
|
|
117
|
+
- !ruby/object:Gem::Version
|
|
118
|
+
version: 2.7.1
|
|
119
|
+
type: :development
|
|
120
|
+
prerelease: false
|
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
122
|
+
requirements:
|
|
123
|
+
- - '='
|
|
124
|
+
- !ruby/object:Gem::Version
|
|
125
|
+
version: 2.7.1
|
|
126
|
+
- !ruby/object:Gem::Dependency
|
|
127
|
+
name: rspec-retry
|
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
|
129
|
+
requirements:
|
|
130
|
+
- - '='
|
|
131
|
+
- !ruby/object:Gem::Version
|
|
132
|
+
version: 0.5.0
|
|
133
|
+
type: :development
|
|
134
|
+
prerelease: false
|
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
136
|
+
requirements:
|
|
137
|
+
- - '='
|
|
138
|
+
- !ruby/object:Gem::Version
|
|
139
|
+
version: 0.5.0
|
|
140
|
+
- !ruby/object:Gem::Dependency
|
|
141
|
+
name: rubocop
|
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
|
143
|
+
requirements:
|
|
144
|
+
- - "~>"
|
|
145
|
+
- !ruby/object:Gem::Version
|
|
146
|
+
version: '0.35'
|
|
147
|
+
type: :development
|
|
148
|
+
prerelease: false
|
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
150
|
+
requirements:
|
|
151
|
+
- - "~>"
|
|
152
|
+
- !ruby/object:Gem::Version
|
|
153
|
+
version: '0.35'
|
|
154
|
+
- !ruby/object:Gem::Dependency
|
|
155
|
+
name: puppetdb-terminus
|
|
156
|
+
requirement: !ruby/object:Gem::Requirement
|
|
157
|
+
requirements:
|
|
158
|
+
- - '='
|
|
159
|
+
- !ruby/object:Gem::Version
|
|
160
|
+
version: 3.2.4
|
|
161
|
+
type: :development
|
|
162
|
+
prerelease: false
|
|
163
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
164
|
+
requirements:
|
|
165
|
+
- - '='
|
|
166
|
+
- !ruby/object:Gem::Version
|
|
167
|
+
version: 3.2.4
|
|
168
|
+
- !ruby/object:Gem::Dependency
|
|
169
|
+
name: simplecov
|
|
170
|
+
requirement: !ruby/object:Gem::Requirement
|
|
171
|
+
requirements:
|
|
172
|
+
- - ">="
|
|
173
|
+
- !ruby/object:Gem::Version
|
|
174
|
+
version: '0'
|
|
175
|
+
type: :development
|
|
176
|
+
prerelease: false
|
|
177
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
178
|
+
requirements:
|
|
179
|
+
- - ">="
|
|
180
|
+
- !ruby/object:Gem::Version
|
|
181
|
+
version: '0'
|
|
182
|
+
- !ruby/object:Gem::Dependency
|
|
183
|
+
name: simplecov-json
|
|
184
|
+
requirement: !ruby/object:Gem::Requirement
|
|
185
|
+
requirements:
|
|
186
|
+
- - ">="
|
|
187
|
+
- !ruby/object:Gem::Version
|
|
188
|
+
version: '0'
|
|
189
|
+
type: :development
|
|
190
|
+
prerelease: false
|
|
191
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
192
|
+
requirements:
|
|
193
|
+
- - ">="
|
|
194
|
+
- !ruby/object:Gem::Version
|
|
195
|
+
version: '0'
|
|
196
|
+
- !ruby/object:Gem::Dependency
|
|
197
|
+
name: puppet
|
|
198
|
+
requirement: !ruby/object:Gem::Requirement
|
|
199
|
+
requirements:
|
|
200
|
+
- - "~>"
|
|
201
|
+
- !ruby/object:Gem::Version
|
|
202
|
+
version: 4.5.3
|
|
203
|
+
type: :development
|
|
204
|
+
prerelease: false
|
|
205
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
206
|
+
requirements:
|
|
207
|
+
- - "~>"
|
|
208
|
+
- !ruby/object:Gem::Version
|
|
209
|
+
version: 4.5.3
|
|
210
|
+
description: |
|
|
211
|
+
Octocatalog-Diff assists with Puppet development and testing by enabling the user to
|
|
212
|
+
compile 2 Puppet catalogs and compare them. It is possible to compare different
|
|
213
|
+
branches, different versions, and different fact values. This is intended to be run
|
|
214
|
+
from a local development environment or in CI.
|
|
215
|
+
email: opensource+octocatalog-diff@github.com
|
|
216
|
+
executables:
|
|
217
|
+
- octocatalog-diff
|
|
218
|
+
extensions: []
|
|
219
|
+
extra_rdoc_files: []
|
|
220
|
+
files:
|
|
221
|
+
- ".version"
|
|
222
|
+
- LICENSE
|
|
223
|
+
- README.md
|
|
224
|
+
- bin/octocatalog-diff
|
|
225
|
+
- doc/advanced-bootstrap.md
|
|
226
|
+
- doc/advanced-cache-dir.md
|
|
227
|
+
- doc/advanced-catalog-only.md
|
|
228
|
+
- doc/advanced-ci.md
|
|
229
|
+
- doc/advanced-dynamic-ignores.md
|
|
230
|
+
- doc/advanced-future-parser.md
|
|
231
|
+
- doc/advanced-ignores.md
|
|
232
|
+
- doc/advanced-output-formats.md
|
|
233
|
+
- doc/advanced-output-hacks.md
|
|
234
|
+
- doc/advanced-override-facts.md
|
|
235
|
+
- doc/advanced-pe-enc.md
|
|
236
|
+
- doc/advanced-puppet-master.md
|
|
237
|
+
- doc/advanced-puppet-versions.md
|
|
238
|
+
- doc/advanced-storeconfigs.md
|
|
239
|
+
- doc/advanced-using-without-git.md
|
|
240
|
+
- doc/advanced.md
|
|
241
|
+
- doc/basic.md
|
|
242
|
+
- doc/configuration-enc.md
|
|
243
|
+
- doc/configuration-hiera.md
|
|
244
|
+
- doc/configuration-puppetdb.md
|
|
245
|
+
- doc/configuration.md
|
|
246
|
+
- doc/dev/README.md
|
|
247
|
+
- doc/dev/coverage.md
|
|
248
|
+
- doc/dev/how-to-add-options.md
|
|
249
|
+
- doc/dev/integration-tests.md
|
|
250
|
+
- doc/dev/releasing.md
|
|
251
|
+
- doc/installation.md
|
|
252
|
+
- doc/limitations.md
|
|
253
|
+
- doc/optionsref.md
|
|
254
|
+
- doc/requirements.md
|
|
255
|
+
- doc/roadmap.md
|
|
256
|
+
- doc/similar.md
|
|
257
|
+
- doc/troubleshooting.md
|
|
258
|
+
- lib/octocatalog-diff.rb
|
|
259
|
+
- lib/octocatalog-diff/bootstrap.rb
|
|
260
|
+
- lib/octocatalog-diff/catalog-diff/cli.rb
|
|
261
|
+
- lib/octocatalog-diff/catalog-diff/cli/catalogs.rb
|
|
262
|
+
- lib/octocatalog-diff/catalog-diff/cli/diffs.rb
|
|
263
|
+
- lib/octocatalog-diff/catalog-diff/cli/helpers/fact_override.rb
|
|
264
|
+
- lib/octocatalog-diff/catalog-diff/cli/options.rb
|
|
265
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/basedir.rb
|
|
266
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/bootstrap_environment.rb
|
|
267
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/bootstrap_script.rb
|
|
268
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/bootstrap_then_exit.rb
|
|
269
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/bootstrapped_dirs.rb
|
|
270
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/cached_master_dir.rb
|
|
271
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/catalog_only.rb
|
|
272
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/color.rb
|
|
273
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/compare_file_text.rb
|
|
274
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/debug.rb
|
|
275
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/display_datatype_changes.rb
|
|
276
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/display_detail_add.rb
|
|
277
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/display_source_file_line.rb
|
|
278
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/enc.rb
|
|
279
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/existing_catalogs.rb
|
|
280
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/fact_file.rb
|
|
281
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/fact_override.rb
|
|
282
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/facts_terminus.rb
|
|
283
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/from_puppetdb.rb
|
|
284
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/header.rb
|
|
285
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/hiera_config.rb
|
|
286
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/hiera_path_strip.rb
|
|
287
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/hostname.rb
|
|
288
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/ignore.rb
|
|
289
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/ignore_attr.rb
|
|
290
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/ignore_tags.rb
|
|
291
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/include_tags.rb
|
|
292
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/master_cache_branch.rb
|
|
293
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/output_file.rb
|
|
294
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/output_format.rb
|
|
295
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/parallel.rb
|
|
296
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/parser.rb
|
|
297
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/pass_env_vars.rb
|
|
298
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_ssl_ca.rb
|
|
299
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_ssl_client_cert.rb
|
|
300
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_ssl_client_key.rb
|
|
301
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_token.rb
|
|
302
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_token_file.rb
|
|
303
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_url.rb
|
|
304
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/puppet_binary.rb
|
|
305
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/puppet_master.rb
|
|
306
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/puppet_master_api_version.rb
|
|
307
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/puppet_master_ssl_ca.rb
|
|
308
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/puppet_master_ssl_client_cert.rb
|
|
309
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/puppet_master_ssl_client_key.rb
|
|
310
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_ssl_ca.rb
|
|
311
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_ssl_client_cert.rb
|
|
312
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_ssl_client_key.rb
|
|
313
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_ssl_client_password.rb
|
|
314
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_ssl_client_password_file.rb
|
|
315
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_url.rb
|
|
316
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/quiet.rb
|
|
317
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/retry_failed_catalog.rb
|
|
318
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/safe_to_delete_cached_master_dir.rb
|
|
319
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/storeconfigs.rb
|
|
320
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/suppress_absent_file_details.rb
|
|
321
|
+
- lib/octocatalog-diff/catalog-diff/cli/options/to_from_branch.rb
|
|
322
|
+
- lib/octocatalog-diff/catalog-diff/cli/printer.rb
|
|
323
|
+
- lib/octocatalog-diff/catalog-diff/differ.rb
|
|
324
|
+
- lib/octocatalog-diff/catalog-diff/display.rb
|
|
325
|
+
- lib/octocatalog-diff/catalog-diff/display/json.rb
|
|
326
|
+
- lib/octocatalog-diff/catalog-diff/display/text.rb
|
|
327
|
+
- lib/octocatalog-diff/catalog-util/bootstrap.rb
|
|
328
|
+
- lib/octocatalog-diff/catalog-util/builddir.rb
|
|
329
|
+
- lib/octocatalog-diff/catalog-util/cached_master_directory.rb
|
|
330
|
+
- lib/octocatalog-diff/catalog-util/command.rb
|
|
331
|
+
- lib/octocatalog-diff/catalog-util/enc.rb
|
|
332
|
+
- lib/octocatalog-diff/catalog-util/enc/noop.rb
|
|
333
|
+
- lib/octocatalog-diff/catalog-util/enc/pe.rb
|
|
334
|
+
- lib/octocatalog-diff/catalog-util/enc/pe/v1.rb
|
|
335
|
+
- lib/octocatalog-diff/catalog-util/enc/script.rb
|
|
336
|
+
- lib/octocatalog-diff/catalog-util/facts.rb
|
|
337
|
+
- lib/octocatalog-diff/catalog-util/fileresources.rb
|
|
338
|
+
- lib/octocatalog-diff/catalog-util/git.rb
|
|
339
|
+
- lib/octocatalog-diff/catalog.rb
|
|
340
|
+
- lib/octocatalog-diff/catalog/computed.rb
|
|
341
|
+
- lib/octocatalog-diff/catalog/json.rb
|
|
342
|
+
- lib/octocatalog-diff/catalog/noop.rb
|
|
343
|
+
- lib/octocatalog-diff/catalog/puppetdb.rb
|
|
344
|
+
- lib/octocatalog-diff/catalog/puppetmaster.rb
|
|
345
|
+
- lib/octocatalog-diff/external/pson/LICENSE
|
|
346
|
+
- lib/octocatalog-diff/external/pson/README.md
|
|
347
|
+
- lib/octocatalog-diff/external/pson/common.rb
|
|
348
|
+
- lib/octocatalog-diff/external/pson/pure.rb
|
|
349
|
+
- lib/octocatalog-diff/external/pson/pure/generator.rb
|
|
350
|
+
- lib/octocatalog-diff/external/pson/pure/parser.rb
|
|
351
|
+
- lib/octocatalog-diff/external/pson/version.rb
|
|
352
|
+
- lib/octocatalog-diff/facts.rb
|
|
353
|
+
- lib/octocatalog-diff/facts/json.rb
|
|
354
|
+
- lib/octocatalog-diff/facts/puppetdb.rb
|
|
355
|
+
- lib/octocatalog-diff/facts/yaml.rb
|
|
356
|
+
- lib/octocatalog-diff/puppetdb.rb
|
|
357
|
+
- lib/octocatalog-diff/util/colored.rb
|
|
358
|
+
- lib/octocatalog-diff/util/httparty.rb
|
|
359
|
+
- lib/octocatalog-diff/util/parallel.rb
|
|
360
|
+
- lib/octocatalog-diff/util/puppetversion.rb
|
|
361
|
+
- lib/octocatalog-diff/version.rb
|
|
362
|
+
homepage: https://github.com/github/octocatalog-diff
|
|
363
|
+
licenses:
|
|
364
|
+
- MIT
|
|
365
|
+
metadata: {}
|
|
366
|
+
post_install_message:
|
|
367
|
+
rdoc_options: []
|
|
368
|
+
require_paths:
|
|
369
|
+
- lib
|
|
370
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
371
|
+
requirements:
|
|
372
|
+
- - ">="
|
|
373
|
+
- !ruby/object:Gem::Version
|
|
374
|
+
version: 2.0.0
|
|
375
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
376
|
+
requirements:
|
|
377
|
+
- - ">="
|
|
378
|
+
- !ruby/object:Gem::Version
|
|
379
|
+
version: '0'
|
|
380
|
+
requirements: []
|
|
381
|
+
rubyforge_project:
|
|
382
|
+
rubygems_version: 2.5.1
|
|
383
|
+
signing_key:
|
|
384
|
+
specification_version: 4
|
|
385
|
+
summary: Compile Puppet catalogs from 2 branches, versions, etc., and compare them.
|
|
386
|
+
test_files: []
|