knife-pantry 0.1.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4a95cf4479bfbc01387b2e34e1d7045d893bde6d
4
- data.tar.gz: 1e1a6e1bf995f6a2a67314e878b51c303fcd3622
3
+ metadata.gz: 48adb3a70f9ab7f7f4c8eb1d2f87a91151fa2ecf
4
+ data.tar.gz: 35d6d97cd772adf1624b1c3990c2c4a44c0d18f7
5
5
  SHA512:
6
- metadata.gz: e7feb6757b1c978bc2ec588e0f35e9a60ae0c75f9ba33a80a2fe60dda371e4a2a312a17da85c76d88bb2ab2ccbbd77a1e8918af5b3d3630abc45aa1e8bd1e98d
7
- data.tar.gz: 28e35551e4031911962a593e8f3846d35bd59ae4f2eab926f0bbce9647e37184230bcaafa3dd33657d0d57a6d1da153f747e660c9300a37f10fa5cb688152a85
6
+ metadata.gz: 19308121589032e63db6e17947bca7f5b7859a4a8c117f8722ded187820fcb2f881596d7460191be57c12c22312de0fc6f5b246decbc4856cbabb8bb3bdb7457
7
+ data.tar.gz: 7e904540264b2c6300bd39f4f7c0e8cd06e9ff9f05935d2466af6a6862fc46f22a1ccce71683df096fcc22a4ec732b6b698ea74c9f98e2c77778bbf50d8e6476
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Knife::Pantry
1
+ # knife-pantry
2
2
 
3
3
  Knife plugin that allows you to manage environment specific cookbook versioning.
4
4
 
@@ -37,11 +37,13 @@ knife pantry lookup <cookbook-name> <chef-environment>
37
37
 
38
38
  #### set
39
39
  Set allows you to, well... set a version for the specified cookbook in a particular environment, or environments.
40
- A comma seperated list of environments can be passed in to set a version across multiple at once.
40
+ A comma seperated list of environments can be passed in to set a version across multiple at once. If your goal
41
+ is to upgrade to the newest version of a particular cookbook, you can pass in 'latest' instead of specifying
42
+ a version.
41
43
  ```
42
44
  knife pantry set <cookbook-name> <version> <environments>
43
- [Action Complete!] development => 0.2.5 => esfeeder
44
- [Action Complete!] uat => 0.2.5 => esfeeder
45
+ [Action Complete!] development => 0.2.5 => my_cookbook
46
+ [Action Complete!] uat => 0.2.5 => my_cookbook
45
47
  ```
46
48
 
47
49
  ## Contributing
@@ -1,53 +1,54 @@
1
1
  require 'chef/knife'
2
2
  require 'json'
3
3
 
4
+ module Pantry
5
+ class PantryLookup < Chef::Knife
4
6
 
5
- class PantryLookup < Chef::Knife
7
+ banner "knife pantry lookup COOKBOOK ENVIRONMENT (options)"
6
8
 
7
- banner "knife pantry lookup COOKBOOK ENVIRONMENT (options)"
9
+ def run
10
+ cbk = name_args.first
11
+ env = name_args.last
8
12
 
9
- def run
10
- cbk = name_args.first
11
- env = name_args.last
12
-
13
- get_env(env)
14
- version = get_cbk_versions(env, cbk)
15
- get_past_versions(cbk, version)
16
- end
17
-
18
- def get_env(env)
19
- environments = []
20
- for key in rest.get_rest('environments')
21
- environments.push(key[0])
13
+ get_env(env)
14
+ version = get_cbk_versions(env, cbk)
15
+ get_past_versions(cbk, version)
22
16
  end
23
- if !(environments.include?(env))
24
- puts "Specified environment does not exist"
25
- else
26
- puts "[Environment found!] Looking for cookbook..."
27
- end
28
- end
29
17
 
30
- def get_cbk_versions(env, cbk)
31
- cookbooks = rest.get_rest("environments/#{env}/cookbooks")
32
- if !(cookbooks.has_key?(cbk))
33
- puts "#{cbk} not found in #{env}"
34
- else
35
- puts "[Cookbook found!] Checking current version..."
36
- version = cookbooks[cbk]['versions'][0]['version']
37
- puts "[Version found!] Finding latest releases..."
18
+ def get_env(env)
19
+ environments = []
20
+ for key in rest.get_rest('environments')
21
+ environments.push(key[0])
22
+ end
23
+ if !(environments.include?(env))
24
+ puts "Specified environment does not exist"
25
+ else
26
+ puts "[Environment found!] Looking for cookbook..."
27
+ end
38
28
  end
39
- return version
40
- end
41
29
 
