knife-depsolver 1.0.0 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e42020738fc3bfa53b285d3cc6ac18fa7ca3918d
4
- data.tar.gz: 9b2eb422129104d5006d94c83bae8dae89fcc728
3
+ metadata.gz: b5937e944afd44c612b2fe9beb72ab82fc54b6fb
4
+ data.tar.gz: 6d29b51bacad2ecc548abde5836745976cfcdfbe
5
5
  SHA512:
6
- metadata.gz: a619dcc79ebf4c2d877f1331916a7dd36b9dbc4f10f0b0d530c564429b76986a4a8f794c93879187303198c40b9814801f9620e7298818653c2c31f867b63a49
7
- data.tar.gz: 0ec6a6f0aefecb4471fb9add3bc0560ebe27becdf10514e71594d562b6c57254c2a15b4bcaf64ac80fd827b9660089b69a71271b4bc32828f170a2fad268c634
6
+ metadata.gz: c6458795f49739bceb38884ba4fe2d534a3f07c7bb005adf981e833230b27813d9391dd21e1259b3b1c20e9621ebfb093b28e40115bed8d7d208ddc8027296c8
7
+ data.tar.gz: 3c27e32e8bba168011d2afd4407fcdf552e92035f146a0108a31c3b9f4127701e9dec02c2a6150ca22831a4e3e35775b44ad58e9e28aade5e6786e478839853c
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Change Log
2
2
 
3
+ ## 1.0.1
4
+
5
+ Add error handling
6
+
3
7
  ## 1.0.0
4
8
 
5
9
  Initial release
@@ -1,13 +1,4 @@
1
- # This `knife exec` script gets a node's expanded run_list with version
2
- # constraints for a specified environment.
3
-
4
- # Then it POSTs the expanded run_list to the environment's cookbook_versions
5
- # endpoint to retrieve a list of dependency resolved cookbooks that meet all
6
- # specified version constraints.
7
-
8
1
  require 'chef/knife'
9
- require 'chef/run_list/run_list_expansion'
10
- require 'chef/run_list/run_list_item'
11
2
 
12
3
  class Chef
13
4
  class Knife
@@ -23,52 +14,63 @@ class Chef
23
14
  description: 'Use the run list from a given node'
24
15
 
25
16
  def run
26
- cookbook_versions = {}
17
+ begin
18
+ if config[:node]
19
+ node = Chef::Node.load(config[:node])
20
+ else
21
+ node = Chef::Node.new
22
+ node.name('depsolver-tmp-node')
27
23
 
28
- run_list = name_args.map {|item| item.to_s.split(/,/) }.flatten.each{|item| item.strip! }
29
- run_list.delete_if {|item| item.empty? }
24
+ run_list = name_args.map {|item| item.to_s.split(/,/) }.flatten.each{|item| item.strip! }
25
+ run_list.delete_if {|item| item.empty? }
30
26
 
31
- if config[:node]
32
- node = Chef::Node.load(config[:node])
33
- else
34
- node = Chef::Node.new
35
- node.name('depsolver-tmp-node')
36
- run_list.each do |arg|
37
- node.run_list.add(arg)
27
+ run_list.each do |arg|
28
+ node.run_list.add(arg)
29
+ end
38
30
  end
39
- end
40
31
 
41
- environment = config[:environment]
42
- environment ||= node.chef_environment
32
+ environment = config[:environment]
33
+ environment ||= node.chef_environment
43
34
 
44
- run_list_expansion = node.expand!
45
- expanded_run_list_with_versions = run_list_expansion.recipes.with_version_constraints_strings
35
+ environment_cookbook_versions = Chef::Environment.load(environment).cookbook_versions
36
+
37
+ run_list_expansion = node.expand!
38
+ expanded_run_list_with_versions = run_list_expansion.recipes.with_version_constraints_strings
46
39
 
47
- begin
48
40
  depsolver_start_time = Time.now
41
+
49
42
  ckbks = rest.post_rest("environments/" + environment + "/cookbook_versions", { "run_list" => expanded_run_list_with_versions })
43
+
50
44
  depsolver_finish_time = Time.now
51
- rescue
52
- end
53
45
 
54
- depsolver_results = {}
55
- ckbks.each do |name, ckbk|
56
- version = ckbk.is_a?(Hash) ? ckbk['version'] : ckbk.version
57
- depsolver_results[name] = version
58
- end
46
+ depsolver_results = {}
47
+ ckbks.each do |name, ckbk|
48
+ version = ckbk.is_a?(Hash) ? ckbk['version'] : ckbk.version
49
+ depsolver_results[name] = version
50
+ end
59
51
 
60
- results = {
61
- node: node.name,
62
- environment: environment,
63
- environment_cookbook_versions: Chef::Environment.load(environment).cookbook_versions,
64
- run_list: node.run_list,
65
- expanded_run_list: expanded_run_list_with_versions,
66
- depsolver_results: depsolver_results,
67
- depsolver_cookbook_count: depsolver_results.count,
68
- depsolver_elapsed_ms: ((depsolver_finish_time - depsolver_start_time) * 1000).to_i
69
- }
52
+ rescue => e
53
+ api_error = {}
54
+ api_error[:error_code] = e.response.code
55
+ api_error[:error_message] = e.response.message
56
+ begin
57
+ api_error[:error_body] = JSON.parse(e.response.body)
58
+ rescue JSON::ParserError
59
+ end
60
+ ensure
61
+ results = {}
62
+ results[:node] = node.name unless node.nil? || node.name.nil?
63
+ results[:environment] = environment unless environment.nil?
64
+ results[:environment_cookbook_versions] = environment_cookbook_versions unless environment_cookbook_versions.nil?
65
+ results[:run_list] = node.run_list unless node.nil? || node.run_list.nil?
66
+ results[:expanded_run_list] = expanded_run_list_with_versions unless expanded_run_list_with_versions.nil?
67
+ results[:depsolver_results] = depsolver_results unless depsolver_results.nil? || depsolver_results.empty?
68
+ results[:depsolver_cookbook_count] = ckbks.count unless ckbks.nil?
69
+ results[:depsolver_elapsed_ms] = ((depsolver_finish_time - depsolver_start_time) * 1000).to_i unless depsolver_finish_time.nil?
70
+ results[:api_error] = api_error unless api_error.nil?
70
71
 
71
- msg(JSON.pretty_generate(results))
72
+ msg(JSON.pretty_generate(results))
73
+ end
72
74
  end
73
75
  end
74
76
  end
@@ -1,3 +1,3 @@
1
1
  module KnifeDepsolver
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-depsolver
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremiah Snapp