bolt 0.25.0 → 1.0.0
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.
Potentially problematic release.
This version of bolt might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bolt-modules/boltlib/lib/puppet/functions/run_task.rb +2 -3
- data/lib/bolt/bolt_option_parser.rb +2 -0
- data/lib/bolt/catalog.rb +8 -0
- data/lib/bolt/cli.rb +3 -0
- data/lib/bolt/config.rb +1 -3
- data/lib/bolt/inventory.rb +3 -2
- data/lib/bolt/inventory/group.rb +0 -12
- data/lib/bolt/transport/base.rb +1 -0
- data/lib/bolt/transport/local.rb +0 -1
- data/lib/bolt/transport/orch.rb +2 -8
- data/lib/bolt/transport/winrm.rb +1 -0
- data/lib/bolt/version.rb +1 -1
- data/lib/bolt_spec/plans.rb +2 -0
- data/lib/bolt_spec/run.rb +6 -2
- data/libexec/custom_facts.rb +15 -23
- metadata +2 -3
- data/bolt-modules/boltlib/lib/puppet/functions/file_upload.rb +0 -16
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 1e8d1a8d37a48ddf246cd058bbe4b071732c000c90592da48aac5ed7285143cf
         | 
| 4 | 
            +
              data.tar.gz: 9c1aeade908ced86c6d6b6f3e459949c438e0831e4dfc2401daaca6124663077
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: e060cf1af91bfe4f3f6ea97d83e38fd4ed5a65a2fdc1e3d1af28337bb59835fa2fba62cc34d98d7000c37426f5ea76b83e7bd2d540f48c09a40aef8f37cdf202
         | 
| 7 | 
            +
              data.tar.gz: d01e9efae28d08b0dffaab1bd6ca6b2679c01b7f390473a09557f61118a957d909f509e0aa480999bc0b8df3dced6b00bea2806ad6a89fb9f1d8bd5ccf0c4e5c
         | 
| @@ -98,9 +98,8 @@ Puppet::Functions.create_function(:run_task) do | |
| 98 98 |  | 
| 99 99 | 
             
                options['_description'] = description if description
         | 
| 100 100 |  | 
| 101 | 
            -
                # Don't bother loading the local task definition if all targets use the 'pcp' transport
         | 
| 102 | 
            -
                 | 
| 103 | 
            -
                if !targets.empty? && targets.all? { |t| t.protocol == 'pcp' && t.options['local-validation'] == false }
         | 
| 101 | 
            +
                # Don't bother loading the local task definition if all targets use the 'pcp' transport.
         | 
| 102 | 
            +
                if !targets.empty? && targets.all? { |t| t.protocol == 'pcp' }
         | 
| 104 103 | 
             
                  # create a fake task
         | 
| 105 104 | 
             
                  task = Bolt::Task.new(name: task_name, files: [{ 'name' => '', 'path' => '' }])
         | 
| 106 105 | 
             
                else
         | 
    
        data/lib/bolt/catalog.rb
    CHANGED
    
    | @@ -1,7 +1,10 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            +
            require 'bolt/config'
         | 
| 4 | 
            +
            require 'bolt/inventory'
         | 
| 3 5 | 
             
            require 'bolt/pal'
         | 
| 4 6 | 
             
            require 'bolt/puppetdb'
         | 
| 7 | 
            +
            require 'bolt/util'
         | 
| 5 8 |  | 
| 6 9 | 
             
            Bolt::PAL.load_puppet
         | 
| 7 10 |  | 
| @@ -53,6 +56,7 @@ module Bolt | |
| 53 56 | 
             
                  pal_main = request['code_ast'] || request['code_string']
         | 
| 54 57 | 
             
                  target = request['target']
         | 
| 55 58 | 
             
                  pdb_client = Bolt::PuppetDB::Client.new(Bolt::PuppetDB::Config.new(request['pdb_config']))
         | 
| 59 | 
            +
                  options = request['puppet_config'] || {}
         | 
| 56 60 |  | 
| 57 61 | 
             
                  with_puppet_settings(request['hiera_config']) do
         | 
| 58 62 | 
             
                    Puppet[:rich_data] = true
         | 
| @@ -65,6 +69,10 @@ module Bolt | |
| 65 69 | 
             
                                      bolt_inventory: setup_inventory(request['inventory'])) do
         | 
| 66 70 | 
             
                        Puppet.lookup(:pal_current_node).trusted_data = target['trusted']
         | 
| 67 71 | 
             
                        pal.with_catalog_compiler do |compiler|
         | 
