knife-depsolver 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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