skewer 0.1.0 → 0.1.1
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/.idea/skewer.iml +23 -20
- data/Gemfile.lock +47 -36
- data/Rakefile +2 -2
- data/assets/rubygems.sh +2 -2
- data/bin/skewer +0 -1
- data/features/hooks.feature +23 -9
- data/features/rackspace.feature +9 -9
- data/features/support/puppetcode/manifests/classes/apache.pp +3 -0
- data/features/support/puppetcode/manifests/site.pp +2 -1
- data/features/support/puppetcode/modules/apache/manifests/install.pp +16 -0
- data/features/update.feature +3 -2
- data/hook-test/Gemfile +6 -0
- data/hook-test/features/default_web_page.feature +9 -0
- data/hook-test/features/step_definitions/steps.rb +9 -0
- data/hook-test/features/support/env.rb +3 -0
- data/lib/bootstrapper.rb +1 -1
- data/lib/cli.rb +4 -2
- data/lib/cuke.rb +7 -7
- data/lib/parser.rb +3 -0
- data/lib/rackspace/images.rb +18 -7
- data/lib/rackspace/node.rb +31 -20
- data/lib/rackspace/service.rb +23 -0
- data/lib/skewer/version.rb +1 -1
- data/lib/source.rb +0 -1
- data/skewer.gemspec +1 -1
- data/spec/bootstrapper_spec.rb +1 -1
- data/spec/cuke_spec.rb +0 -11
- data/spec/rackspace/images_spec.rb +1 -1
- data/spec/rackspace/node_spec.rb +1 -2
- data/spec/rackspace/service_spec.rb +19 -0
- data/spec/source_spec.rb +1 -1
- metadata +19 -10
data/.idea/skewer.iml
CHANGED
|
@@ -5,57 +5,60 @@
|
|
|
5
5
|
<orderEntry type="inheritedJdk" />
|
|
6
6
|
<orderEntry type="sourceFolder" forTests="false" />
|
|
7
7
|
<orderEntry type="library" scope="PROVIDED" name="Saikuro (v1.1.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
8
|
-
<orderEntry type="library" scope="PROVIDED" name="activesupport (v3.2.
|
|
8
|
+
<orderEntry type="library" scope="PROVIDED" name="activesupport (v3.2.3, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
9
9
|
<orderEntry type="library" scope="PROVIDED" name="archive-tar-minitar (v0.5.2, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
10
|
+
<orderEntry type="library" scope="PROVIDED" name="arrayfields (v4.7.4, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
10
11
|
<orderEntry type="library" scope="PROVIDED" name="aruba (v0.4.11, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
11
12
|
<orderEntry type="library" scope="PROVIDED" name="builder (v3.0.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
12
|
-
<orderEntry type="library" scope="PROVIDED" name="bundler (v1.1.
|
|
13
|
+
<orderEntry type="library" scope="PROVIDED" name="bundler (v1.1.3, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
13
14
|
<orderEntry type="library" scope="PROVIDED" name="childprocess (v0.3.1, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
14
15
|
<orderEntry type="library" scope="PROVIDED" name="chronic (v0.3.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
15
|
-
<orderEntry type="library" scope="PROVIDED" name="churn (v0.0.
|
|
16
|
+
<orderEntry type="library" scope="PROVIDED" name="churn (v0.0.15, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
16
17
|
<orderEntry type="library" scope="PROVIDED" name="colored (v1.2, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
17
18
|
<orderEntry type="library" scope="PROVIDED" name="cucumber (v1.1.9, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
18
19
|
<orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.1.3, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
19
20
|
<orderEntry type="library" scope="PROVIDED" name="erubis (v2.7.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
20
21
|
<orderEntry type="library" scope="PROVIDED" name="excon (v0.9.6, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
22
|
+
<orderEntry type="library" scope="PROVIDED" name="fattr (v2.2.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
21
23
|
<orderEntry type="library" scope="PROVIDED" name="ffi (v1.0.11, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
22
24
|
<orderEntry type="library" scope="PROVIDED" name="flay (v1.4.3, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
23
25
|
<orderEntry type="library" scope="PROVIDED" name="flog (v2.5.3, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
24
26
|
<orderEntry type="library" scope="PROVIDED" name="fog (v1.1.2, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
25
27
|
<orderEntry type="library" scope="PROVIDED" name="formatador (v0.2.1, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
26
|
-
<orderEntry type="library" scope="PROVIDED" name="gherkin (v2.9.
|
|
28
|
+
<orderEntry type="library" scope="PROVIDED" name="gherkin (v2.9.3, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
27
29
|
<orderEntry type="library" scope="PROVIDED" name="git (v1.2.5, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
28
|
-
<orderEntry type="library" scope="PROVIDED" name="hirb (v0.
|
|
30
|
+
<orderEntry type="library" scope="PROVIDED" name="hirb (v0.5.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
29
31
|
<orderEntry type="library" scope="PROVIDED" name="i18n (v0.6.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
30
32
|
<orderEntry type="library" scope="PROVIDED" name="jeweler (v1.8.3, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
31
|
-
<orderEntry type="library" scope="PROVIDED" name="json (v1.
|
|
32
|
-
<orderEntry type="library" scope="PROVIDED" name="json_pure (v1.6.
|
|
33
|
-
<orderEntry type="library" scope="PROVIDED" name="log4r (v1.1.10, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
33
|
+
<orderEntry type="library" scope="PROVIDED" name="json (v1.6.1, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
34
|
+
<orderEntry type="library" scope="PROVIDED" name="json_pure (v1.6.6, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
34
35
|
<orderEntry type="library" scope="PROVIDED" name="main (v4.7.1, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
36
|
+
<orderEntry type="library" scope="PROVIDED" name="map (v4.3.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
37
|
+
<orderEntry type="library" scope="PROVIDED" name="mario (v0.0.6, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
35
38
|
<orderEntry type="library" scope="PROVIDED" name="metric_fu (v2.1.1, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
36
|
-
<orderEntry type="library" scope="PROVIDED" name="mime-types (v1.
|
|
39
|
+
<orderEntry type="library" scope="PROVIDED" name="mime-types (v1.18, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
37
40
|
<orderEntry type="library" scope="PROVIDED" name="multi_json (v1.0.4, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
38
41
|
<orderEntry type="library" scope="PROVIDED" name="net-scp (v1.0.4, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
39
|
-
<orderEntry type="library" scope="PROVIDED" name="net-ssh (v2.
|
|
40
|
-
<orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.5.
|
|
41
|
-
<orderEntry type="library" scope="PROVIDED" name="progressbar (v0.
|
|
42
|
+
<orderEntry type="library" scope="PROVIDED" name="net-ssh (v2.3.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
43
|
+
<orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.5.2, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
44
|
+
<orderEntry type="library" scope="PROVIDED" name="progressbar (v0.11.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
42
45
|
<orderEntry type="library" scope="PROVIDED" name="rails_best_practices (v1.9.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
43
46
|
<orderEntry type="library" scope="PROVIDED" name="rake (v0.9.2.2, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
44
47
|
<orderEntry type="library" scope="PROVIDED" name="rcov (v1.0.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
45
|
-
<orderEntry type="library" scope="PROVIDED" name="rdoc (v3.12, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
46
48
|
<orderEntry type="library" scope="PROVIDED" name="reek (v1.2.8, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
47
49
|
<orderEntry type="library" scope="PROVIDED" name="roodi (v2.1.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
48
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec (v2.
|
|
49
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-core (v2.
|
|
50
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v2.
|
|
51
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v2.
|
|
50
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec (v2.9.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
51
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-core (v2.9.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
52
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v2.9.1, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
53
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v2.9.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
52
54
|
<orderEntry type="library" scope="PROVIDED" name="ruby-hmac (v0.4.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
53
55
|
<orderEntry type="library" scope="PROVIDED" name="ruby2ruby (v1.3.1, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
54
|
-
<orderEntry type="library" scope="PROVIDED" name="ruby_parser (v2.
|
|
55
|
-
<orderEntry type="library" scope="PROVIDED" name="sexp_processor (v3.0.
|
|
56
|
+
<orderEntry type="library" scope="PROVIDED" name="ruby_parser (v2.3.1, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
57
|
+
<orderEntry type="library" scope="PROVIDED" name="sexp_processor (v3.0.7, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
56
58
|
<orderEntry type="library" scope="PROVIDED" name="syntax (v1.0.0, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
57
59
|
<orderEntry type="library" scope="PROVIDED" name="term-ansicolor (v1.0.7, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
58
|
-
<orderEntry type="library" scope="PROVIDED" name="vagrant (
|
|
60
|
+
<orderEntry type="library" scope="PROVIDED" name="vagrant (v1.0.2, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
61
|
+
<orderEntry type="library" scope="PROVIDED" name="virtualbox (v0.7.5, RVM: ruby-1.8.7-p352) [gem]" level="application" />
|
|
59
62
|
</component>
|
|
60
63
|
</module>
|
|
61
64
|
|
data/Gemfile.lock
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
skewer (0.0
|
|
4
|
+
skewer (0.1.0)
|
|
5
5
|
fog (~> 1.1.2)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: http://rubygems.org/
|
|
9
9
|
specs:
|
|
10
10
|
Saikuro (1.1.0)
|
|
11
|
-
activesupport (3.2.
|
|
11
|
+
activesupport (3.2.3)
|
|
12
12
|
i18n (~> 0.6)
|
|
13
13
|
multi_json (~> 1.0)
|
|
14
14
|
archive-tar-minitar (0.5.2)
|
|
15
|
+
arrayfields (4.7.4)
|
|
15
16
|
aruba (0.4.11)
|
|
16
17
|
childprocess (>= 0.2.3)
|
|
17
18
|
cucumber (>= 1.1.1)
|
|
@@ -21,12 +22,22 @@ GEM
|
|
|
21
22
|
childprocess (0.3.1)
|
|
22
23
|
ffi (~> 1.0.6)
|
|
23
24
|
chronic (0.3.0)
|
|
24
|
-
churn (0.0.
|
|
25
|
+
churn (0.0.15)
|
|
26
|
+
arrayfields (= 4.7.4)
|
|
25
27
|
chronic (>= 0.2.3)
|
|
28
|
+
chronic (>= 0.2.3)
|
|
29
|
+
fattr (= 2.2.0)
|
|
30
|
+
hirb (= 0.5.0)
|
|
26
31
|
hirb
|
|
32
|
+
jeweler (= 1.6.4)
|
|
33
|
+
json (= 1.6.1)
|
|
27
34
|
json_pure
|
|
28
35
|
main
|
|
29
|
-
|
|
36
|
+
main (>= 4.6.0)
|
|
37
|
+
map (= 4.3.0)
|
|
38
|
+
ruby_parser (= 2.3.1)
|
|
39
|
+
ruby_parser (~> 2.3)
|
|
40
|
+
sexp_processor (= 3.0.7)
|
|
30
41
|
sexp_processor (~> 3.0.3)
|
|
31
42
|
colored (1.2)
|
|
32
43
|
cucumber (1.1.9)
|
|
@@ -38,6 +49,7 @@ GEM
|
|
|
38
49
|
diff-lcs (1.1.3)
|
|
39
50
|
erubis (2.7.0)
|
|
40
51
|
excon (0.9.6)
|
|
52
|
+
fattr (2.2.0)
|
|
41
53
|
ffi (1.0.11)
|
|
42
54
|
flay (1.4.3)
|
|
43
55
|
ruby_parser (~> 2.0)
|
|
@@ -56,20 +68,20 @@ GEM
|
|
|
56
68
|
nokogiri (~> 1.5.0)
|
|
57
69
|
ruby-hmac
|
|
58
70
|
formatador (0.2.1)
|
|
59
|
-
gherkin (2.9.
|
|
71
|
+
gherkin (2.9.3)
|
|
60
72
|
json (>= 1.4.6)
|
|
61
73
|
git (1.2.5)
|
|
62
|
-
hirb (0.
|
|
74
|
+
hirb (0.5.0)
|
|
63
75
|
i18n (0.6.0)
|
|
64
|
-
jeweler (1.
|
|
76
|
+
jeweler (1.6.4)
|
|
65
77
|
bundler (~> 1.0)
|
|
66
78
|
git (>= 1.2.5)
|
|
67
79
|
rake
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
json_pure (1.6.5)
|
|
71
|
-
log4r (1.1.10)
|
|
80
|
+
json (1.6.1)
|
|
81
|
+
json_pure (1.6.6)
|
|
72
82
|
main (4.7.1)
|
|
83
|
+
map (4.3.0)
|
|
84
|
+
mario (0.0.6)
|
|
73
85
|
metric_fu (2.1.1)
|
|
74
86
|
Saikuro (>= 1.1.0)
|
|
75
87
|
activesupport (>= 2.0.0)
|
|
@@ -82,13 +94,13 @@ GEM
|
|
|
82
94
|
reek (>= 1.2.6)
|
|
83
95
|
roodi (>= 2.1.0)
|
|
84
96
|
syntax
|
|
85
|
-
mime-types (1.
|
|
97
|
+
mime-types (1.18)
|
|
86
98
|
multi_json (1.0.4)
|
|
87
99
|
net-scp (1.0.4)
|
|
88
100
|
net-ssh (>= 1.99.1)
|
|
89
|
-
net-ssh (2.
|
|
90
|
-
nokogiri (1.5.
|
|
91
|
-
progressbar (0.
|
|
101
|
+
net-ssh (2.3.0)
|
|
102
|
+
nokogiri (1.5.2)
|
|
103
|
+
progressbar (0.11.0)
|
|
92
104
|
rails_best_practices (1.9.0)
|
|
93
105
|
activesupport
|
|
94
106
|
colored
|
|
@@ -98,40 +110,39 @@ GEM
|
|
|
98
110
|
sexp_processor
|
|
99
111
|
rake (0.9.2.2)
|
|
100
112
|
rcov (1.0.0)
|
|
101
|
-
rdoc (3.12)
|
|
102
|
-
json (~> 1.4)
|
|
103
113
|
reek (1.2.8)
|
|
104
114
|
ruby2ruby (~> 1.2)
|
|
105
115
|
ruby_parser (~> 2.0)
|
|
106
116
|
sexp_processor (~> 3.0)
|
|
107
117
|
roodi (2.1.0)
|
|
108
118
|
ruby_parser
|
|
109
|
-
rspec (2.
|
|
110
|
-
rspec-core (~> 2.
|
|
111
|
-
rspec-expectations (~> 2.
|
|
112
|
-
rspec-mocks (~> 2.
|
|
113
|
-
rspec-core (2.
|
|
114
|
-
rspec-expectations (2.
|
|
115
|
-
diff-lcs (~> 1.1.
|
|
116
|
-
rspec-mocks (2.
|
|
119
|
+
rspec (2.9.0)
|
|
120
|
+
rspec-core (~> 2.9.0)
|
|
121
|
+
rspec-expectations (~> 2.9.0)
|
|
122
|
+
rspec-mocks (~> 2.9.0)
|
|
123
|
+
rspec-core (2.9.0)
|
|
124
|
+
rspec-expectations (2.9.1)
|
|
125
|
+
diff-lcs (~> 1.1.3)
|
|
126
|
+
rspec-mocks (2.9.0)
|
|
117
127
|
ruby-hmac (0.4.0)
|
|
118
128
|
ruby2ruby (1.3.1)
|
|
119
129
|
ruby_parser (~> 2.0)
|
|
120
130
|
sexp_processor (~> 3.0)
|
|
121
|
-
ruby_parser (2.
|
|
131
|
+
ruby_parser (2.3.1)
|
|
122
132
|
sexp_processor (~> 3.0)
|
|
123
|
-
sexp_processor (3.0.
|
|
133
|
+
sexp_processor (3.0.7)
|
|
124
134
|
syntax (1.0.0)
|
|
125
135
|
term-ansicolor (1.0.7)
|
|
126
|
-
vagrant (0.
|
|
136
|
+
vagrant (0.5.4)
|
|
127
137
|
archive-tar-minitar (= 0.5.2)
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
138
|
+
erubis (>= 2.6.6)
|
|
139
|
+
json (>= 1.4.3)
|
|
140
|
+
mario (~> 0.0.6)
|
|
141
|
+
net-scp (>= 1.0.2)
|
|
142
|
+
net-ssh (>= 2.0.19)
|
|
143
|
+
virtualbox (~> 0.7.3)
|
|
144
|
+
virtualbox (0.7.5)
|
|
145
|
+
ffi (>= 0.6.3)
|
|
135
146
|
|
|
136
147
|
PLATFORMS
|
|
137
148
|
ruby
|
|
@@ -143,4 +154,4 @@ DEPENDENCIES
|
|
|
143
154
|
rcov (~> 1.0.0)
|
|
144
155
|
rspec
|
|
145
156
|
skewer!
|
|
146
|
-
vagrant
|
|
157
|
+
vagrant
|
data/Rakefile
CHANGED
|
@@ -8,7 +8,7 @@ require 'metric_fu'
|
|
|
8
8
|
require 'rake'
|
|
9
9
|
require 'rake/clean'
|
|
10
10
|
require 'rspec/core/rake_task'
|
|
11
|
-
require 'vagrant'
|
|
11
|
+
#require 'vagrant'
|
|
12
12
|
|
|
13
13
|
CLEAN.include ['coverage', 'target', '/tmp/skewer_test_code', '/tmp/more_skewer_test_code', '.skewer.json', '/tmp/skewer*']
|
|
14
14
|
|
|
@@ -56,4 +56,4 @@ RSpec::Core::RakeTask.new("spec:coverage") do |t|
|
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
task :default => [:clean, :spec]
|
|
59
|
-
task :features => :vagrant_up
|
|
59
|
+
#task :features => :vagrant_up
|
data/assets/rubygems.sh
CHANGED
|
@@ -33,7 +33,7 @@ EOF
|
|
|
33
33
|
|
|
34
34
|
chmod 0755 /etc/profile.d/rubygems.sh
|
|
35
35
|
. /etc/profile.d/rubygems.sh
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
apt-get update >/dev/null
|
|
37
|
+
apt-get install -y rsync ruby rubygems libopenssl-ruby ruby-dev build-essential libxml2-dev libxslt-dev
|
|
38
38
|
gem install bundler --no-rdoc --no-ri
|
|
39
39
|
gem install json --no-rdoc --no-ri
|
data/bin/skewer
CHANGED
data/features/hooks.feature
CHANGED
|
@@ -3,13 +3,27 @@ Feature: Hooks
|
|
|
3
3
|
As a user
|
|
4
4
|
I want it to execute a command when it's finihsed
|
|
5
5
|
|
|
6
|
-
Scenario: accept hook on CLI
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
6
|
+
Scenario: accept hook on CLI
|
|
7
|
+
Given a file named "/tmp/skewer_hook" with:
|
|
8
|
+
"""
|
|
9
|
+
#!/bin/bash
|
|
10
|
+
echo $1 > /tmp/skewer_hook_result
|
|
11
|
+
"""
|
|
12
|
+
And I run `chmod +x /tmp/skewer_hook`
|
|
13
|
+
When I run `./bin/skewer provision --cloud stub --image foo --role bar --hook /tmp/skewer_hook`
|
|
14
|
+
Then the file "/tmp/skewer_hook_result" should exist
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
Scenario: run cucumber on completion
|
|
18
|
+
Given I have puppet code in "/tmp/skewer_test_code"
|
|
19
|
+
When I run `./bin/skewer provision --cloud ec2 --role apache --image ami-5c9b4935 --key testytesty --puppetcode /tmp/skewer_test_code --features hook-test/features`
|
|
20
|
+
Then the exit status should be 0
|
|
21
|
+
And the stdout should contain "Puppet run succeeded"
|
|
22
|
+
|
|
23
|
+
#@announce-stdout
|
|
24
|
+
#@announce-stderr
|
|
25
|
+
Scenario: failed cucumber should fail the run
|
|
26
|
+
Given I have puppet code in "/tmp/skewer_test_code"
|
|
27
|
+
When I run `./bin/skewer provision --cloud stub --role foobar --image ami-5c9b4935 --key testytesty --puppetcode /tmp/skewer_test_code --features hook-test/features`
|
|
28
|
+
Then the exit status should not be 0
|
|
15
29
|
|
data/features/rackspace.feature
CHANGED
|
@@ -3,8 +3,7 @@ Feature: provisioning a node on Rackspace
|
|
|
3
3
|
As someone who wants to deploy something to the machine
|
|
4
4
|
I want to run the provision command
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
@announce-stderr
|
|
6
|
+
|
|
8
7
|
Scenario: config in local file
|
|
9
8
|
Given I have puppet code in "/tmp/skewer_test_code"
|
|
10
9
|
And a file named ".skewer.json" with:
|
|
@@ -15,20 +14,21 @@ Feature: provisioning a node on Rackspace
|
|
|
15
14
|
"image_id":"112"
|
|
16
15
|
}
|
|
17
16
|
"""
|
|
18
|
-
When I run `./bin/skewer provision --cloud rackspace --role foobar --image 112`
|
|
17
|
+
When I run `./bin/skewer provision --cloud rackspace --role foobar --image 112 --region lon`
|
|
19
18
|
Then the stdout should contain "Evaluating cloud rackspace"
|
|
20
19
|
And the stdout should contain "Launching a Rackspace node"
|
|
20
|
+
And the exit status should be 0
|
|
21
|
+
|
|
21
22
|
|
|
22
|
-
@announce-stdout
|
|
23
|
-
@announce-stderr
|
|
24
23
|
Scenario: Build a machine with a specific flavor (RAM size)
|
|
25
|
-
Given I run `./bin/skewer provision --cloud rackspace --role foobar --image 112 --flavor 3`
|
|
24
|
+
Given I run `./bin/skewer provision --cloud rackspace --role foobar --image 112 --flavor 3 --puppetcode /tmp/skewer_test_code --region lon`
|
|
26
25
|
Then the stdout should contain "Evaluating cloud rackspace"
|
|
27
26
|
And the stdout should contain "Launching a Rackspace node"
|
|
27
|
+
And the exit status should be 0
|
|
28
|
+
|
|
28
29
|
|
|
29
|
-
@announce-stdout
|
|
30
|
-
@announce-stderr
|
|
31
30
|
Scenario: Build a machine with a symbolic image ID
|
|
32
|
-
Given I run `./bin/skewer provision --cloud rackspace --role foobar --image ubuntu1104 --flavor 2`
|
|
31
|
+
Given I run `./bin/skewer provision --cloud rackspace --role foobar --image ubuntu1104 --flavor 2 --puppetcode /tmp/skewer_test_code --region lon`
|
|
33
32
|
Then the stdout should contain "Evaluating cloud rackspace"
|
|
34
33
|
And the stdout should contain "Launching a Rackspace node"
|
|
34
|
+
And the exit status should be 0
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class apache::install {
|
|
2
|
+
package {
|
|
3
|
+
'apache2': ensure => present
|
|
4
|
+
}
|
|
5
|
+
file {
|
|
6
|
+
'/var/www/index.html':
|
|
7
|
+
ensure => present,
|
|
8
|
+
content => 'Puppet Run Success',
|
|
9
|
+
require => Package['apache2'];
|
|
10
|
+
}
|
|
11
|
+
service {
|
|
12
|
+
'apache2':
|
|
13
|
+
ensure => running,
|
|
14
|
+
require => Package['apache2'];
|
|
15
|
+
}
|
|
16
|
+
}
|
data/features/update.feature
CHANGED
|
@@ -7,6 +7,7 @@ Scenario: run the command without args
|
|
|
7
7
|
When I run `./bin/skewer update`
|
|
8
8
|
Then the exit status should not be 0
|
|
9
9
|
|
|
10
|
+
@wip
|
|
10
11
|
@announce-stdout @announce-stderr
|
|
11
12
|
Scenario: pass in a hostname user and role on passing puppet code
|
|
12
13
|
Given I have access to the internet
|
|
@@ -16,13 +17,13 @@ Scenario: pass in a hostname user and role on passing puppet code
|
|
|
16
17
|
And the stdout should contain "Using Puppet Code from /tmp/skewer_test_code/"
|
|
17
18
|
And the stdout should contain "Puppet run succeeded"
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
@wip
|
|
20
21
|
@announce-stdout @announce-stderr
|
|
21
22
|
Scenario: pass in a hostname user and role on broken puppet code
|
|
22
23
|
Given I have access to the internet
|
|
23
24
|
And I have puppet code in "/tmp/skewer_test_code"
|
|
24
25
|
When I run `./bin/skewer update --host default --user vagrant --role foobroken --puppetcode /tmp/skewer_test_code/`
|
|
25
|
-
Then the exit status should be 0
|
|
26
|
+
Then the exit status should not be 0
|
|
26
27
|
And the stdout should contain "Using Puppet Code from /tmp/skewer_test_code/"
|
|
27
28
|
And the stdout should contain "Puppet failed"
|
|
28
29
|
|
data/hook-test/Gemfile
ADDED
data/lib/bootstrapper.rb
CHANGED
data/lib/cli.rb
CHANGED
|
@@ -34,7 +34,7 @@ module Skewer
|
|
|
34
34
|
when :rackspace
|
|
35
35
|
require 'rackspace/node'
|
|
36
36
|
Skewer.logger.debug 'Launching a Rackspace node'
|
|
37
|
-
node = Rackspace::Node.new(@
|
|
37
|
+
node = Rackspace::Node.new(@config.get('flavor_id'), image, 'default').node
|
|
38
38
|
when :linode
|
|
39
39
|
raise "not implemented"
|
|
40
40
|
when :eucalyptus
|
|
@@ -78,10 +78,12 @@ module Skewer
|
|
|
78
78
|
Puppet.run(node, @options)
|
|
79
79
|
location = @util.get_location(node)
|
|
80
80
|
Hooks.new(location).run
|
|
81
|
+
|
|
82
|
+
Cuke.new(@config.get(:cuke_dir), location).run if @config.get(:cuke_dir)
|
|
81
83
|
Skewer.logger.debug "Node ready\n open http://#{location} or \n ssh -l #{node.username} #{location}"
|
|
82
|
-
Cuke.new(@config.get(:cuke_dir)).run if @config.get(:cuke_dir)
|
|
83
84
|
rescue Exception => exception
|
|
84
85
|
Skewer.logger.debug exception
|
|
86
|
+
raise "Something went wrong, and we killed the node"
|
|
85
87
|
ensure
|
|
86
88
|
destroy
|
|
87
89
|
end
|
data/lib/cuke.rb
CHANGED
|
@@ -6,18 +6,18 @@ module Skewer
|
|
|
6
6
|
# built.
|
|
7
7
|
class Cuke
|
|
8
8
|
class CukeError < RuntimeError; end
|
|
9
|
+
include Skewer
|
|
9
10
|
|
|
10
|
-
def initialize(dir = nil)
|
|
11
|
-
raise "you must provide a valid directory for features to be executed within"
|
|
11
|
+
def initialize(dir = nil, host = nil)
|
|
12
|
+
raise "you must provide a valid directory for features to be executed within" unless File.directory?(dir)
|
|
12
13
|
@dir = dir
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def directory_exists?(dir)
|
|
16
|
-
File.directory?(dir)
|
|
14
|
+
@host = host
|
|
17
15
|
end
|
|
18
16
|
|
|
19
17
|
def run
|
|
20
|
-
|
|
18
|
+
Skewer.logger.debug("Running cucumber hook")
|
|
19
|
+
`cd #{@dir}/.. && bundle install` if File.join(@dir, '..', 'Gemfile')
|
|
20
|
+
result = `cucumber #{@dir} SKEWER_HOST=#{@host}`
|
|
21
21
|
parsed = result.match(/failed/)[0] rescue false
|
|
22
22
|
raise CukeError, "One of the cuke features failed!\n\n#{result}" if parsed
|
|
23
23
|
result
|
data/lib/parser.rb
CHANGED
data/lib/rackspace/images.rb
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
module Skewer
|
|
2
2
|
module Rackspace
|
|
3
3
|
class Images
|
|
4
|
-
attr_reader :
|
|
4
|
+
attr_reader :distributions
|
|
5
5
|
|
|
6
6
|
def initialize
|
|
7
|
-
@
|
|
7
|
+
@distributions = {
|
|
8
8
|
'ubuntu1004' => { :id => 112, :name => "Ubuntu 10.04 LTS"},
|
|
9
9
|
'ubuntu1104' => { :id => 115, :name => "Ubuntu 11.04"},
|
|
10
10
|
'ubuntu1110' => { :id => 119, :name => "Ubuntu 11.10"},
|
|
@@ -13,12 +13,23 @@ module Skewer
|
|
|
13
13
|
|
|
14
14
|
# If provided a name for an image, give back the ID.
|
|
15
15
|
def get_id(name)
|
|
16
|
-
|
|
16
|
+
if name.nil?
|
|
17
|
+
return @distributions['ubuntu1004'][:id]
|
|
18
|
+
end
|
|
17
19
|
name = Integer(name) rescue name
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
|
|
21
|
+
if name.class == Fixnum
|
|
22
|
+
return name
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
unless name.class == String
|
|
26
|
+
return @distributions['ubuntu1004'][:id]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
unless @distributions.has_key?(name)
|
|
30
|
+
raise "An image with the name '#{name}' doesn't exist"
|
|
31
|
+
end
|
|
32
|
+
@distributions[name][:id]
|
|
22
33
|
end
|
|
23
34
|
end
|
|
24
35
|
end
|
data/lib/rackspace/node.rb
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
require 'fog'
|
|
2
2
|
require 'rackspace/images'
|
|
3
|
+
require 'rackspace/service'
|
|
4
|
+
require 'config'
|
|
3
5
|
|
|
4
6
|
module Skewer
|
|
5
7
|
module Rackspace
|
|
@@ -9,42 +11,51 @@ module Skewer
|
|
|
9
11
|
|
|
10
12
|
# By default, boot an Ubuntu 10.04 LTS (lucid) server.
|
|
11
13
|
def initialize(flavor = 1, image = 112, name = 'my_server', instance = nil)
|
|
12
|
-
|
|
14
|
+
region = SkewerConfig.get('region')
|
|
15
|
+
connection = self.class.find_service(region)
|
|
13
16
|
|
|
14
17
|
# Get our SSH key to attach it to the server.
|
|
15
|
-
|
|
16
|
-
@node = instance
|
|
17
|
-
else
|
|
18
|
-
@node = build(connection, flavor, image, name)
|
|
19
|
-
end
|
|
18
|
+
instance ? @node = instance : @node = build(connection, flavor, image, name)
|
|
20
19
|
end
|
|
21
20
|
|
|
22
|
-
def self.find_service
|
|
23
|
-
|
|
24
|
-
:provider => 'Rackspace',
|
|
25
|
-
:rackspace_api_key => Fog.credentials[:rackspace_api_key],
|
|
26
|
-
:rackspace_username => Fog.credentials[:rackspace_username],
|
|
27
|
-
:rackspace_auth_url => "lon.auth.api.rackspacecloud.com")
|
|
21
|
+
def self.find_service(short_region = 'usa')
|
|
22
|
+
Skewer::Rackspace::Service.new(short_region).build
|
|
28
23
|
end
|
|
29
24
|
|
|
30
25
|
def build(connection, flavor, image, name)
|
|
31
|
-
|
|
32
|
-
path = File.expand_path '~/.ssh/id_dsa.pub' if not File.exist? path
|
|
33
|
-
raise "Couldn't find a public key" if not File.exist? path
|
|
34
|
-
key = File.open(path, 'rb').read
|
|
26
|
+
key = find_key()
|
|
35
27
|
|
|
36
|
-
images = Rackspace::Images.new
|
|
28
|
+
images = Skewer::Rackspace::Images.new
|
|
29
|
+
image_id = images.get_id(image)
|
|
37
30
|
options = {
|
|
38
31
|
:flavor_id => flavor,
|
|
39
|
-
:image_id =>
|
|
32
|
+
:image_id => image_id,
|
|
40
33
|
:name => name,
|
|
41
34
|
:public_key => key
|
|
42
35
|
}
|
|
43
|
-
|
|
36
|
+
begin
|
|
37
|
+
connection.servers.bootstrap(options)
|
|
38
|
+
rescue Fog::Compute::Rackspace::NotFound
|
|
39
|
+
raise "Sorry, it looks like there's no such Image Id as #{image_id}"
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def find_key
|
|
44
|
+
ssh_key = nil
|
|
45
|
+
['id_rsa.pub', 'id_dsa.pub', "#{SkewerConfig.instance.get(:key_name)}.pub"].each do |key|
|
|
46
|
+
key_path = File.expand_path(File.join(ENV['HOME'],'.ssh', key))
|
|
47
|
+
if File.exist?(key_path)
|
|
48
|
+
ssh_key = key_path
|
|
49
|
+
break
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
raise "Couldn't find a public key" unless ssh_key
|
|
54
|
+
File.read(ssh_key)
|
|
44
55
|
end
|
|
45
56
|
|
|
46
57
|
def destroy
|
|
47
|
-
@node.destroy
|
|
58
|
+
@node.destroy unless @node.nil?
|
|
48
59
|
end
|
|
49
60
|
|
|
50
61
|
def self.find_by_ip(ip_address, service = self.find_service())
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Skewer
|
|
2
|
+
module Rackspace
|
|
3
|
+
class Service
|
|
4
|
+
def initialize(short_region_name)
|
|
5
|
+
@region = region(short_region_name)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def region(short_region_name = nil)
|
|
9
|
+
short_region_name.to_s == 'lon' ? "lon.auth.api.rackspacecloud.com" :
|
|
10
|
+
"auth.api.rackspacecloud.com"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def build
|
|
14
|
+
Fog::Compute.new(
|
|
15
|
+
:provider => 'Rackspace',
|
|
16
|
+
:rackspace_api_key => Fog.credentials[:rackspace_api_key],
|
|
17
|
+
:rackspace_username => Fog.credentials[:rackspace_username],
|
|
18
|
+
:rackspace_auth_url => @region)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
data/lib/skewer/version.rb
CHANGED
data/lib/source.rb
CHANGED
data/skewer.gemspec
CHANGED
|
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
|
|
|
21
21
|
s.add_development_dependency 'metric_fu'
|
|
22
22
|
s.add_development_dependency 'rcov', '~> 1.0.0'
|
|
23
23
|
s.add_development_dependency 'rspec'
|
|
24
|
-
s.add_development_dependency 'vagrant'
|
|
24
|
+
s.add_development_dependency 'vagrant'
|
|
25
25
|
|
|
26
26
|
s.files = `git ls-files`.split("\n").reject {|path| path =~ /\.gitignore$/ }
|
|
27
27
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/spec/bootstrapper_spec.rb
CHANGED
|
@@ -106,7 +106,7 @@ describe Skewer::Bootstrapper do
|
|
|
106
106
|
|
|
107
107
|
it "should actually run the source step" do
|
|
108
108
|
node = stub('node')
|
|
109
|
-
node.should_receive(:username).at_least(
|
|
109
|
+
node.should_receive(:username).at_least(2).times
|
|
110
110
|
node.should_receive(:ssh)
|
|
111
111
|
bootstrapper = Skewer::Bootstrapper.new(node, {:role => 'foo'})
|
|
112
112
|
lambda {
|
data/spec/cuke_spec.rb
CHANGED
|
@@ -3,22 +3,11 @@ require 'cuke'
|
|
|
3
3
|
|
|
4
4
|
describe Skewer::Cuke do
|
|
5
5
|
it "should only accept valid directories for construction" do
|
|
6
|
-
lambda {
|
|
7
|
-
Skewer::Cuke.new(nil)
|
|
8
|
-
}.should raise_exception(RuntimeError, "you must provide a valid directory for features to be executed within")
|
|
9
|
-
|
|
10
|
-
lambda {
|
|
11
|
-
Skewer::Cuke.new(123)
|
|
12
|
-
}.should raise_exception(RuntimeError, "you must provide a valid directory for features to be executed within")
|
|
13
6
|
|
|
14
7
|
lambda {
|
|
15
8
|
Skewer::Cuke.new('')
|
|
16
9
|
}.should raise_exception(RuntimeError, "you must provide a valid directory for features to be executed within")
|
|
17
10
|
|
|
18
|
-
lambda {
|
|
19
|
-
Skewer::Cuke.new(123)
|
|
20
|
-
}.should raise_exception(RuntimeError, "you must provide a valid directory for features to be executed within")
|
|
21
|
-
|
|
22
11
|
lambda {
|
|
23
12
|
Skewer::Cuke.new('./spec/dir_that_doenst_exist')
|
|
24
13
|
}.should raise_exception(RuntimeError, "you must provide a valid directory for features to be executed within")
|
|
@@ -12,7 +12,7 @@ describe Skewer::Rackspace::Images do
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
it "should have a supported images hash associated with the hash" do
|
|
15
|
-
@images.
|
|
15
|
+
@images.distributions.class.should == Hash
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
it "should provide a default image ID if bad input provided" do
|
data/spec/rackspace/node_spec.rb
CHANGED
|
@@ -21,10 +21,9 @@ describe Skewer::Rackspace::Node do
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
it "should have a delete method" do
|
|
24
|
-
|
|
25
24
|
node = stub('node')
|
|
26
25
|
node.should_receive(:delete).and_return(true)
|
|
27
26
|
Skewer::Rackspace::Node.new(nil, nil, nil,node).node.delete.should == true
|
|
28
|
-
|
|
29
27
|
end
|
|
28
|
+
|
|
30
29
|
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require "rspec"
|
|
2
|
+
require 'rackspace/service'
|
|
3
|
+
|
|
4
|
+
describe "Rackspace::Service" do
|
|
5
|
+
|
|
6
|
+
it "should return the london endpoint if you ask for lon" do
|
|
7
|
+
Skewer::Rackspace::Service.new(nil).region('lon').should == 'lon.auth.api.rackspacecloud.com'
|
|
8
|
+
Skewer::Rackspace::Service.new(nil).region(:lon).should == 'lon.auth.api.rackspacecloud.com'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should default to the US endpoint" do
|
|
12
|
+
Skewer::Rackspace::Service.new(nil).region().should == 'auth.api.rackspacecloud.com'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should even give you the US endpoint if something else leaks" do
|
|
16
|
+
Skewer::Rackspace::Service.new(nil).region('us-east-1').should == 'auth.api.rackspacecloud.com'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
data/spec/source_spec.rb
CHANGED
|
@@ -18,7 +18,7 @@ describe Skewer::Source do
|
|
|
18
18
|
it "should make a parent directory to shut rsync up" do
|
|
19
19
|
node = mock('node')
|
|
20
20
|
node.should_receive(:dns_name).at_least(3).times.and_return('this.should.not.resolve')
|
|
21
|
-
node.should_receive(:username).at_least(
|
|
21
|
+
node.should_receive(:username).at_least(2).times.and_return('jimmy')
|
|
22
22
|
node.should_receive(:ssh)
|
|
23
23
|
source = Skewer::Source.new('/tmp/')
|
|
24
24
|
lambda { source.rsync(node) }.should raise_exception RuntimeError
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: skewer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 25
|
|
5
5
|
prerelease:
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 1
|
|
9
|
-
-
|
|
10
|
-
version: 0.1.
|
|
9
|
+
- 1
|
|
10
|
+
version: 0.1.1
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Julian Simpson
|
|
@@ -16,7 +16,7 @@ autorequire:
|
|
|
16
16
|
bindir: bin
|
|
17
17
|
cert_chain: []
|
|
18
18
|
|
|
19
|
-
date: 2012-
|
|
19
|
+
date: 2012-04-20 00:00:00 Z
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|
|
22
22
|
name: fog
|
|
@@ -112,14 +112,12 @@ dependencies:
|
|
|
112
112
|
requirement: &id007 !ruby/object:Gem::Requirement
|
|
113
113
|
none: false
|
|
114
114
|
requirements:
|
|
115
|
-
- -
|
|
115
|
+
- - ">="
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
|
-
hash:
|
|
117
|
+
hash: 3
|
|
118
118
|
segments:
|
|
119
119
|
- 0
|
|
120
|
-
|
|
121
|
-
- 0
|
|
122
|
-
version: 0.9.0
|
|
120
|
+
version: "0"
|
|
123
121
|
type: :development
|
|
124
122
|
version_requirements: *id007
|
|
125
123
|
description: Runs masterless puppet code on cloud machines
|
|
@@ -158,14 +156,20 @@ files:
|
|
|
158
156
|
- features/step_definitions/cucumber_steps.rb
|
|
159
157
|
- features/step_definitions/delete.rb
|
|
160
158
|
- features/support/env.rb
|
|
159
|
+
- features/support/puppetcode/manifests/classes/apache.pp
|
|
161
160
|
- features/support/puppetcode/manifests/classes/foobar.pp
|
|
162
161
|
- features/support/puppetcode/manifests/classes/foobroken.pp
|
|
163
162
|
- features/support/puppetcode/manifests/classes/role.pp
|
|
164
163
|
- features/support/puppetcode/manifests/site.pp
|
|
164
|
+
- features/support/puppetcode/modules/apache/manifests/install.pp
|
|
165
165
|
- features/support/puppetcode/modules/foo/manifests/bar.pp
|
|
166
166
|
- features/support/puppetcode/modules/foo/manifests/broken.pp
|
|
167
167
|
- features/support/puppetcode/modules/puppet/manifests/munge.pp
|
|
168
168
|
- features/update.feature
|
|
169
|
+
- hook-test/Gemfile
|
|
170
|
+
- hook-test/features/default_web_page.feature
|
|
171
|
+
- hook-test/features/step_definitions/steps.rb
|
|
172
|
+
- hook-test/features/support/env.rb
|
|
169
173
|
- lib/aws/node.rb
|
|
170
174
|
- lib/aws/security_group.rb
|
|
171
175
|
- lib/aws/service.rb
|
|
@@ -185,6 +189,7 @@ files:
|
|
|
185
189
|
- lib/puppet_runtime_error.rb
|
|
186
190
|
- lib/rackspace/images.rb
|
|
187
191
|
- lib/rackspace/node.rb
|
|
192
|
+
- lib/rackspace/service.rb
|
|
188
193
|
- lib/skewer.rb
|
|
189
194
|
- lib/skewer/version.rb
|
|
190
195
|
- lib/source.rb
|
|
@@ -207,6 +212,7 @@ files:
|
|
|
207
212
|
- spec/puppet_node_spec.rb
|
|
208
213
|
- spec/rackspace/images_spec.rb
|
|
209
214
|
- spec/rackspace/node_spec.rb
|
|
215
|
+
- spec/rackspace/service_spec.rb
|
|
210
216
|
- spec/source_spec.rb
|
|
211
217
|
- spec/spec_helper.rb
|
|
212
218
|
- spec/support/features/example.feature
|
|
@@ -244,7 +250,7 @@ rubyforge_project: skewer
|
|
|
244
250
|
rubygems_version: 1.8.17
|
|
245
251
|
signing_key:
|
|
246
252
|
specification_version: 3
|
|
247
|
-
summary: skewer-0.1.
|
|
253
|
+
summary: skewer-0.1.1
|
|
248
254
|
test_files:
|
|
249
255
|
- features/aws.feature
|
|
250
256
|
- features/bootstrapper.feature
|
|
@@ -257,10 +263,12 @@ test_files:
|
|
|
257
263
|
- features/step_definitions/cucumber_steps.rb
|
|
258
264
|
- features/step_definitions/delete.rb
|
|
259
265
|
- features/support/env.rb
|
|
266
|
+
- features/support/puppetcode/manifests/classes/apache.pp
|
|
260
267
|
- features/support/puppetcode/manifests/classes/foobar.pp
|
|
261
268
|
- features/support/puppetcode/manifests/classes/foobroken.pp
|
|
262
269
|
- features/support/puppetcode/manifests/classes/role.pp
|
|
263
270
|
- features/support/puppetcode/manifests/site.pp
|
|
271
|
+
- features/support/puppetcode/modules/apache/manifests/install.pp
|
|
264
272
|
- features/support/puppetcode/modules/foo/manifests/bar.pp
|
|
265
273
|
- features/support/puppetcode/modules/foo/manifests/broken.pp
|
|
266
274
|
- features/support/puppetcode/modules/puppet/manifests/munge.pp
|
|
@@ -281,6 +289,7 @@ test_files:
|
|
|
281
289
|
- spec/puppet_node_spec.rb
|
|
282
290
|
- spec/rackspace/images_spec.rb
|
|
283
291
|
- spec/rackspace/node_spec.rb
|
|
292
|
+
- spec/rackspace/service_spec.rb
|
|
284
293
|
- spec/source_spec.rb
|
|
285
294
|
- spec/spec_helper.rb
|
|
286
295
|
- spec/support/features/example.feature
|