| 72 | 
            +
                          # Configure language strictness in the CatalogCompiler. We want Bolt to be able
         | 
| 73 | 
            +
                          # to compile most Puppet 4+ manifests, so we default to allowing deprecated functions.
         | 
| 74 | 
            +
                          Puppet[:strict] = options['strict'] || :warning
         | 
| 75 | 
            +
                          Puppet[:strict_variables] = options['strict_variables'] || false
         | 
| 68 76 | 
             
                          ast = Puppet::Pops::Serialization::FromDataConverter.convert(pal_main)
         | 
| 69 77 | 
             
                          compiler.evaluate(ast)
         | 
| 70 78 | 
             
                          compiler.compile_additions
         | 
    
        data/lib/bolt/cli.rb
    CHANGED
    
    
    
        data/lib/bolt/config.rb
    CHANGED
    
    | @@ -5,7 +5,6 @@ require 'logging' | |
| 5 5 | 
             
            require 'concurrent'
         | 
| 6 6 | 
             
            require 'pathname'
         | 
| 7 7 | 
             
            require 'bolt/boltdir'
         | 
| 8 | 
            -
            require 'bolt/cli'
         | 
| 9 8 | 
             
            require 'bolt/transport/ssh'
         | 
| 10 9 | 
             
            require 'bolt/transport/winrm'
         | 
| 11 10 | 
             
            require 'bolt/transport/orch'
         | 
| @@ -49,8 +48,7 @@ module Bolt | |
| 49 48 | 
             
                    'ssl-verify' => true
         | 
| 50 49 | 
             
                  },
         | 
| 51 50 | 
             
                  pcp: {
         | 
| 52 | 
            -
                    'task-environment' => 'production' | 
| 53 | 
            -
                    'local-validation' => false
         | 
| 51 | 
            +
                    'task-environment' => 'production'
         | 
| 54 52 | 
             
                  },
         | 
| 55 53 | 
             
                  local: {}
         | 
| 56 54 | 
             
                }.freeze
         | 
    
        data/lib/bolt/inventory.rb
    CHANGED
    
    
    
        data/lib/bolt/inventory/group.rb
    CHANGED
    
    | @@ -59,14 +59,6 @@ module Bolt | |
| 59 59 | 
             
                    value
         | 
| 60 60 | 
             
                  end
         | 
| 61 61 |  | 
| 62 | 
            -
                  def check_deprecated_config(context, name, config)
         | 
| 63 | 
            -
                    if config && config['transports']
         | 
| 64 | 
            -
                      msg = "#{context} #{name} contains invalid config option 'transports', see " \
         | 
| 65 | 
            -
                            "https://puppet.com/docs/bolt/0.x/inventory_file.html for the updated format"
         | 
| 66 | 
            -
                      raise ValidationError.new(msg, @name)
         | 
| 67 | 
            -
                    end
         | 
| 68 | 
            -
                  end
         | 
| 69 | 
            -
             | 
| 70 62 | 
             
                  def validate(used_names = Set.new, node_names = Set.new, depth = 0)
         | 
| 71 63 | 
             
                    if used_names.include?(@name)
         | 
| 72 64 | 
             
                      raise ValidationError.new("Tried to redefine group #{@name}", @name)
         | 
| @@ -77,8 +69,6 @@ module Bolt | |
| 77 69 | 
             
                      raise ValidationError.new("Group #{@name} conflicts with node of the same name", @name)
         | 
| 78 70 | 
             
                    end
         | 
| 79 71 |  | 
| 80 | 
            -
                    check_deprecated_config('Group', @name, @config)
         | 
| 81 | 
            -
             | 
| 82 72 | 
             
                    used_names << @name
         | 
| 83 73 |  | 
| 84 74 | 
             
                    @nodes.each_value do |n|
         | 
| @@ -95,8 +85,6 @@ module Bolt | |
| 95 85 | 
             
                        raise ValidationError.new("Group #{n['name']} conflicts with node of the same name", n['name'])
         | 
| 96 86 | 
             
                      end
         | 
| 97 87 |  | 
| 98 | 
            -
                      check_deprecated_config('Node', n['name'], n['config'])
         | 
| 99 | 
            -
             | 
| 100 88 | 
             
                      node_names << n['name']
         | 
| 101 89 | 
             
                    end
         | 
| 102 90 |  | 
    
        data/lib/bolt/transport/base.rb
    CHANGED
    
    
    
        data/lib/bolt/transport/local.rb
    CHANGED
    
    
    
        data/lib/bolt/transport/orch.rb
    CHANGED
    
    | @@ -6,7 +6,6 @@ require 'json' | |
