knife-supermarket 0.0.3 → 0.1.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 +4 -4
- data/README.md +33 -1
- data/lib/chef/knife/supermarket_download.rb +2 -2
- data/lib/chef/knife/supermarket_install.rb +1 -1
- data/lib/chef/knife/supermarket_list.rb +2 -2
- data/lib/chef/knife/supermarket_search.rb +2 -2
- data/lib/chef/knife/supermarket_share.rb +2 -2
- data/lib/chef/knife/supermarket_show.rb +4 -4
- data/lib/chef/knife/supermarket_unshare.rb +2 -2
- data/lib/knife-supermarket/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e44f3c7622e723d19115bc0c317d8a5b148a7542
|
|
4
|
+
data.tar.gz: fca3200e2c3a45d737c2b1484a7da554769eeefc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 30e5dd9d1750911cc98047c03e016dca7b2785d61c3ac6fa6c63187acbfee6618e88f91690b0d94da7a54de0e5c54cf20960a44a0751e00795e15c6c55c5506d
|
|
7
|
+
data.tar.gz: a579be762ee0d10bf0db5fea3c12f9b5d13afc1a9bc054f8268c2a22181f830747328cbd52f1d2419f012c4110fddd624c480459b577adb66f94355139adf156
|
data/README.md
CHANGED
|
@@ -1,3 +1,35 @@
|
|
|
1
1
|
# knife-supermarket
|
|
2
2
|
|
|
3
|
-
This
|
|
3
|
+
This Knife Plugin is an easy way to switch between various supermarkets, the biggest of them being the Chef Community Site, located at [https://supermarket.getchef.com](https://supermarket.getchef.com). The `knife supermarket` commands mimic the `knife cookbook site` commands and work the same way.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
If you are running [Chef-DK](http://www.getchef.com/downloads/chef-dk) you can install it by running:
|
|
8
|
+
|
|
9
|
+
$ chef gem install knife-supermarket
|
|
10
|
+
|
|
11
|
+
Otherwise, this plugin is distributed as a Ruby Gem. To install it, run:
|
|
12
|
+
|
|
13
|
+
$ gem install knife-supermarket
|
|
14
|
+
|
|
15
|
+
Depending on your system's configuration, you may need to run this command with root privileges.
|
|
16
|
+
|
|
17
|
+
## Configuration
|
|
18
|
+
|
|
19
|
+
Out of the box, knife-supermarket is configured to point at [https://supermarket.getchef.com](https://supermarket.getchef.com), but it can be configured to point at a supermarket that isn't the official one. To do this you can do this a few ways:
|
|
20
|
+
|
|
21
|
+
### On The Command Line
|
|
22
|
+
|
|
23
|
+
When using the `knife supermarket` commands you can specify a `--supermarket-site` or `-m` flag and specify the uri of the new supermarket. So, for example, if your supermarket was hosted at `https://franchise.somecompany.com` you could run `knife supermarket install --supermarket-site https://franchise.somecompany.com mysql`.
|
|
24
|
+
|
|
25
|
+
### `knife.rb` Configuration
|
|
26
|
+
|
|
27
|
+
It may be preferable to use have this setting default to another host. For that, we can set the `knife[:supermarket_site]` setting in our `knife.rb`. So if we wanted to default to a supermarket hosted at `https://franchise.somecompany.com` it would be:
|
|
28
|
+
|
|
29
|
+
knife[:supermarket_site] = 'https://franchise.somecompany.com'
|
|
30
|
+
|
|
31
|
+
Now when you run `knife supermarket install mysql` it will install the mysql cookbook from `https://franchise.somecompany.com`.
|
|
32
|
+
|
|
33
|
+
## Subcommands
|
|
34
|
+
|
|
35
|
+
The subcommands work the same way they for [knife cookbook site](http://docs.opscode.com/chef/knife.html#cookbook-site). Please see [http://docs.opscode.com/chef/knife.html#cookbook-site](http://docs.opscode.com/chef/knife.html#cookbook-site) for more information on the subcommands.
|
|
@@ -29,11 +29,11 @@ class Chef
|
|
|
29
29
|
:short => '-m SUPERMARKET_SITE',
|
|
30
30
|
:long => '--supermarket-site SUPERMARKET_SITE',
|
|
31
31
|
:description => 'Supermarket Site',
|
|
32
|
-
:default => 'supermarket.getchef.com',
|
|
32
|
+
:default => 'https://supermarket.getchef.com',
|
|
33
33
|
:proc => Proc.new { |supermarket| Chef::Config[:knife][:supermarket_site] = supermarket }
|
|
34
34
|
|
|
35
35
|
def cookbooks_api_url
|
|
36
|
-
"
|
|
36
|
+
"#{config[:supermarket_site]}/api/v1/cookbooks"
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
end
|
|
@@ -36,7 +36,7 @@ class Chef
|
|
|
36
36
|
:short => '-m SUPERMARKET_SITE',
|
|
37
37
|
:long => '--supermarket-site SUPERMARKET_SITE',
|
|
38
38
|
:description => 'Supermarket Site',
|
|
39
|
-
:default => 'supermarket.getchef.com',
|
|
39
|
+
:default => 'https://supermarket.getchef.com',
|
|
40
40
|
:proc => Proc.new { |supermarket| Chef::Config[:knife][:supermarket_site] = supermarket }
|
|
41
41
|
|
|
42
42
|
def download_cookbook_to(download_path)
|
|
@@ -29,11 +29,11 @@ class Chef
|
|
|
29
29
|
:short => '-m SUPERMARKET_SITE',
|
|
30
30
|
:long => '--supermarket-site SUPERMARKET_SITE',
|
|
31
31
|
:description => 'Supermarket Site',
|
|
32
|
-
:default => 'supermarket.getchef.com',
|
|
32
|
+
:default => 'https://supermarket.getchef.com',
|
|
33
33
|
:proc => Proc.new { |supermarket| Chef::Config[:knife][:supermarket_site] = supermarket }
|
|
34
34
|
|
|
35
35
|
def get_cookbook_list(items=10, start=0, cookbook_collection={})
|
|
36
|
-
cookbooks_url = "
|
|
36
|
+
cookbooks_url = "#{config[:supermarket_site]}/api/v1/cookbooks?items=#{items}&start=#{start}"
|
|
37
37
|
cr = noauth_rest.get_rest(cookbooks_url)
|
|
38
38
|
cr["items"].each do |cookbook|
|
|
39
39
|
cookbook_collection[cookbook["cookbook_name"]] = cookbook
|
|
@@ -29,7 +29,7 @@ class Chef
|
|
|
29
29
|
:short => '-m SUPERMARKET_SITE',
|
|
30
30
|
:long => '--supermarket-site SUPERMARKET_SITE',
|
|
31
31
|
:description => 'Supermarket Site',
|
|
32
|
-
:default => 'supermarket.getchef.com',
|
|
32
|
+
:default => 'https://supermarket.getchef.com',
|
|
33
33
|
:proc => Proc.new { |supermarket| Chef::Config[:knife][:supermarket_site] = supermarket }
|
|
34
34
|
|
|
35
35
|
def run
|
|
@@ -37,7 +37,7 @@ class Chef
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def search_cookbook(query, items=10, start=0, cookbook_collection={})
|
|
40
|
-
cookbooks_url = "
|
|
40
|
+
cookbooks_url = "#{config[:supermarket_site]}/api/v1/search?q=#{query}&items=#{items}&start=#{start}"
|
|
41
41
|
cr = noauth_rest.get_rest(cookbooks_url)
|
|
42
42
|
cr["items"].each do |cookbook|
|
|
43
43
|
cookbook_collection[cookbook["cookbook_name"]] = cookbook
|
|
@@ -35,11 +35,11 @@ class Chef
|
|
|
35
35
|
:short => '-m SUPERMARKET_SITE',
|
|
36
36
|
:long => '--supermarket-site SUPERMARKET_SITE',
|
|
37
37
|
:description => 'Supermarket Site',
|
|
38
|
-
:default => 'supermarket.getchef.com',
|
|
38
|
+
:default => 'https://supermarket.getchef.com',
|
|
39
39
|
:proc => Proc.new { |supermarket| Chef::Config[:knife][:supermarket_site] = supermarket }
|
|
40
40
|
|
|
41
41
|
def do_upload(cookbook_filename, cookbook_category, user_id, user_secret_filename)
|
|
42
|
-
uri = "
|
|
42
|
+
uri = "#{config[:supermarket_site]}/api/v1/cookbooks"
|
|
43
43
|
|
|
44
44
|
category_string = { 'category'=>cookbook_category }.to_json
|
|
45
45
|
|
|
@@ -29,20 +29,20 @@ class Chef
|
|
|
29
29
|
:short => '-m SUPERMARKET_SITE',
|
|
30
30
|
:long => '--supermarket-site SUPERMARKET_SITE',
|
|
31
31
|
:description => 'Supermarket Site',
|
|
32
|
-
:default => 'supermarket.getchef.com',
|
|
32
|
+
:default => 'https://supermarket.getchef.com',
|
|
33
33
|
:proc => Proc.new { |supermarket| Chef::Config[:knife][:supermarket_site] = supermarket }
|
|
34
34
|
|
|
35
35
|
def get_cookbook_data
|
|
36
36
|
case @name_args.length
|
|
37
37
|
when 1
|
|
38
|
-
noauth_rest.get_rest("
|
|
38
|
+
noauth_rest.get_rest("#{config[:supermarket_site]}/api/v1/cookbooks/#{@name_args[0]}")
|
|
39
39
|
when 2
|
|
40
|
-
noauth_rest.get_rest("
|
|
40
|
+
noauth_rest.get_rest("#{config[:supermarket_site]}/api/v1/cookbooks/#{@name_args[0]}/versions/#{name_args[1].gsub('.', '_')}")
|
|
41
41
|
end
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
def get_cookbook_list(items=10, start=0, cookbook_collection={})
|
|
45
|
-
cookbooks_url = "
|
|
45
|
+
cookbooks_url = "#{config[:supermarket_site]}/api/v1/cookbooks?items=#{items}&start=#{start}"
|
|
46
46
|
cr = noauth_rest.get_rest(cookbooks_url)
|
|
47
47
|
cr["items"].each do |cookbook|
|
|
48
48
|
cookbook_collection[cookbook["cookbook_name"]] = cookbook
|
|
@@ -33,7 +33,7 @@ class Chef
|
|
|
33
33
|
:short => '-m SUPERMARKET_SITE',
|
|
34
34
|
:long => '--supermarket-site SUPERMARKET_SITE',
|
|
35
35
|
:description => 'Supermarket Site',
|
|
36
|
-
:default => 'supermarket.getchef.com',
|
|
36
|
+
:default => 'https://supermarket.getchef.com',
|
|
37
37
|
:proc => Proc.new { |supermarket| Chef::Config[:knife][:supermarket_site] = supermarket }
|
|
38
38
|
|
|
39
39
|
def run
|
|
@@ -47,7 +47,7 @@ class Chef
|
|
|
47
47
|
confirm "Do you really want to unshare the cookbook #{@cookbook_name}"
|
|
48
48
|
|
|
49
49
|
begin
|
|
50
|
-
rest.delete_rest "
|
|
50
|
+
rest.delete_rest "#{config[:supermarket_site]}/api/v1/cookbooks/#{@name_args[0]}"
|
|
51
51
|
rescue Net::HTTPServerException => e
|
|
52
52
|
raise e unless e.message =~ /Forbidden/
|
|
53
53
|
ui.error "Forbidden: You must be the maintainer of #{@cookbook_name} to unshare it."
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: knife-supermarket
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Christopher Webber
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-06-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: chef
|
|
@@ -69,3 +69,4 @@ signing_key:
|
|
|
69
69
|
specification_version: 4
|
|
70
70
|
summary: Knife support for interacting with Chef Supermarkets
|
|
71
71
|
test_files: []
|
|
72
|
+
has_rdoc:
|