engineyard-recipes 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.
- data/ChangeLog.md +10 -0
- data/README.md +127 -11
- data/Rakefile +5 -0
- data/engineyard-recipes.gemspec +1 -0
- data/features/clone-recipe.feature +32 -0
- data/features/step_definitions/fixture_project_steps.rb +6 -5
- data/features/support/env.rb +1 -0
- data/fixtures/recipes/blank/README.rdoc +1 -0
- data/lib/engineyard-recipes/cli.rb +10 -14
- data/lib/engineyard-recipes/fetch_uri.rb +59 -0
- data/lib/engineyard-recipes/generators/local_recipe_clone_generator.rb +35 -0
- data/lib/engineyard-recipes/generators/local_recipe_clone_generator/templates/cookbooks/%recipe_name%/definitions/%definition_name%.rb.tt +3 -0
- data/lib/engineyard-recipes/version.rb +1 -1
- metadata +29 -22
- data/features/step_definitions/jenkins_steps.rb +0 -21
- data/fixtures/bin/README.md +0 -4
- data/fixtures/bin/scp +0 -6
- data/fixtures/cookbooks/main/recipes/default.rb +0 -1
- data/fixtures/cookbooks/redis/recipes/default.rb +0 -0
- data/fixtures/jenkins_boot_sequence/jenkins_booting.html +0 -1
- data/fixtures/jenkins_boot_sequence/jenkins_ready.html +0 -1
- data/fixtures/jenkins_boot_sequence/pre_jenkins_booting.html +0 -1
data/ChangeLog.md
ADDED
data/README.md
CHANGED
@@ -2,31 +2,46 @@
|
|
2
2
|
|
3
3
|
Tools to generate, upload, test and apply chef recipes for Engine Yard Cloud.
|
4
4
|
|
5
|
-
|
5
|
+
## Installation
|
6
6
|
|
7
|
-
|
7
|
+
gem install engineyard-recipes
|
8
8
|
|
9
|
-
|
9
|
+
## Quick Guide
|
10
10
|
|
11
11
|
```
|
12
12
|
$ cd /path/to/my/app
|
13
|
-
$ ey-recipes init
|
14
|
-
|
15
|
-
|
13
|
+
$ ey-recipes init # initial scaffolding for cookbooks
|
14
|
+
$ ey-recipes recipe somepackage
|
15
|
+
$ ey-recipes definition somehelpers specific_helper_method
|
16
|
+
$ git clone git://github.com/damm/ey-dnapi.git /tmp/recipes/ey-dnapi
|
17
|
+
$ ey-recipes clone /tmp/recipes/ey-dnapi
|
18
|
+
|
19
|
+
# then to upload and apply to your environment
|
20
|
+
$ ey recipes upload --apply
|
16
21
|
```
|
17
22
|
|
18
|
-
|
23
|
+
## Usage
|
19
24
|
|
20
|
-
|
25
|
+
Getting started:
|
21
26
|
|
22
27
|
```
|
23
|
-
$
|
28
|
+
$ cd /path/to/my/app
|
29
|
+
$ ey-recipes init
|
30
|
+
create cookbooks/main/attributes/recipe.rb
|
31
|
+
create cookbooks/main/definitions/ey_cloud_report.rb
|
32
|
+
create cookbooks/main/libraries/ruby_block.rb
|
33
|
+
create cookbooks/main/libraries/run_for_app.rb
|
34
|
+
create cookbooks/main/recipes/default.rb
|
24
35
|
```
|
25
36
|
|
26
|
-
|
37
|
+
Quickly generate recipes from git repositories or local folders.
|
38
|
+
|
39
|
+
Either repos that describe a recipe such as [ey-dnapi](https://github.com/damm/ey-dnapi):
|
27
40
|
|
28
41
|
```
|
29
|
-
$
|
42
|
+
$ mkdir /tmp/recipes/
|
43
|
+
$ git clone git://github.com/damm/ey-dnapi.git /tmp/recipes/ey-dnapi
|
44
|
+
$ ey-recipes clone /tmp/recipes/ey-dnapi
|
30
45
|
```
|
31
46
|
|
32
47
|
Generate scaffolding for a package/service.
|
@@ -36,6 +51,7 @@ $ ey-recipes recipe newthing
|
|
36
51
|
create cookbooks/newthing/attributes/recipe.rb
|
37
52
|
create cookbooks/newthing/recipes/default.rb
|
38
53
|
create cookbooks/newthing/recipes/install.rb
|
54
|
+
append cookbooks/main/recipes/default.rb
|
39
55
|
```
|
40
56
|
|
41
57
|
Generate scaffolding for helper functions:
|
@@ -44,3 +60,103 @@ Generate scaffolding for helper functions:
|
|
44
60
|
$ ey-recipes definition myhelpers some_helper
|
45
61
|
create cookbooks/mylibrary/definitions/helper1.rb
|
46
62
|
```
|
63
|
+
|
64
|
+
## Community recipe repos to clone
|
65
|
+
|
66
|
+
### Components
|
67
|
+
|
68
|
+
* mongodb [[repo](https://github.com/engineyard/ey-cloud-recipes/tree/master/cookbooks/mongodb)]
|
69
|
+
|
70
|
+
```
|
71
|
+
$ git clone https://github.com/engineyard/ey-cloud-recipes.git /tmp/recipes/ey-cloud-recipes
|
72
|
+
$ ey-recipes clone /tmp/recipes/ey-cloud-recipes/cookbooks/mongodb
|
73
|
+
```
|
74
|
+
|
75
|
+
* [elasticsearch](http://www.elasticsearch.org/)
|
76
|
+
|
77
|
+
```
|
78
|
+
$ git clone https://github.com/damm/ey-elasticsearch.git /tmp/recipes/ey-elasticsearch
|
79
|
+
$ ey-recipes clone /tmp/recipes/ey-elasticsearch -n elasticsearch
|
80
|
+
```
|
81
|
+
|
82
|
+
* [riak](http://basho.com/products/riak-overview/) [[repo](https://github.com/damm/ey-riak)]
|
83
|
+
|
84
|
+
```
|
85
|
+
$ git clone https://github.com/damm/ey-riak.git /tmp/recipes/ey-riak
|
86
|
+
$ ey-recipes clone /tmp/recipes/ey-riak -n riak
|
87
|
+
```
|
88
|
+
|
89
|
+
* [riaksearch](http://basho.com/products/riak-overview/) [[repo](https://github.com/damm/ey-riaksearch)]
|
90
|
+
|
91
|
+
Either use riak above or riaksearch, not both!
|
92
|
+
|
93
|
+
```
|
94
|
+
$ git clone https://github.com/damm/ey-riaksearch.git /tmp/recipes/ey-riaksearch
|
95
|
+
$ ey-recipes clone /tmp/recipes/ey-riaksearch -n riaksearch
|
96
|
+
```
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
### Environment Customizations
|
101
|
+
|
102
|
+
* database.yml [[repo](https://github.com/damm/ey-database)]
|
103
|
+
|
104
|
+
```
|
105
|
+
$ git clone https://github.com/damm/ey-database.git /tmp/recipes/ey-database
|
106
|
+
$ ey-recipes clone /tmp/recipes/ey-database
|
107
|
+
```
|
108
|
+
|
109
|
+
Also install ey-dnapi below.
|
110
|
+
|
111
|
+
### Helpers
|
112
|
+
|
113
|
+
* ey-emerge - additional helpers to install/use masked packages [[repo](https://github.com/damm/ey-emerge)]
|
114
|
+
|
115
|
+
```
|
116
|
+
$ git clone https://github.com/damm/ey-emerge.git /tmp/recipes/ey-emerge
|
117
|
+
$ ey-recipes clone /tmp/recipes/ey-emerge -n emerge
|
118
|
+
```
|
119
|
+
|
120
|
+
* ey-dnapi - access the internal dna.json metadata via `node[:engineyard]` [[repo](https://github.com/damm/ey-dnapi)]
|
121
|
+
|
122
|
+
```
|
123
|
+
$ git clone https://github.com/damm/ey-dnapi.git /tmp/recipes/ey-dnapi
|
124
|
+
$ ey-recipes clone /tmp/recipes/ey-dnapi -n dnapi
|
125
|
+
```
|
126
|
+
|
127
|
+
## Development
|
128
|
+
|
129
|
+
### Tests
|
130
|
+
|
131
|
+
The tests are currently a suite of Cucumber tests that run the generators and assert that specific files are generated. It does not test the generated files/recipes against EY Cloud.
|
132
|
+
|
133
|
+
```
|
134
|
+
bundle exec rake # to run all non-WIP tests
|
135
|
+
bundle exec rake cucumber:wip # to run all WIP tests
|
136
|
+
```
|
137
|
+
|
138
|
+
### CI
|
139
|
+
|
140
|
+
See the latest [CI build results on Travis](http://travis-ci.org/#!/engineyard/engineyard-recipes "Travis CI - Distributed build platform for the open source community") (for ruby 1.8.7, 1.9.3, rbx and jruby)
|
141
|
+
|
142
|
+
From the command line:
|
143
|
+
|
144
|
+
```
|
145
|
+
bundle exec rake travis
|
146
|
+
```
|
147
|
+
|
148
|
+
[](http://travis-ci.org/engineyard/engineyard-recipes)
|
149
|
+
|
150
|
+
Not sure why its failing.
|
151
|
+
|
152
|
+
### Release
|
153
|
+
|
154
|
+
1. Push the changes to master. This triggers the CI build on TravisCI.
|
155
|
+
1. Wait for the build to complete successfully.1. Bump the VERSION number in `lib/engineyard-recipes/version.rb`
|
156
|
+
1. Update the ChangeLog.md file
|
157
|
+
1. Commit the changes
|
158
|
+
1. Release
|
159
|
+
|
160
|
+
```
|
161
|
+
bundle exec rake release
|
162
|
+
```
|
data/Rakefile
CHANGED
@@ -11,6 +11,11 @@ namespace :cucumber do
|
|
11
11
|
task :all => [:ok, :wip]
|
12
12
|
end
|
13
13
|
|
14
|
+
desc "Go to TravisCI status page"
|
15
|
+
task :travis do
|
16
|
+
require "launchy"
|
17
|
+
Launchy.open("http://travis-ci.org/#!/engineyard/engineyard-recipes")
|
18
|
+
end
|
14
19
|
desc 'Alias for cucumber:ok'
|
15
20
|
task :cucumber => 'cucumber:ok'
|
16
21
|
|
data/engineyard-recipes.gemspec
CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_development_dependency("rake", ["~> 0.9.2"])
|
25
25
|
s.add_development_dependency("cucumber", ["~> 1.1.2"])
|
26
26
|
s.add_development_dependency("rspec", ["~> 2.7.0"])
|
27
|
+
s.add_development_dependency("launchy")
|
27
28
|
# s.add_development_dependency("json")
|
28
29
|
# s.add_development_dependency("awesome_print")
|
29
30
|
# s.add_development_dependency("realweb", '~>0.1.6')
|
@@ -6,26 +6,58 @@ Feature: Clone recipe from git repositories
|
|
6
6
|
Given I am in the "rails" project folder
|
7
7
|
When I run local executable "ey-recipes" with arguments "init"
|
8
8
|
|
9
|
+
Scenario: Clone a single recipe from local folder with default recipe name
|
10
|
+
Given I am have a local recipe "blank" at "/tmp/ey-recipes/blank"
|
11
|
+
When I run local executable "ey-recipes" with arguments "clone /tmp/ey-recipes/blank"
|
12
|
+
Then file "cookbooks/blank/README.rdoc" is created
|
13
|
+
And file "cookbooks/blank/README.rdoc" contains "This is a local recipe"
|
14
|
+
And file "cookbooks/main/recipes/default.rb" contains "require_recipe 'blank'"
|
15
|
+
And I should see exactly
|
16
|
+
"""
|
17
|
+
exist cookbooks
|
18
|
+
create cookbooks/blank/README.rdoc
|
19
|
+
append cookbooks/main/recipes/default.rb
|
20
|
+
"""
|
21
|
+
|
22
|
+
Scenario: Clone a single recipe from local folder with alternate recipe name
|
23
|
+
Given I am have a local recipe "blank" at "/tmp/ey-recipes/blank"
|
24
|
+
When I run local executable "ey-recipes" with arguments "clone /tmp/ey-recipes/blank --name myrecipe"
|
25
|
+
Then file "cookbooks/myrecipe/README.rdoc" is created
|
26
|
+
And file "cookbooks/myrecipe/README.rdoc" contains "This is a local recipe"
|
27
|
+
And file "cookbooks/main/recipes/default.rb" contains "require_recipe 'myrecipe'"
|
28
|
+
And I should see exactly
|
29
|
+
"""
|
30
|
+
exist cookbooks
|
31
|
+
create cookbooks/myrecipe/README.rdoc
|
32
|
+
append cookbooks/main/recipes/default.rb
|
33
|
+
"""
|
34
|
+
|
9
35
|
@wip
|
10
36
|
Scenario: Clone a recipe from engineyard/ey-cloud-recipes repository
|
37
|
+
Given I am have a local recipe "blank" at "/tmp/ey-recipes/blank"
|
11
38
|
When I run local executable "ey-recipes" with arguments "clone git://github.com/engineyard/ey-cloud-recipes.git --recipe emerge"
|
12
39
|
Then file "cookbooks/emerge/recipes/default.rb" is created
|
13
40
|
And I should see exactly
|
14
41
|
"""
|
42
|
+
exist cookbooks
|
15
43
|
create cookbooks/emerge/definitions/enable_package.rb
|
16
44
|
create cookbooks/emerge/definitions/package_use.rb
|
17
45
|
create cookbooks/emerge/definitions/update_file.rb
|
18
46
|
create cookbooks/emerge/README.rdoc
|
47
|
+
append cookbooks/main/recipes/default.rb
|
19
48
|
"""
|
20
49
|
|
21
50
|
@wip
|
22
51
|
Scenario: Clone repository as an entire recipe
|
52
|
+
Given I am have a local recipe "blank" at "/tmp/ey-recipes/blank"
|
23
53
|
When I run local executable "ey-recipes" with arguments "clone git://github.com/damm/ey-dnapi.git --name dnapi"
|
24
54
|
Then file "cookbooks/dnapi/libraries/engineyard.rb" is created
|
25
55
|
And I should see exactly
|
26
56
|
"""
|
57
|
+
exist cookbooks
|
27
58
|
create cookbooks/dnapi/libraries/engineyard.rb
|
28
59
|
create cookbooks/dnapi/README.rdoc
|
60
|
+
append cookbooks/main/recipes/default.rb
|
29
61
|
"""
|
30
62
|
|
31
63
|
|
@@ -6,9 +6,10 @@ Given /^I am in the "([^\"]*)" project folder$/ do |project|
|
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
Given /^I
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
Given /^I am have a local recipe "([^\"]*)" at "\/tmp\/ey-recipes\/([^"]*)"$/ do |name, repeat_name|
|
10
|
+
name.should == repeat_name
|
11
|
+
fixture_recipe = File.join(@fixtures_path, "recipes", name)
|
12
|
+
FileUtils.rm_rf(File.basename(@tmp_recipes_path))
|
13
|
+
FileUtils.mkdir_p(File.basename(@tmp_recipes_path))
|
14
|
+
FileUtils.cp_r(fixture_recipe, @tmp_recipes_path)
|
14
15
|
end
|
data/features/support/env.rb
CHANGED
@@ -10,6 +10,7 @@ Before do
|
|
10
10
|
@home_path = File.expand_path(File.join(@tmp_root, "home"))
|
11
11
|
@lib_path = File.expand_path(File.dirname(__FILE__) + "/../../lib")
|
12
12
|
@fixtures_path = File.expand_path(File.dirname(__FILE__) + "/../../fixtures")
|
13
|
+
@tmp_recipes_path = "/tmp/ey-recipes"
|
13
14
|
FileUtils.rm_rf @tmp_root
|
14
15
|
FileUtils.mkdir_p @home_path
|
15
16
|
ENV['HOME'] = @home_path
|
@@ -0,0 +1 @@
|
|
1
|
+
This is a local recipe
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'thor'
|
2
2
|
require 'engineyard-recipes/thor-ext/actions/directory'
|
3
|
+
require 'engineyard-recipes/fetch_uri'
|
3
4
|
|
4
5
|
module Engineyard
|
5
6
|
module Recipes
|
@@ -23,6 +24,15 @@ module Engineyard
|
|
23
24
|
Engineyard::Recipes::Generators::DefinitionGenerator.start([recipe_name, definition_name])
|
24
25
|
end
|
25
26
|
|
27
|
+
desc "clone URI", "Clone a recipe into cookbook. URI can be git or local path."
|
28
|
+
method_option :name, :aliases => ['-n'], :desc => "Specify name of recipe. Defaults to base name."
|
29
|
+
def clone(folder_path) # TODO support git URIs
|
30
|
+
require 'engineyard-recipes/generators/local_recipe_clone_generator'
|
31
|
+
generator = Engineyard::Recipes::Generators::LocalRecipeCloneGenerator
|
32
|
+
local_cookbook_path, recipe_name = FetchUri.fetch_recipe(folder_path, generator.source_root, options["name"])
|
33
|
+
generator.start([recipe_name])
|
34
|
+
end
|
35
|
+
|
26
36
|
desc "version", "show version information"
|
27
37
|
def version
|
28
38
|
require 'engineyard-recipes/version'
|
@@ -46,20 +56,6 @@ module Engineyard
|
|
46
56
|
exit
|
47
57
|
end
|
48
58
|
|
49
|
-
# Returns the [host, port] for the target Recipes CI server
|
50
|
-
def host_port(options)
|
51
|
-
require "recipes"
|
52
|
-
require "recipes/config"
|
53
|
-
if base_uri = ::Recipes::Config.config['base_uri']
|
54
|
-
uri = URI.parse(::Recipes::Config.config['base_uri'])
|
55
|
-
host = uri.host
|
56
|
-
port = uri.port
|
57
|
-
end
|
58
|
-
host = options["host"] if options["host"]
|
59
|
-
port = options["port"] || port || '80'
|
60
|
-
[host, port]
|
61
|
-
end
|
62
|
-
|
63
59
|
def no_environments_discovered
|
64
60
|
say "No environments with name recipes, recipes_server, recipes_production, recipes_server_production.", :red
|
65
61
|
say "Either:"
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Engineyard::Recipes
|
2
|
+
module FetchUri
|
3
|
+
extend self
|
4
|
+
|
5
|
+
# Fetch the target at URI (git url or local folder path)
|
6
|
+
#
|
7
|
+
# Returns a tuple:
|
8
|
+
# * path to a local folder structure that contains "cookbooks/<recipe name>"
|
9
|
+
# * recipe_name
|
10
|
+
def fetch_recipe(uri, source_root, recipe_name = nil)
|
11
|
+
if File.exists?(uri)
|
12
|
+
normalize_fetched_project(uri, source_root, recipe_name)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# Takes a folder that is either a cookbooks/<recipes> structure, or
|
17
|
+
# assumed to be a singular <recipe>/
|
18
|
+
# Copies it into +store_path+ and resulting folder
|
19
|
+
# guaranteed to be in cookbooks/<recipes> structure
|
20
|
+
#
|
21
|
+
# For example, if the +path+ is:
|
22
|
+
# path/
|
23
|
+
# ey-dnapi/
|
24
|
+
# libraries/
|
25
|
+
# engineyard.rb
|
26
|
+
#
|
27
|
+
# Then the resulting +store_path+ will be:
|
28
|
+
# tmpdir/
|
29
|
+
# cookbooks/
|
30
|
+
# ey-dnapi/
|
31
|
+
# libraries/
|
32
|
+
# engineyard.rb
|
33
|
+
#
|
34
|
+
# If +path+/cookbooks exists, then +store_path+
|
35
|
+
# will be a duplicate of +path+
|
36
|
+
#
|
37
|
+
# Can override the +<recipe>+ name with +recipe_name+
|
38
|
+
#
|
39
|
+
# Returns a tuple:
|
40
|
+
# * path to a local folder structure that contains "cookbooks/<recipe name>"
|
41
|
+
# * recipe_name
|
42
|
+
def normalize_fetched_project(path, store_path, recipe_name = nil)
|
43
|
+
recipe_name ||= File.basename(path)
|
44
|
+
FileUtils.rm_rf(store_path)
|
45
|
+
FileUtils.mkdir_p(store_path)
|
46
|
+
initial_storage = Dir.mktmpdir
|
47
|
+
initial_storage_cookbooks = File.join(initial_storage, "cookbooks")
|
48
|
+
if File.directory?(File.join(path, "cookbooks"))
|
49
|
+
# FIXME untested
|
50
|
+
FileUtils.cp_r("#{path}/", initial_storage)
|
51
|
+
else
|
52
|
+
FileUtils.mkdir_p(initial_storage_cookbooks)
|
53
|
+
FileUtils.cp_r(path, File.join(initial_storage, "cookbooks", recipe_name))
|
54
|
+
end
|
55
|
+
FileUtils.cp_r(initial_storage_cookbooks, store_path)
|
56
|
+
[store_path, recipe_name]
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'thor/group'
|
2
|
+
|
3
|
+
module Engineyard::Recipes
|
4
|
+
module Generators
|
5
|
+
class LocalRecipeCloneGenerator < Thor::Group
|
6
|
+
include Thor::Actions
|
7
|
+
|
8
|
+
argument :recipe_name
|
9
|
+
|
10
|
+
def self.source_root
|
11
|
+
@tmpdir ||= Dir.mktmpdir
|
12
|
+
end
|
13
|
+
|
14
|
+
def install_cookbooks
|
15
|
+
directory "cookbooks"
|
16
|
+
end
|
17
|
+
|
18
|
+
def auto_require_package
|
19
|
+
file = "cookbooks/main/recipes/default.rb"
|
20
|
+
file_path = File.join(destination_root, "cookbooks/main/recipes/default.rb")
|
21
|
+
unless File.exists?(file_path)
|
22
|
+
puts "Skipping auto-require of package recipe: #{file} is missing"
|
23
|
+
else
|
24
|
+
require_recipe = "require_recipe '#{recipe_name}'"
|
25
|
+
append_to_file file, require_recipe
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
def say(msg, color = nil)
|
31
|
+
color ? shell.say(msg, color) : shell.say(msg)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: engineyard-recipes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-11-15 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
16
|
-
requirement: &
|
16
|
+
requirement: &70096827738600 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.14.6
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70096827738600
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: engineyard
|
27
|
-
requirement: &
|
27
|
+
requirement: &70096827735860 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.4.6
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70096827735860
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &70096827733600 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.9.2
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70096827733600
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: cucumber
|
49
|
-
requirement: &
|
49
|
+
requirement: &70096827730720 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.1.2
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70096827730720
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rspec
|
60
|
-
requirement: &
|
60
|
+
requirement: &70096827722540 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,18 @@ dependencies:
|
|
65
65
|
version: 2.7.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70096827722540
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: launchy
|
71
|
+
requirement: &70096827719420 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70096827719420
|
69
80
|
description: Tools to generate, upload, test and apply chef recipes for Engine Yard
|
70
81
|
Cloud.
|
71
82
|
email:
|
@@ -77,6 +88,7 @@ extra_rdoc_files: []
|
|
77
88
|
files:
|
78
89
|
- .gitignore
|
79
90
|
- .travis.yml
|
91
|
+
- ChangeLog.md
|
80
92
|
- Gemfile
|
81
93
|
- README.md
|
82
94
|
- Rakefile
|
@@ -89,21 +101,15 @@ files:
|
|
89
101
|
- features/step_definitions/api_steps.rb
|
90
102
|
- features/step_definitions/common_steps.rb
|
91
103
|
- features/step_definitions/fixture_project_steps.rb
|
92
|
-
- features/step_definitions/jenkins_steps.rb
|
93
104
|
- features/support/common.rb
|
94
105
|
- features/support/env.rb
|
95
106
|
- features/support/matchers.rb
|
96
|
-
- fixtures/bin/README.md
|
97
|
-
- fixtures/bin/scp
|
98
|
-
- fixtures/cookbooks/main/recipes/default.rb
|
99
|
-
- fixtures/cookbooks/redis/recipes/default.rb
|
100
|
-
- fixtures/jenkins_boot_sequence/jenkins_booting.html
|
101
|
-
- fixtures/jenkins_boot_sequence/jenkins_ready.html
|
102
|
-
- fixtures/jenkins_boot_sequence/pre_jenkins_booting.html
|
103
107
|
- fixtures/projects/rails/Gemfile
|
104
108
|
- fixtures/projects/rails/Rakefile
|
109
|
+
- fixtures/recipes/blank/README.rdoc
|
105
110
|
- lib/engineyard-recipes.rb
|
106
111
|
- lib/engineyard-recipes/cli.rb
|
112
|
+
- lib/engineyard-recipes/fetch_uri.rb
|
107
113
|
- lib/engineyard-recipes/generators/definition_generator.rb
|
108
114
|
- lib/engineyard-recipes/generators/definition_generator/templates/cookbooks/%recipe_name%/definitions/%definition_name%.rb.tt
|
109
115
|
- lib/engineyard-recipes/generators/init_generator.rb
|
@@ -112,6 +118,8 @@ files:
|
|
112
118
|
- lib/engineyard-recipes/generators/init_generator/templates/cookbooks/main/libraries/ruby_block.rb
|
113
119
|
- lib/engineyard-recipes/generators/init_generator/templates/cookbooks/main/libraries/run_for_app.rb
|
114
120
|
- lib/engineyard-recipes/generators/init_generator/templates/cookbooks/main/recipes/default.rb
|
121
|
+
- lib/engineyard-recipes/generators/local_recipe_clone_generator.rb
|
122
|
+
- lib/engineyard-recipes/generators/local_recipe_clone_generator/templates/cookbooks/%recipe_name%/definitions/%definition_name%.rb.tt
|
115
123
|
- lib/engineyard-recipes/generators/recipe_generator.rb
|
116
124
|
- lib/engineyard-recipes/generators/recipe_generator/templates/cookbooks/%recipe_name%/attributes/recipe.rb.tt
|
117
125
|
- lib/engineyard-recipes/generators/recipe_generator/templates/cookbooks/%recipe_name%/recipes/default.rb.tt
|
@@ -132,7 +140,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
132
140
|
version: '0'
|
133
141
|
segments:
|
134
142
|
- 0
|
135
|
-
hash:
|
143
|
+
hash: 1147243042889159238
|
136
144
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
145
|
none: false
|
138
146
|
requirements:
|
@@ -141,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
141
149
|
version: '0'
|
142
150
|
segments:
|
143
151
|
- 0
|
144
|
-
hash:
|
152
|
+
hash: 1147243042889159238
|
145
153
|
requirements: []
|
146
154
|
rubyforge_project: engineyard-recipes
|
147
155
|
rubygems_version: 1.8.6
|
@@ -156,7 +164,6 @@ test_files:
|
|
156
164
|
- features/step_definitions/api_steps.rb
|
157
165
|
- features/step_definitions/common_steps.rb
|
158
166
|
- features/step_definitions/fixture_project_steps.rb
|
159
|
-
- features/step_definitions/jenkins_steps.rb
|
160
167
|
- features/support/common.rb
|
161
168
|
- features/support/env.rb
|
162
169
|
- features/support/matchers.rb
|
@@ -1,21 +0,0 @@
|
|
1
|
-
Given /^I want to fake out the boot sequence of Recipes$/ do
|
2
|
-
base_path = File.join(File.dirname(__FILE__) + "/../../fixtures/Recipes_boot_sequence/")
|
3
|
-
FakeWeb.register_uri(:get, "http://app-master-hostname.compute-1.amazonaws.com/", [
|
4
|
-
{:body => File.read(base_path + "pre_Recipes_booting.html")},
|
5
|
-
{:body => File.read(base_path + "Recipes_booting.html")},
|
6
|
-
{:body => File.read(base_path + "Recipes_ready.html")}
|
7
|
-
])
|
8
|
-
end
|
9
|
-
|
10
|
-
Given /^I have public key "([^"]*)" on host "([^"]*)"$/ do |public_key_value, host|
|
11
|
-
mock_target = File.expand_path("../../../tmp/scp_mock", __FILE__)
|
12
|
-
File.open(mock_target, "w") { |file| file << public_key_value }
|
13
|
-
end
|
14
|
-
|
15
|
-
Given /^I set "([^"]*)" as the default Recipes server$/ do |host|
|
16
|
-
require "Recipes"
|
17
|
-
require "Recipes/config"
|
18
|
-
Recipes::Api.setup_base_url(:host => host, :port => 80)
|
19
|
-
Recipes::Api.send(:cache_base_uri)
|
20
|
-
end
|
21
|
-
|
data/fixtures/bin/README.md
DELETED
data/fixtures/bin/scp
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require_recipe 'redis'
|
File without changes
|
@@ -1 +0,0 @@
|
|
1
|
-
Please wait while Recipes is getting ready to work
|
@@ -1 +0,0 @@
|
|
1
|
-
Recipes is up!
|
@@ -1 +0,0 @@
|
|
1
|
-
This is some page before the instance is launched.
|