| 6 6 | 
             
            require 'orchestrator_client'
         | 
| 7 7 | 
             
            require 'bolt/transport/base'
         | 
| 8 8 | 
             
            require 'bolt/transport/orch/connection'
         | 
| 9 | 
            -
            require 'bolt/result'
         | 
| 10 9 |  | 
| 11 10 | 
             
            module Bolt
         | 
| 12 11 | 
             
              module Transport
         | 
| @@ -23,17 +22,12 @@ module Bolt | |
| 23 22 | 
             
                  attr_writer :plan_context
         | 
| 24 23 |  | 
| 25 24 | 
             
                  def self.options
         | 
| 26 | 
            -
                    %w[service-url cacert token-file task-environment | 
| 25 | 
            +
                    %w[service-url cacert token-file task-environment]
         | 
| 27 26 | 
             
                  end
         | 
| 28 27 |  | 
| 29 28 | 
             
                  PROVIDED_FEATURES = ['puppet-agent'].freeze
         | 
| 30 29 |  | 
| 31 | 
            -
                  def self.validate(options)
         | 
| 32 | 
            -
                    validation_flag = options['local-validation']
         | 
| 33 | 
            -
                    unless !!validation_flag == validation_flag
         | 
| 34 | 
            -
                      raise Bolt::ValidationError, 'local-validation option must be a Boolean true or false'
         | 
| 35 | 
            -
                    end
         | 
| 36 | 
            -
                  end
         | 
| 30 | 
            +
                  def self.validate(options); end
         | 
| 37 31 |  | 
| 38 32 | 
             
                  def initialize(*args)
         | 
| 39 33 | 
             
                    @connections = {}
         | 
    
        data/lib/bolt/transport/winrm.rb
    CHANGED
    
    
    
        data/lib/bolt/version.rb
    CHANGED
    
    
    
        data/lib/bolt_spec/plans.rb
    CHANGED
    
    | @@ -2,6 +2,8 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            require 'bolt_spec/plans/mock_executor'
         | 
| 4 4 | 
             
            require 'bolt/config'
         | 
| 5 | 
            +
            require 'bolt/inventory'
         | 
| 6 | 
            +
            require 'bolt/pal'
         | 
| 5 7 |  | 
| 6 8 | 
             
            # These helpers are intended to be used for plan unit testing without calling
         | 
| 7 9 | 
             
            # out to target nodes. It accomplishes this by replacing bolt's executor with a
         | 
    
        data/lib/bolt_spec/run.rb
    CHANGED
    
    | @@ -1,7 +1,11 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
            require 'bolt/ | 
| 3 | 
            +
            require 'bolt/analytics'
         | 
| 4 | 
            +
            require 'bolt/config'
         | 
| 5 | 
            +
            require 'bolt/executor'
         | 
| 6 | 
            +
            require 'bolt/inventory'
         | 
| 7 | 
            +
            require 'bolt/pal'
         | 
| 8 | 
            +
            require 'bolt/puppetdb'
         | 
| 5 9 | 
             
            require 'bolt/util'
         | 
| 6 10 |  | 
| 7 11 | 
             
            # This is intended to provide a relatively stable method of executing bolt in process from tests.
         | 
    
        data/libexec/custom_facts.rb
    CHANGED
    
    | @@ -8,37 +8,29 @@ require 'tempfile' | |
| 8 8 |  | 
| 9 9 | 
             
            args = JSON.parse(STDIN.read)
         | 
| 10 10 |  | 
| 11 | 
            -
            Dir.mktmpdir do | | 
| 11 | 
            +
            Dir.mktmpdir do |puppet_root|
         | 
| 12 | 
            +
              # Create temporary directories for all core Puppet settings so we don't clobber
         | 
| 13 | 
            +
              # existing state or read from puppet.conf. Also create a temporary modulepath.
         | 
| 14 | 
            +
              moduledir = File.join(puppet_root, 'modules')
         | 
| 15 | 
            +
              Dir.mkdir(moduledir)
         | 
| 16 | 
            +
              cli = Puppet::Settings::REQUIRED_APP_SETTINGS.flat_map do |setting|
         | 
| 17 | 
            +
                ["--#{setting}", File.join(puppet_root, setting.to_s.chomp('dir'))]
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
              cli << '--modulepath' << moduledir
         | 
| 20 | 
            +
              Puppet.initialize_settings(cli)
         | 
| 21 | 
            +
             | 
| 12 22 | 
             
              Tempfile.open('plugins.tar.gz') do |plugins|
         | 
| 13 23 | 
             
                File.binwrite(plugins, Base64.decode64(args['plugins']))
         | 
| 14 24 | 
             
                Puppet::ModuleTool::Tar.instance.unpack(plugins, moduledir, Etc.getlogin || Etc.getpwuid.name)
         | 
| 15 25 | 
             
              end
         | 
| 16 26 |  | 
| 17 | 
            -
              Puppet. | 
| 18 | 
            -
              env = Puppet.lookup(:environments).get('production').override_with(modulepath: [moduledir])
         | 
| 27 | 
            +
              env = Puppet.lookup(:environments).get('production')
         | 
| 19 28 | 
             
              env.each_plugin_directory do |dir|
         | 
| 20 29 | 
             
                $LOAD_PATH << dir unless $LOAD_PATH.include?(dir)
         | 
| 21 30 | 
             
              end
         | 
| 22 31 |  | 
| 23 | 
            -
               | 
| 24 | 
            -
               | 
| 25 | 
            -
              env.modules.each do |mod|
         | 
| 26 | 
            -
                dirs << File.join(mod.plugins, 'facter') if mod.plugins?
         | 
| 27 | 
            -
                external_dirs << mod.pluginfacts if mod.pluginfacts?
         | 
| 28 | 
            -
              end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
              Facter.reset
         | 
| 31 | 
            -
              Facter.search(*dirs) unless dirs.empty?
         | 
| 32 | 
            -
              Facter.search_external(external_dirs)
         | 
| 33 | 
            -
             | 
| 34 | 
            -
              if Puppet.respond_to? :initialize_facts
         | 
| 35 | 
            -
                Puppet.initialize_facts
         | 
| 36 | 
            -
              else
         | 
| 37 | 
            -
                Facter.add(:puppetversion) do
         | 
| 38 | 
            -
                  setcode { Puppet.version.to_s }
         | 
| 39 | 
            -
                end
         | 
| 40 | 
            -
              end
         | 
| 41 | 
            -
             | 
| 42 | 
            -
              puts(Facter.to_hash.to_json)
         | 
| 32 | 
            +
              facts = Puppet::Node::Facts.indirection.find(SecureRandom.uuid, environment: env)
         | 
| 33 | 
            +
              puts(facts.values.to_json)
         | 
| 43 34 | 
             
            end
         | 
| 35 | 
            +
             | 
| 44 36 | 
             
            exit 0
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: bolt
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 1.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Puppet
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2018-10- | 
| 11 | 
            +
            date: 2018-10-08 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: addressable
         | 
| @@ -258,7 +258,6 @@ files: | |
| 258 258 | 
             
            - bolt-modules/boltlib/lib/puppet/functions/apply_prep.rb
         | 
| 259 259 | 
             
            - bolt-modules/boltlib/lib/puppet/functions/facts.rb
         | 
| 260 260 | 
             
            - bolt-modules/boltlib/lib/puppet/functions/fail_plan.rb
         | 
| 261 | 
            -
            - bolt-modules/boltlib/lib/puppet/functions/file_upload.rb
         | 
| 262 261 | 
             
            - bolt-modules/boltlib/lib/puppet/functions/get_targets.rb
         | 
| 263 262 | 
             
            - bolt-modules/boltlib/lib/puppet/functions/puppetdb_fact.rb
         | 
| 264 263 | 
             
            - bolt-modules/boltlib/lib/puppet/functions/puppetdb_query.rb
         | 
| @@ -1,16 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            # This function wraps the upload_file function with a deprecation warning, for backward compatibility.
         | 
| 4 | 
            -
            Puppet::Functions.create_function(:file_upload, Puppet::Functions::InternalFunction) do
         | 
| 5 | 
            -
              def file_upload(*args)
         | 
| 6 | 
            -
                executor = Puppet.lookup(:bolt_executor) { nil }
         | 
| 7 | 
            -
                executor&.report_function_call('file_upload')
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                file, line = Puppet::Pops::PuppetStack.top_of_stack
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                msg = "The file_upload function is deprecated and will be removed; use upload_file instead"
         | 
| 12 | 
            -
                Puppet.puppet_deprecation_warning(msg, key: 'bolt-function/file_upload', file: file, line: line)
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                call_function('upload_file', *args)
         | 
| 15 | 
            -
              end
         | 
| 16 | 
            -
            end
         |