knife-pantry 0.1.0 → 0.2.0

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: 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