knife-api 0.1.6 → 0.1.7
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 +4 -4
 - data/CHANGELOG.md +7 -1
 - data/Rakefile +16 -0
 - data/knife-api.gemspec +2 -1
 - data/lib/knife/api.rb +44 -27
 - data/lib/knife/api/version.rb +1 -1
 - metadata +21 -7
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 133c78523dfdc03c78812813cfe4e3b8bc3afb46
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: b345e8e05f3589958a8527ac744cb99c04e220df
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: d2a1c44ffe320c70f148c2a52d691a04616bbf0eaae07366ea97b53bf9315cd33138c10a45ca8528747439f15502bb0b8692b920ea97a41c7ad04931b62b91c9
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 95bd4bf5c30a8f1657bcefa87fce41bba4c6b65639491bead4bcacc6e080f005ea90033a9b71f90615d897d70c76294aeedc115be12f42da119b7e9ee38b03bc
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -3,4 +3,10 @@ Change Log 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            2015-02-26
         
     | 
| 
       5 
5 
     | 
    
         
             
              added a CodeShip badge to the README.md file
         
     | 
| 
       6 
     | 
    
         
            -
              added a CHANGELOG.md file to better document project changes
         
     | 
| 
      
 6 
     | 
    
         
            +
              added a CHANGELOG.md file to better document project changes
         
     | 
| 
      
 7 
     | 
    
         
            +
              
         
     | 
| 
      
 8 
     | 
    
         
            +
            2016-01-15
         
     | 
| 
      
 9 
     | 
    
         
            +
              found that both Ruby Mine and Atom tricked out with linter, linter-ruby, 
         
     | 
| 
      
 10 
     | 
    
         
            +
              linter-rubocop, linter-foodcritic were unhappy with the Ruby code as it was
         
     | 
| 
      
 11 
     | 
    
         
            +
              so I cleaned it up, primarily by refactoring the knife_capture method
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -1 +1,17 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'bundler/gem_tasks'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require 'knife/api'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'pp'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'json'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            task :list_nodes do
         
     | 
| 
      
 8 
     | 
    
         
            +
              status = knife :node_list
         
     | 
| 
      
 9 
     | 
    
         
            +
              puts "status is #{status}"
         
     | 
| 
      
 10 
     | 
    
         
            +
              fail if status > 0
         
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            task :show_node, :node_name do |task_name, args|
         
     | 
| 
      
 14 
     | 
    
         
            +
              stdout, stderr, status = knife_capture :node_show, [args[:node_name], '-F', 'j']
         
     | 
| 
      
 15 
     | 
    
         
            +
              fail if status > 0
         
     | 
| 
      
 16 
     | 
    
         
            +
              pp JSON.load(stdout)
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
    
        data/knife-api.gemspec
    CHANGED
    
    | 
         @@ -17,10 +17,11 @@ Gem::Specification.new do |gem| 
     | 
|
| 
       17 
17 
     | 
    
         
             
              gem.test_files    = gem.files.grep(%r{^(test|spec|features)/})
         
     | 
| 
       18 
18 
     | 
    
         
             
              gem.require_paths = ['lib']
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
              gem.add_dependency 'chef', '>= 10.32', ' 
     | 
| 
      
 20 
     | 
    
         
            +
              gem.add_dependency 'chef', '>= 10.32', '<= 12.6.0'
         
     | 
| 
       21 
21 
     | 
    
         
             
              gem.add_dependency 'chef-zero', '>= 2.2.1'
         
     | 
| 
       22 
22 
     | 
    
         
             
              gem.add_dependency 'ohai', '> 7.0.0', '< 9.0.0'
         
     | 
| 
       23 
23 
     | 
    
         
             
              gem.add_dependency 'json', '>= 1.8.2'
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
              gem.add_development_dependency 'rake', '>= 10.4.2'
         
     | 
| 
      
 26 
     | 
    
         
            +
              gem.add_development_dependency 'codeclimate-test-reporter', '>= 0.4.8' # , group: :test, require: nil
         
     | 
