emeril 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -0
- data/.travis.yml +25 -13
- data/CHANGELOG.md +16 -0
- data/Gemfile +9 -0
- data/Guardfile +20 -7
- data/README.md +29 -16
- data/Rakefile +15 -10
- data/emeril.gemspec +23 -20
- data/lib/emeril.rb +6 -6
- data/lib/emeril/category.rb +9 -5
- data/lib/emeril/git_tagger.rb +16 -12
- data/lib/emeril/logging.rb +1 -1
- data/lib/emeril/metadata_chopper.rb +8 -8
- data/lib/emeril/publisher.rb +13 -12
- data/lib/emeril/rake.rb +1 -1
- data/lib/emeril/rake_tasks.rb +4 -4
- data/lib/emeril/releaser.rb +18 -10
- data/lib/emeril/thor.rb +1 -1
- data/lib/emeril/thor_tasks.rb +3 -3
- data/lib/emeril/version.rb +1 -1
- data/spec/fixtures/vcr_cassettes/known_cookbook.yml +28 -23
- data/spec/fixtures/vcr_cassettes/new_release.yml +83 -63
- data/spec/fixtures/vcr_cassettes/nonexistant_cookbook.yml +28 -16
- data/spec/integration/new_release_spec.rb +15 -12
- data/spec/integration/skip_publish_spec.rb +22 -14
- data/spec/spec_helper.rb +56 -37
- data/spec/unit/emeril/category_spec.rb +9 -8
- data/spec/unit/emeril/git_tagger_spec.rb +7 -7
- data/spec/unit/emeril/metadata_chopper_spec.rb +3 -3
- data/spec/unit/emeril/publisher_spec.rb +15 -15
- data/spec/unit/emeril/releaser_spec.rb +44 -13
- metadata +43 -70
- data/.tailor +0 -106
data/lib/emeril/logging.rb
CHANGED
@@ -4,7 +4,7 @@ module Emeril
|
|
4
4
|
|
5
5
|
# Exception class raised when there is a metadata.rb parsing issue.
|
6
6
|
#
|
7
|
-
class MetadataParseError < StandardError
|
7
|
+
class MetadataParseError < StandardError; end
|
8
8
|
|
9
9
|
# A rather insane and questionable class to quickly consume a metadata.rb
|
10
10
|
# file and return the cookbook name and version attributes.
|
@@ -22,16 +22,16 @@ module Emeril
|
|
22
22
|
# @param metadata_file [String] path to a metadata.rb file
|
23
23
|
#
|
24
24
|
def initialize(metadata_file)
|
25
|
-
|
26
|
-
%w
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
instance_eval(IO.read(metadata_file), metadata_file)
|
26
|
+
%w[name version].map(&:to_sym).each do |attr|
|
27
|
+
next unless self[attr].nil?
|
28
|
+
|
29
|
+
raise MetadataParseError,
|
30
|
+
"Missing attribute `#{attr}' must be set in #{metadata_file}"
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
def method_missing(meth, *args, &
|
34
|
+
def method_missing(meth, *args, &_block)
|
35
35
|
self[meth] = args.first
|
36
36
|
end
|
37
37
|
end
|
data/lib/emeril/publisher.rb
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
3
|
+
require "chef/cookbook_uploader"
|
4
|
+
require "chef/cookbook_loader"
|
5
|
+
require "chef/cookbook_site_streaming_uploader"
|
6
|
+
require "chef/knife/cookbook_site_share"
|
7
|
+
require "chef/knife/core/ui"
|
8
|
+
require "chef/mixin/command"
|
9
|
+
require "fileutils"
|
10
|
+
require "tmpdir"
|
10
11
|
|
11
|
-
require
|
12
|
+
require "emeril/logging"
|
12
13
|
|
13
14
|
module Emeril
|
14
15
|
|
@@ -60,7 +61,7 @@ module Emeril
|
|
60
61
|
attr_reader :logger, :source_path, :name, :category, :knife_class
|
61
62
|
|
62
63
|
def validate_chef_config!
|
63
|
-
%w
|
64
|
+
%w[node_name client_key].map(&:to_sym).each do |attr|
|
64
65
|
raise "Chef::Config[:#{attr}] must be set" if ::Chef::Config[attr].nil?
|
65
66
|
end
|
66
67
|
end
|
@@ -75,12 +76,12 @@ module Emeril
|
|
75
76
|
end
|
76
77
|
|
77
78
|
def cookbook_files
|
78
|
-
entries = %w
|
79
|
+
entries = %w[
|
79
80
|
README.* CHANGELOG.* metadata.{json,rb} attributes definitions
|
80
81
|
files libraries providers recipes resources templates
|
81
|
-
|
82
|
+
]
|
82
83
|
|
83
|
-
Dir.glob("#{source_path}/{#{entries.join(
|
84
|
+
Dir.glob("#{source_path}/{#{entries.join(",")}}")
|
84
85
|
end
|
85
86
|
|
86
87
|
def logging_ui(ui)
|
data/lib/emeril/rake.rb
CHANGED
data/lib/emeril/rake_tasks.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "rake/tasklib"
|
4
|
+
require "chef/knife"
|
5
5
|
|
6
|
-
require
|
6
|
+
require "emeril"
|
7
7
|
|
8
8
|
module Emeril
|
9
9
|
|
@@ -30,7 +30,7 @@ module Emeril
|
|
30
30
|
def define
|
31
31
|
metadata = Emeril::MetadataChopper.new("metadata.rb")
|
32
32
|
|
33
|
-
desc "Create git tag for #{metadata[:name]}-#{metadata[:version]}"
|
33
|
+
desc "Create git tag for #{metadata[:name]}-#{metadata[:version]}" \
|
34
34
|
" and push to the Community Site"
|
35
35
|
task "release" do
|
36
36
|
Chef::Knife.new.configure_chef
|
data/lib/emeril/releaser.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
3
|
+
require "emeril/category"
|
4
|
+
require "emeril/git_tagger"
|
5
|
+
require "emeril/metadata_chopper"
|
6
|
+
require "emeril/publisher"
|
7
7
|
|
8
8
|
module Emeril
|
9
9
|
|
@@ -25,7 +25,10 @@ module Emeril
|
|
25
25
|
# @option options [GitTagger] git_tagger a git tagger
|
26
26
|
# @option options [Publisher] publisher a publisher
|
27
27
|
# @option options [Boolean] publish_to_community a boolean which
|
28
|
-
# controls if the cookbook will published on the Community Site
|
28
|
+
# controls if the cookbook will published on the Community Site, now
|
29
|
+
# the Supermarket site (the default is to publish)
|
30
|
+
# @option options [Boolean] publish_to_supermarket a boolean which
|
31
|
+
# controls if the cookbook will published on the Supermarket site (the
|
29
32
|
# default is to publish)
|
30
33
|
# @raise [ArgumentError] if any required options are not set
|
31
34
|
#
|
@@ -36,15 +39,18 @@ module Emeril
|
|
36
39
|
@metadata = options.fetch(:metadata) { default_metadata }
|
37
40
|
@category = options.fetch(:category) { default_category }
|
38
41
|
@git_tagger = options.fetch(:git_tagger) { default_git_tagger }
|
39
|
-
@
|
40
|
-
|
42
|
+
@publish_to_supermarket = options.fetch(
|
43
|
+
:publish_to_supermarket,
|
44
|
+
options.fetch(:publish_to_community, true)
|
45
|
+
)
|
46
|
+
setup_publisher(options.fetch(:publisher, nil))
|
41
47
|
end
|
42
48
|
|
43
49
|
# Tags and releases a cookbook.
|
44
50
|
#
|
45
51
|
def run
|
46
52
|
git_tagger.run
|
47
|
-
publisher.run if
|
53
|
+
publisher.run if publish_to_supermarket
|
48
54
|
end
|
49
55
|
|
50
56
|
private
|
@@ -52,7 +58,7 @@ module Emeril
|
|
52
58
|
DEFAULT_CATEGORY = "Other".freeze
|
53
59
|
|
54
60
|
attr_reader :logger, :tag_prefix, :source_path, :metadata,
|
55
|
-
:category, :git_tagger, :publisher, :
|
61
|
+
:category, :git_tagger, :publisher, :publish_to_supermarket
|
56
62
|
|
57
63
|
def default_metadata
|
58
64
|
metadata_file = File.expand_path(File.join(source_path, "metadata.rb"))
|
@@ -77,7 +83,9 @@ module Emeril
|
|
77
83
|
)
|
78
84
|
end
|
79
85
|
|
80
|
-
def
|
86
|
+
def setup_publisher(publisher)
|
87
|
+
return unless publish_to_supermarket
|
88
|
+
|
81
89
|
@publisher = publisher || default_publisher
|
82
90
|
end
|
83
91
|
|
data/lib/emeril/thor.rb
CHANGED
data/lib/emeril/thor_tasks.rb
CHANGED
data/lib/emeril/version.rb
CHANGED
@@ -2,13 +2,15 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri:
|
5
|
+
uri: https://supermarket.getchef.com/api/v1/cookbooks/mysql
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
10
12
|
Accept:
|
11
|
-
-
|
13
|
+
- "*/*"
|
12
14
|
User-Agent:
|
13
15
|
- Ruby
|
14
16
|
response:
|
@@ -16,31 +18,34 @@ http_interactions:
|
|
16
18
|
code: 200
|
17
19
|
message: OK
|
18
20
|
headers:
|
19
|
-
|
20
|
-
-
|
21
|
-
Date:
|
22
|
-
- Sun, 19 May 2013 03:02:46 GMT
|
21
|
+
Cache-Control:
|
22
|
+
- max-age=0, private, must-revalidate
|
23
23
|
Content-Type:
|
24
24
|
- application/json; charset=utf-8
|
25
|
-
|
26
|
-
-
|
27
|
-
|
28
|
-
-
|
25
|
+
Date:
|
26
|
+
- Wed, 06 Aug 2014 03:19:55 GMT
|
27
|
+
Server:
|
28
|
+
- nginx/1.4.6 (Ubuntu)
|
29
29
|
Status:
|
30
30
|
- 200 OK
|
31
|
-
|
32
|
-
-
|
33
|
-
|
34
|
-
-
|
35
|
-
|
36
|
-
-
|
31
|
+
X-Content-Type-Options:
|
32
|
+
- nosniff
|
33
|
+
X-Frame-Options:
|
34
|
+
- SAMEORIGIN
|
35
|
+
X-Request-Id:
|
36
|
+
- 3da4e444-bf0b-4c82-82b8-4ba72edc92fc
|
37
37
|
X-Runtime:
|
38
|
-
- '
|
39
|
-
|
40
|
-
-
|
38
|
+
- '0.089663'
|
39
|
+
X-Xss-Protection:
|
40
|
+
- 1; mode=block
|
41
|
+
Transfer-Encoding:
|
42
|
+
- chunked
|
43
|
+
Connection:
|
44
|
+
- keep-alive
|
41
45
|
body:
|
42
|
-
encoding:
|
43
|
-
string:
|
46
|
+
encoding: UTF-8
|
47
|
+
string: '{"name":"mysql","maintainer":"chef","description":"Provides mysql_service
|
48
|
+
and mysql_client resources","category":"Databases","latest_version":"https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.3.6","external_url":"http://github.com/opscode-cookbooks/mysql","average_rating":null,"created_at":"2009-10-28T19:16:54.000Z","updated_at":"2014-07-30T19:31:16.550Z","deprecated":false,"versions":["https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.3.6","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.3.4","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.3.2","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.3.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.2.12","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.2.10","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.2.8","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.2.6","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.2.4","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.2.2","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.2.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.1.12","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.1.10","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.1.8","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.1.6","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.1.4","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.1.2","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.1.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.0.6","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.0.4","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.0.2","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/5.0.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/4.1.2","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/4.1.1","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/4.1.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/4.0.20","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/4.0.18","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/4.0.14","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/4.0.12","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/4.0.10","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/4.0.8","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/4.0.6","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/4.0.4","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/4.0.2","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/4.0.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/3.0.12","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/3.0.10","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/3.0.8","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/3.0.6","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/3.0.4","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/3.0.2","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/3.0.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/2.1.2","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/2.1.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/2.0.2","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/2.0.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/1.3.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/1.2.6","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/1.2.4","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/1.2.2","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/1.2.1","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/1.0.8","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/1.0.7","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/1.0.6","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/1.0.5","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/1.0.4","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/1.0.3","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/1.0.2","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/1.0.1","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/1.0.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/0.24.4","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/0.24.3","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/0.24.2","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/0.24.1","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/0.24.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/0.23.1","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/0.23.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/0.22.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/0.21.5","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/0.21.3","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/0.21.2","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/0.21.1","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/0.21.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/0.20.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/0.15.0","https://supermarket.getchef.com/api/v1/cookbooks/mysql/versions/0.10.0"],"metrics":{"downloads":{"total":9943859,"versions":{"5.1.2":131969,"1.2.2":132871,"1.0.2":132219,"5.1.10":131934,"1.2.4":132995,"5.1.12":132174,"3.0.2":125750,"3.0.6":124298,"5.0.6":132027,"0.21.3":132338,"5.1.0":131961,"4.1.2":128578,"4.1.0":131934,"5.0.0":131976,"0.21.0":132198,"5.2.4":132003,"5.1.4":131930,"5.2.2":127213,"5.3.0":129413,"2.0.0":132174,"3.0.4":117738,"0.24.3":132205,"1.0.0":132197,"5.3.2":131930,"5.0.2":132034,"3.0.10":132030,"2.0.2":132378,"0.22.0":132190,"0.23.1":132746,"0.20.0":132219,"0.23.0":132243,"1.0.3":132307,"0.21.5":132227,"0.21.2":132318,"4.0.8":131965,"5.2.12":124992,"4.0.18":132117,"5.3.6":130186,"4.0.20":125341,"5.2.10":129444,"3.0.12":121770,"0.24.1":132406,"4.0.6":127469,"0.10.0":132463,"0.15.0":132433,"1.0.5":132178,"0.21.1":132211,"5.2.6":129478,"5.2.8":131932,"5.3.4":129364,"5.1.6":131941,"5.2.0":131983,"1.3.0":127805,"4.1.1":132296,"3.0.8":131984,"5.0.4":131944,"4.0.10":132097,"5.1.8":132067,"4.0.14":132112,"4.0.2":131988,"4.0.4":132321,"4.0.12":131945,"4.0.0":132003,"1.0.8":132332,"3.0.0":117127,"2.1.0":132645,"1.2.1":132334,"0.24.2":132207,"0.24.4":132588,"2.1.2":127954,"1.2.6":132714,"1.0.4":132210,"1.0.7":132204,"1.0.1":132206,"1.0.6":132172,"0.24.0":132214}},"followers":411}}'
|
44
49
|
http_version:
|
45
|
-
recorded_at:
|
46
|
-
recorded_with: VCR 2.
|
50
|
+
recorded_at: Wed, 06 Aug 2014 03:19:55 GMT
|
51
|
+
recorded_with: VCR 2.9.2
|
@@ -2,13 +2,15 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri:
|
5
|
+
uri: https://supermarket.getchef.com/api/v1/cookbooks/emeril
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
10
12
|
Accept:
|
11
|
-
-
|
13
|
+
- "*/*"
|
12
14
|
User-Agent:
|
13
15
|
- Ruby
|
14
16
|
X-Ops-Userid: opsycodesy
|
@@ -17,109 +19,127 @@ http_interactions:
|
|
17
19
|
code: 404
|
18
20
|
message: Not Found
|
19
21
|
headers:
|
20
|
-
|
21
|
-
-
|
22
|
-
Date:
|
23
|
-
- Tue, 27 Aug 2013 04:18:43 GMT
|
22
|
+
Cache-Control:
|
23
|
+
- no-cache
|
24
24
|
Content-Type:
|
25
|
-
-
|
25
|
+
- application/json; charset=utf-8
|
26
|
+
Date:
|
27
|
+
- Wed, 06 Aug 2014 03:34:52 GMT
|
28
|
+
Server:
|
29
|
+
- nginx/1.4.6 (Ubuntu)
|
30
|
+
Status:
|
31
|
+
- 404 Not Found
|
32
|
+
X-Content-Type-Options:
|
33
|
+
- nosniff
|
34
|
+
X-Frame-Options:
|
35
|
+
- SAMEORIGIN
|
36
|
+
X-Request-Id:
|
37
|
+
- 7b4035bc-1d9c-4f57-9d18-118c9355a989
|
38
|
+
X-Runtime:
|
39
|
+
- '0.008624'
|
40
|
+
X-Xss-Protection:
|
41
|
+
- 1; mode=block
|
26
42
|
Content-Length:
|
27
|
-
- '
|
43
|
+
- '87'
|
28
44
|
Connection:
|
29
45
|
- keep-alive
|
30
|
-
Status:
|
31
|
-
- 404 Not Found
|
32
|
-
Cache-Control:
|
33
|
-
- no-cache
|
34
46
|
body:
|
35
|
-
encoding:
|
36
|
-
string:
|
47
|
+
encoding: UTF-8
|
48
|
+
string: '{"error_messages":["Resource does not exist."],"error_code":"NOT_FOUND"}'
|
37
49
|
http_version:
|
38
|
-
recorded_at:
|
50
|
+
recorded_at: Wed, 06 Aug 2014 03:34:53 GMT
|
39
51
|
- request:
|
40
52
|
method: post
|
41
53
|
uri: http://cookbooks.opscode.com/api/v1/cookbooks
|
42
54
|
body:
|
43
55
|
encoding: ASCII-8BIT
|
44
56
|
string: !binary |-
|
45
|
-
|
57
|
+
LS0tLS0tUnVieU11bHRpcGFydENsaWVudDI5MDYwMVpaWlpaDQpDb250ZW50
|
46
58
|
LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9InRhcmJhbGwiOyBmaWxl
|
47
59
|
bmFtZT0iZW1lcmlsLnRneiINCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24v
|
48
|
-
b2N0ZXQtc3RyZWFtDQoNCh+
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
/
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
60
|
+
b2N0ZXQtc3RyZWFtDQoNCh+LCABdouFTAAPtl01vnDAQhvfMr3DptWL53JV6
|
61
|
+
aqrkmEvVe2RgALdgI9ukiqr895rgVVknq1VU2CrKPNLKi2dkjz28gw0dSNZu
|
62
|
+
N2sShuE+y8hTu5taw6GdHqI42YdJHEVJRsIoiaJwQ7JVo7IMSlNpQqk4KxrR
|
63
|
+
nvT71QCctm6cRZHF41wJmPLfgaYl1TT4oQRfeg6zH7s0PZ3/fRg7+c+yXbwh
|
64
|
+
4dKBvMQ7z/9vjxCf0w78z8SfXgb/09hXgiok6zUTfDRdC8ZrovRQVR8mh1bw
|
65
|
+
+u6sV0cZ1+YHcrTfmj2m0JKv7aAb1+EOzP92dOsmty/56BYUorMzsgK4eor0
|
66
|
+
qqdFAyQOwsnUt1RXQnbKGMclPdo19MBL4AWDY4MEM2hnbHSM/NimhroG9by/
|
67
|
+
ELwyEWizwqP+Xop7Vrq9EkxIhdtLtZYsH7QTTi3F0BvfZ0Gy3vG8B6nsXkdB
|
68
|
+
HCS+9/hv+Xf1L/Nl3qs55/SfxHtX/3G0R/1fglH6ZM6hCHh/hXmwHKvXc5X7
|
69
|
+
km49q9nZ+DPperPyYa1HFcRza4xrt3KYjW5V8b+39c1g9f/t5ur69iboyjXm
|
70
|
+
OKd/o3tH/2mC3//L8JF8N2LMgSpNREX04UGhhN4FVv/2rLHOPfD19780S2O8
|
71
|
+
/10CJ/8lVHRo9bLHwLP1P905+d9lUYL1/xKUzKReC/lA/K3u+u0DUHO088wZ
|
72
|
+
7Setgfg5VQ0epxAEQRAEQRAEQRAEQRAEQd4efwDZZB0aACgAAA0KLS0tLS0t
|
73
|
+
UnVieU11bHRpcGFydENsaWVudDI5MDYwMVpaWlpaDQpDb250ZW50LURpc3Bv
|
74
|
+
c2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9ImNvb2tib29rIg0KDQp7ImNhdGVn
|
75
|
+
b3J5IjoiT3RoZXIifQ0KLS0tLS0tUnVieU11bHRpcGFydENsaWVudDI5MDYw
|
76
|
+
MVpaWlpaLS0NCg==
|
65
77
|
headers:
|
66
78
|
Accept:
|
67
79
|
- application/json
|
68
80
|
X-Chef-Version:
|
69
|
-
- 11.
|
81
|
+
- 11.14.2
|
70
82
|
X-Ops-Sign:
|
71
83
|
- algorithm=sha1;version=1.0;
|
72
84
|
X-Ops-Userid: opsycodesy
|
73
85
|
X-Ops-Timestamp:
|
74
|
-
- '
|
86
|
+
- '2014-08-06T03:34:53Z'
|
75
87
|
X-Ops-Content-Hash:
|
76
|
-
-
|
88
|
+
- "{{X-Ops-Content-Hash}}"
|
77
89
|
X-Ops-Authorization-1:
|
78
|
-
-
|
90
|
+
- "{{X-Ops-Authorization-1}}"
|
79
91
|
X-Ops-Authorization-2:
|
80
|
-
-
|
92
|
+
- "{{X-Ops-Authorization-2}}"
|
81
93
|
X-Ops-Authorization-3:
|
82
|
-
-
|
94
|
+
- "{{X-Ops-Authorization-3}}"
|
83
95
|
X-Ops-Authorization-4:
|
84
|
-
-
|
96
|
+
- "{{X-Ops-Authorization-4}}"
|
85
97
|
X-Ops-Authorization-5:
|
86
|
-
-
|
98
|
+
- "{{X-Ops-Authorization-5}}"
|
87
99
|
X-Ops-Authorization-6:
|
88
|
-
-
|
100
|
+
- "{{X-Ops-Authorization-6}}"
|
101
|
+
Accept-Encoding:
|
102
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
89
103
|
User-Agent:
|
90
104
|
- Ruby
|
91
105
|
Content-Length:
|
92
|
-
- '
|
106
|
+
- '865'
|
93
107
|
Content-Type:
|
94
|
-
- multipart/form-data; boundary=----
|
108
|
+
- multipart/form-data; boundary=----RubyMultipartClient290601ZZZZZ
|
95
109
|
response:
|
96
110
|
status:
|
97
111
|
code: 201
|
98
112
|
message: Created
|
99
113
|
headers:
|
100
|
-
|
101
|
-
-
|
102
|
-
Date:
|
103
|
-
- Tue, 27 Aug 2013 04:18:45 GMT
|
114
|
+
Cache-Control:
|
115
|
+
- max-age=0, private, must-revalidate
|
104
116
|
Content-Type:
|
105
117
|
- application/json; charset=utf-8
|
106
|
-
|
107
|
-
-
|
108
|
-
|
109
|
-
-
|
118
|
+
Date:
|
119
|
+
- Wed, 06 Aug 2014 03:34:54 GMT
|
120
|
+
Etag:
|
121
|
+
- '"dbad37ee990b7101238a0af7c528570f"'
|
122
|
+
Server:
|
123
|
+
- nginx/1.4.6 (Ubuntu)
|
110
124
|
Status:
|
111
125
|
- 201 Created
|
112
|
-
|
113
|
-
-
|
114
|
-
|
115
|
-
-
|
116
|
-
|
117
|
-
-
|
126
|
+
X-Content-Type-Options:
|
127
|
+
- nosniff
|
128
|
+
X-Frame-Options:
|
129
|
+
- SAMEORIGIN
|
130
|
+
X-Request-Id:
|
131
|
+
- febccd46-222b-492b-b050-63e6b690051b
|
118
132
|
X-Runtime:
|
119
|
-
- '
|
133
|
+
- '1.100020'
|
134
|
+
X-Xss-Protection:
|
135
|
+
- 1; mode=block
|
136
|
+
Content-Length:
|
137
|
+
- '62'
|
138
|
+
Connection:
|
139
|
+
- keep-alive
|
120
140
|
body:
|
121
|
-
encoding:
|
122
|
-
string:
|
141
|
+
encoding: UTF-8
|
142
|
+
string: '{"uri":"http://cookbooks.opscode.com/api/v1/cookbooks/emeril"}'
|
123
143
|
http_version:
|
124
|
-
recorded_at:
|
125
|
-
recorded_with: VCR 2.
|
144
|
+
recorded_at: Wed, 06 Aug 2014 03:34:54 GMT
|
145
|
+
recorded_with: VCR 2.9.2
|