42
- def get_past_versions(cbk, version)
43
- available_versions= rest.get_rest("cookbooks/#{cbk}")
44
- puts "[Releases found!]"
45
- available_versions[cbk]['versions'][0..4].each { |release|
46
- if release['version'] == version
47
- puts release['version'] + " <== Current version"
30
+ def get_cbk_versions(env, cbk)
31
+ cookbooks = rest.get_rest("environments/#{env}/cookbooks")
32
+ if !(cookbooks.has_key?(cbk))
33
+ puts "#{cbk} not found in #{env}"
48
34
  else
49
- puts release['version']
35
+ puts "[Cookbook found!] Checking current version..."
36
+ version = cookbooks[cbk]['versions'][0]['version']
37
+ puts "[Version found!] Finding latest releases..."
50
38
  end
51
- }
39
+ return version
40
+ end
41
+
42
+ def get_past_versions(cbk, version)
43
+ available_versions= rest.get_rest("cookbooks/#{cbk}")
44
+ puts "[Releases found!]"
45
+ available_versions[cbk]['versions'][0..4].each { |release|
46
+ if release['version'] == version
47
+ puts release['version'] + " <== Current version"
48
+ else
49
+ puts release['version']
50
+ end
51
+ }
52
+ end
52
53
  end
53
54
  end
@@ -1,58 +1,59 @@
1
1
  require 'chef/knife'
2
2
  require 'json'
3
3
 
4
+ module Pantry
5
+ class PantrySet < Chef::Knife
4
6
 
5
- class PantrySet < Chef::Knife
7
+ banner "knife pantry set COOKBOOK VERSION [ENVIRONMENT] (options)"
6
8
 
7
- banner "knife pantry set COOKBOOK VERSION [ENVIRONMENT] (options)"
9
+ def run
10
+ options = {
11
+ cbk: name_args.first,
12
+ ver: name_args[1],
13
+ env: name_args.last
14
+ }
8
15
 
9
- def run
10
- options = {
11
- cbk: name_args.first,
12
- ver: name_args[1],
13
- env: name_args.last
14
- }
16
+ if options[:ver] == 'latest'
17
+ available_versions = rest.get_rest("cookbooks/#{options[:cbk]}")
18
+ options[:ver] = available_versions[options[:cbk]]['versions'][0]['version']
19
+ end
15
20
 
16
- if options[:ver] == 'latest'
17
- available_versions = rest.get_rest("cookbooks/#{options[:cbk]}")
18
- options[:ver] = available_versions[options[:cbk]]['versions'][0]['version']
21
+ options[:env] = options[:env].split(',')
22
+ options[:env].each {|x|
23
+ options[:current_env] = x
24
+ if set(get_cbk_list(options))
25
+ puts "[Action Complete!] #{options[:current_env]} => #{options[:ver]} => #{options[:cbk]}"
26
+ else
27
+ puts "[No Action!] #{options[:current_env]} already using #{options[:cbk]} #{options[:ver]}"
28
+ end
29
+ }
19
30
  end
20
31
 
21
- options[:env] = options[:env].split(',')
22
- options[:env].each {|x|
23
- options[:current_env] = x
24
- if set(get_cbk_list(options))
25
- puts "[Action Complete!] #{options[:current_env]} => #{options[:ver]} => #{options[:cbk]}"
26
- else
27
- puts "[No Action!] #{options[:current_env]} already using #{options[:cbk]} #{options[:ver]}"
32
+ def get_cbk_list(options)
33
+ chef_env = rest.get_rest("environments/#{options[:current_env]}")
34
+ env_json = JSON.parse(chef_env.to_json(chef_env))
35
+ cbk_list = env_json['cookbook_versions']
36
+
37
+ if cbk_list.has_key?(options[:cbk])
38
+ if cbk_list[options[:cbk]] == "= " + options[:ver]
39
+ return nil
40
+ else
41
+ cbk_list[options[:cbk]] = "= " + options[:ver]
42
+ end
28
43
  end
29
- }
30
- end
31
44
 
32
- def get_cbk_list(options)
33
- chef_env = rest.get_rest("environments/#{options[:current_env]}")
34
- env_json = JSON.parse(chef_env.to_json(chef_env))
35
- cbk_list = env_json['cookbook_versions']
45
+ new_cbk_list = cbk_list
46
+ env_json['cookbook_versions'] = new_cbk_list
47
+ return env_json
48
+ end
36
49
 
37
- if cbk_list.has_key?(options[:cbk])
38
- if cbk_list[options[:cbk]] == "= " + options[:ver]
39
- return nil
50
+ def set(env_json)
51
+ if env_json != nil
52
+ rest.put_rest("environments/" + env_json['name'], env_json)
53
+ return true
40
54
  else
41
- cbk_list[options[:cbk]] = "= " + options[:ver]
55
+ return false
42
56
  end
43
57
  end
44
-
45
- new_cbk_list = cbk_list
46
- env_json['cookbook_versions'] = new_cbk_list
47
- return env_json
48
- end
49
-
50
- def set(env_json)
51
- if env_json != nil
52
- rest.put_rest("environments/" + env_json['name'], env_json)
53
- return true
54
- else
55
- return false
56
- end
57
58
  end
58
59
  end
@@ -1,5 +1,5 @@
1
1
  module Knife
2
2
  module Pantry
3
- VERSION = '0.1.0'
3
+ VERSION = '0.2.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-pantry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - |
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-13 00:00:00.000000000 Z
12
+ date: 2014-12-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: chef