| 
       26 
27 
     | 
    
         
             
            end
         
     | 
    
        data/lib/knife/api.rb
    CHANGED
    
    | 
         @@ -2,6 +2,8 @@ require 'chef/application/knife' 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require 'knife/api/version'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'stringio'
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
      
 5 
     | 
    
         
            +
            # Chef::Knife classes are opened to expose the Knife entry points to code
         
     | 
| 
      
 6 
     | 
    
         
            +
            # via the injected API module
         
     | 
| 
       5 
7 
     | 
    
         
             
            class Chef
         
     | 
| 
       6 
8 
     | 
    
         
             
              class Knife
         
     | 
| 
       7 
9 
     | 
    
         
             
                # adding API module to existing Chef::Knife packaging
         
     | 
| 
         @@ -9,21 +11,17 @@ class Chef 
     | 
|
| 
       9 
11 
     | 
    
         
             
                  # adding Support module
         
     | 
| 
       10 
12 
     | 
    
         
             
                  module Support
         
     | 
| 
       11 
13 
     | 
    
         
             
                    def self.run_knife(command, args)
         
     | 
| 
       12 
     | 
    
         
            -
                      unless command.is_a?(Array)
         
     | 
| 
       13 
     | 
    
         
            -
                        command = command.to_s.split(/[\s_]+/)
         
     | 
| 
       14 
     | 
    
         
            -
                      end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
                      command = command.to_s.split(/[\s_]+/) unless command.is_a?(Array)
         
     | 
| 
       16 
15 
     | 
    
         
             
                      command += args
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                      if ENV['CHEF_CONFIG']
         
     | 
| 
       19 
     | 
    
         
            -
                        command += ['-c', ENV['CHEF_CONFIG']]
         
     | 
| 
       20 
     | 
    
         
            -
                      end
         
     | 
| 
      
 16 
     | 
    
         
            +
                      command += ['-c', ENV['CHEF_CONFIG']] if ENV['CHEF_CONFIG']
         
     | 
| 
       21 
17 
     | 
    
         | 
| 
       22 
18 
     | 
    
         
             
                      opts = Chef::Application::Knife.new.options
         
     | 
| 
       23 
19 
     | 
    
         
             
                      Chef::Knife.run(command, opts)
         
     | 
| 
       24 
     | 
    
         
            -
                       
     | 
| 
      
 20 
     | 
    
         
            +
                      # believe this to be a problem -- if knife command would otherwise
         
     | 
| 
      
 21 
     | 
    
         
            +
                      # indicate a chef error this creates a false positive
         
     | 
| 
      
 22 
     | 
    
         
            +
                      0
         
     | 
| 
       25 
23 
     | 
    
         
             
                    rescue SystemExit => e
         
     | 
| 
       26 
     | 
    
         
            -
                       
     | 
| 
      
 24 
     | 
    
         
            +
                      abort("Chef run failed with status " + e.status.to_s)
         
     | 
| 
       27 
25 
     | 
    
         
             
                    end
         
     | 
| 
       28 
26 
     | 
    
         
             
                  end
         
     | 
| 
       29 
27 
     | 
    
         | 
| 
         @@ -32,33 +30,52 @@ class Chef 
     | 
|
| 
       32 
30 
     | 
    
         
             
                  end
         
     | 
| 
       33 
31 
     | 
    
         | 
| 
       34 
32 
     | 
    
         
             
                  def knife_capture(command, args = [], input = nil)
         
     | 
| 
       35 
     | 
    
         
            -
                     
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                    warn = $VERBOSE
         
     | 
| 
       38 
     | 
    
         
            -
                    $VERBOSE = nil
         
     | 
| 
       39 
     | 
    
         
            -
                    stderr, stdout, stdin = STDERR, STDOUT, STDIN
         
     | 
| 
      
 33 
     | 
    
         
            +
                    @input = input
         
     | 
| 
      
 34 
     | 
    
         
            +
                    set_null
         
     | 
| 
       40 
