diff --git a/examples/octocatalog-diff.cfg.rb b/examples/octocatalog-diff.cfg.rb index 021be879..86875076 100755 --- a/examples/octocatalog-diff.cfg.rb +++ b/examples/octocatalog-diff.cfg.rb @@ -163,6 +163,14 @@ def self.config settings[:storeconfigs] = false + ############################################################################################## + # storeconfigs_backend + # Override the default `storeconfigs` backend of `puppetdb` + # valid options include `puppetdb`, `yaml`, `json` + ############################################################################################## + + settings[:storeconfigs_backend] = 'puppetdb' + ############################################################################################## # bootstrap_script # When you check out your Puppet repository, do you need to run a script to prepare that diff --git a/lib/octocatalog-diff/catalog-util/command.rb b/lib/octocatalog-diff/catalog-util/command.rb index 8c87cdf6..c4412e13 100644 --- a/lib/octocatalog-diff/catalog-util/command.rb +++ b/lib/octocatalog-diff/catalog-util/command.rb @@ -72,7 +72,12 @@ def setup # storeconfigs? if @options[:storeconfigs] - cmdline.concat %w(--storeconfigs --storeconfigs_backend=puppetdb) + if @options[:storeconfigs_backend] + cmdline << '--storeconfigs' + cmdline << "--storeconfigs_backend=#{Shellwords.escape(@options[:storeconfigs_backend])}" + else + cmdline.concat %w(--storeconfigs --storeconfigs_backend=puppetdb) + end else cmdline << '--no-storeconfigs' end diff --git a/lib/octocatalog-diff/cli.rb b/lib/octocatalog-diff/cli.rb index 391a3f9b..ff83de6a 100644 --- a/lib/octocatalog-diff/cli.rb +++ b/lib/octocatalog-diff/cli.rb @@ -43,6 +43,7 @@ class Cli compare_file_text: true, display_datatype_changes: true, parallel: true, + storeconfigs_backend: 'puppetdb', suppress_absent_file_details: true, hiera_path: 'hieradata', use_lcs: true diff --git a/lib/octocatalog-diff/cli/options/storeconfigs_backend.rb b/lib/octocatalog-diff/cli/options/storeconfigs_backend.rb new file mode 100644 index 00000000..45540746 --- /dev/null +++ b/lib/octocatalog-diff/cli/options/storeconfigs_backend.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +# Set storeconfigs (integration with PuppetDB for collected resources) +# @param parser [OptionParser object] The OptionParser argument +# @param options [Hash] Options hash being constructed; this is modified in this method. +OctocatalogDiff::Cli::Options::Option.newoption(:storeconfigs) do + has_weight 220 + + def parse(parser, options) + parser.on('--storeconfigs-backend TERMINUS', 'Set the terminus used for storeconfigs') do |x| + options[:storeconfigs_backend] = x + end + end +end diff --git a/spec/octocatalog-diff/tests/cli/options/storeconfigs_backend_spec.rb b/spec/octocatalog-diff/tests/cli/options/storeconfigs_backend_spec.rb new file mode 100644 index 00000000..6b9d3c41 --- /dev/null +++ b/spec/octocatalog-diff/tests/cli/options/storeconfigs_backend_spec.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +require_relative '../options_helper' + +describe OctocatalogDiff::Cli::Options do + describe '#opt_storeconfigs_backend' do + it 'should accept all valid arguments' do + result = run_optparse(['--storeconfigs-backend', 'puppetdb']) + expect(result[:storeconfigs_backend]).to eq('puppetdb') + end + end +end diff --git a/spec/octocatalog-diff/tests/cli_spec.rb b/spec/octocatalog-diff/tests/cli_spec.rb index 7465aabd..09b92d45 100644 --- a/spec/octocatalog-diff/tests/cli_spec.rb +++ b/spec/octocatalog-diff/tests/cli_spec.rb @@ -31,6 +31,7 @@ colors: true, debug: false, quiet: false, + storeconfigs_backend: 'puppetdb', format: :color_text, display_source_file_line: false, compare_file_text: true,