35 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
                     
     | 
| 
       42 
     | 
    
         
            -
                    Object.const_set('STDOUT', StringIO.new('', 'r+'))
         
     | 
| 
       43 
     | 
    
         
            -
                    Object.const_set('STDIN', input ? StringIO.new(input, 'r') : null)
         
     | 
| 
       44 
     | 
    
         
            -
                    $VERBOSE = warn
         
     | 
| 
      
 36 
     | 
    
         
            +
                    assign_io_channels
         
     | 
| 
       45 
37 
     | 
    
         | 
| 
       46 
38 
     | 
    
         
             
                    status = Chef::Knife::API::Support.run_knife(command, args)
         
     | 
| 
       47 
39 
     | 
    
         
             
                    return STDOUT.string, STDERR.string, status
         
     | 
| 
       48 
40 
     | 
    
         
             
                  ensure
         
     | 
| 
       49 
     | 
    
         
            -
                     
     | 
| 
       50 
     | 
    
         
            -
                    $VERBOSE = nil
         
     | 
| 
       51 
     | 
    
         
            -
                    Object.const_set('STDERR', stderr)
         
     | 
| 
       52 
     | 
    
         
            -
                    Object.const_set('STDOUT', stdout)
         
     | 
| 
       53 
     | 
    
         
            -
                    Object.const_set('STDIN', stdin)
         
     | 
| 
       54 
     | 
    
         
            -
                    $VERBOSE = warn
         
     | 
| 
       55 
     | 
    
         
            -
                    null.close
         
     | 
| 
      
 41 
     | 
    
         
            +
                    revert_io_channels
         
     | 
| 
       56 
42 
     | 
    
         
             
                  end
         
     | 
| 
       57 
43 
     | 
    
         
             
                end
         
     | 
| 
       58 
44 
     | 
    
         
             
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              def set_null
         
     | 
| 
      
 47 
     | 
    
         
            +
                if Gem.win_platform? == null
         
     | 
| 
      
 48 
     | 
    
         
            +
                  File.open('NUL:', 'r')
         
     | 
| 
      
 49 
     | 
    
         
            +
                else
         
     | 
| 
      
 50 
     | 
    
         
            +
                  File.open('/dev/null', 'r')
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
              end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
              def assign_io_channels
         
     | 
| 
      
 55 
     | 
    
         
            +
                @warn = $VERBOSE
         
     | 
| 
      
 56 
     | 
    
         
            +
                $VERBOSE = nil
         
     | 
| 
      
 57 
     | 
    
         
            +
                @stderr = STDERR
         
     | 
| 
      
 58 
     | 
    
         
            +
                @stdout = STDOUT
         
     | 
| 
      
 59 
     | 
    
         
            +
                @stdin = STDIN
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                Object.const_set('STDERR', StringIO.new('', 'r+'))
         
     | 
| 
      
 62 
     | 
    
         
            +
                Object.const_set('STDOUT', StringIO.new('', 'r+'))
         
     | 
| 
      
 63 
     | 
    
         
            +
                Object.const_set('STDIN', @input ? StringIO.new(@input, 'r') : null)
         
     | 
| 
      
 64 
     | 
    
         
            +
                $VERBOSE = @warn
         
     | 
| 
      
 65 
     | 
    
         
            +
              end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
              def revert_io_channels
         
     | 
| 
      
 68 
     | 
    
         
            +
                @warn = $VERBOSE
         
     | 
| 
      
 69 
     | 
    
         
            +
                $VERBOSE = nil
         
     | 
| 
      
 70 
     | 
    
         
            +
                Object.const_set('STDERR', @stderr)
         
     | 
| 
      
 71 
     | 
    
         
            +
                Object.const_set('STDOUT', @stdout)
         
     | 
| 
      
 72 
     | 
    
         
            +
                Object.const_set('STDIN', @stdin)
         
     | 
| 
      
 73 
     | 
    
         
            +
                $VERBOSE = @warn
         
     | 
| 
      
 74 
     | 
    
         
            +
                null.close
         
     | 
| 
      
 75 
     | 
    
         
            +
              end
         
     | 
| 
       59 
76 
     | 
    
         
             
            end
         
     | 
| 
       60 
77 
     | 
    
         | 
| 
       61 
     | 
    
         
            -
            class << eval( 
     | 
| 
      
 78 
     | 
    
         
            +
            class << eval('self', TOPLEVEL_BINDING)
         
     | 
| 
       62 
79 
     | 
    
         
             
              include Chef::Knife::API
         
     | 
| 
       63 
80 
     | 
    
         
             
            end
         
     | 
| 
       64 
81 
     | 
    
         | 
    
        data/lib/knife/api/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: knife-api
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.7
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Erik Hollensbe
         
     | 
| 
         @@ -10,7 +10,7 @@ authors: 
     | 
|
| 
       10 
10 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       11 
11 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       12 
12 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       13 
     | 
    
         
            -
            date:  
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2016-06-02 00:00:00.000000000 Z
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies:
         
     | 
| 
       15 
15 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       16 
16 
     | 
    
         
             
              name: chef
         
     | 
| 
         @@ -19,9 +19,9 @@ dependencies: 
     | 
|
| 
       19 
19 
     | 
    
         
             
                - - ">="
         
     | 
| 
       20 
20 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       21 
21 
     | 
    
         
             
                    version: '10.32'
         
     | 
| 
       22 
     | 
    
         
            -
                - - " 
     | 
| 
      
 22 
     | 
    
         
            +
                - - "<="
         
     | 
| 
       23 
23 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       24 
     | 
    
         
            -
                    version:  
     | 
| 
      
 24 
     | 
    
         
            +
                    version: 12.6.0
         
     | 
| 
       25 
25 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       26 
26 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       27 
27 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -29,9 +29,9 @@ dependencies: 
     | 
|
| 
       29 
29 
     | 
    
         
             
                - - ">="
         
     | 
| 
       30 
30 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       31 
31 
     | 
    
         
             
                    version: '10.32'
         
     | 
| 
       32 
     | 
    
         
            -
                - - " 
     | 
| 
      
 32 
     | 
    
         
            +
                - - "<="
         
     | 
| 
       33 
33 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       34 
     | 
    
         
            -
                    version:  
     | 
| 
      
 34 
     | 
    
         
            +
                    version: 12.6.0
         
     | 
| 
       35 
35 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       36 
36 
     | 
    
         
             
              name: chef-zero
         
     | 
| 
       37 
37 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -94,6 +94,20 @@ dependencies: 
     | 
|
| 
       94 
94 
     | 
    
         
             
                - - ">="
         
     | 
| 
       95 
95 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       96 
96 
     | 
    
         
             
                    version: 10.4.2
         
     | 
| 
      
 97 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 98 
     | 
    
         
            +
              name: codeclimate-test-reporter
         
     | 
| 
      
 99 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 100 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 101 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 102 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 103 
     | 
    
         
            +
                    version: 0.4.8
         
     | 
| 
      
 104 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 105 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 106 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 107 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 108 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 109 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 110 
     | 
    
         
            +
                    version: 0.4.8
         
     | 
| 
       97 
111 
     | 
    
         
             
            description: A small library that lets you drive Chef's 'knife' programmatically
         
     | 
| 
       98 
112 
     | 
    
         
             
            email:
         
     | 
| 
       99 
113 
     | 
    
         
             
            - andyglick@gmailcom
         
     | 
| 
         @@ -130,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       130 
144 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       131 
145 
     | 
    
         
             
            requirements: []
         
     | 
| 
       132 
146 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       133 
     | 
    
         
            -
            rubygems_version: 2. 
     | 
| 
      
 147 
     | 
    
         
            +
            rubygems_version: 2.5.2
         
     | 
| 
       134 
148 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       135 
149 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       136 
150 
     | 
    
         
             
            summary: A small library that lets you drive Chef's 'knife' programmatically
         
     |