kuzushi 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/lib/kuzushi.rb +25 -9
- metadata +11 -1
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.8
|
data/lib/kuzushi.rb
CHANGED
@@ -3,24 +3,28 @@ require 'json'
|
|
3
3
|
require 'restclient'
|
4
4
|
require 'ostruct'
|
5
5
|
require 'rush'
|
6
|
+
require 'ohai'
|
6
7
|
|
7
8
|
class Kuzushi
|
8
9
|
def initialize(url)
|
9
10
|
@base_url = File.dirname(url)
|
10
11
|
@name = File.basename(url)
|
11
12
|
@config_names = []
|
12
|
-
@
|
13
|
+
@configs = []
|
13
14
|
@packages = []
|
14
15
|
@tasks = []
|
15
16
|
load_config_stack(@name)
|
16
|
-
@
|
17
|
+
@config = @configs.reverse.inject({}) { |i,c| i.merge(c) }
|
18
|
+
ohai = Ohai::System.new
|
19
|
+
ohai.all_plugins
|
20
|
+
@system = ohai.data
|
17
21
|
process_stack
|
18
22
|
end
|
19
23
|
|
20
24
|
def load_config_stack(name)
|
21
25
|
@config_names << name
|
22
|
-
@
|
23
|
-
if import = @
|
26
|
+
@configs << JSON.parse(RestClient.get("#{@base_url}/#{name}"))
|
27
|
+
if import = @configs.last["import"]
|
24
28
|
load_config_stack(import)
|
25
29
|
end
|
26
30
|
end
|
@@ -84,8 +88,9 @@ class Kuzushi
|
|
84
88
|
task "wait for volume #{v.device}" do
|
85
89
|
wait_for_volume v.device
|
86
90
|
end
|
87
|
-
|
88
|
-
|
91
|
+
set_readahead v
|
92
|
+
set_scheduler v
|
93
|
+
check_format v
|
89
94
|
end
|
90
95
|
|
91
96
|
def process_raids(r)
|
@@ -93,12 +98,14 @@ class Kuzushi
|
|
93
98
|
begin
|
94
99
|
shell "mdadm --assemble #{r.device} #{r.drives.join(" ")}"
|
95
100
|
rescue Object => o
|
101
|
+
## sometimes the disks come back with odd error messages - retry seems to be the best option
|
96
102
|
puts "error: #{o.message}"
|
97
103
|
retry
|
98
104
|
end
|
99
105
|
end
|
106
|
+
set_readahead r
|
100
107
|
set_scheduler r
|
101
|
-
check_format
|
108
|
+
check_format r
|
102
109
|
add_package "mdadm"
|
103
110
|
end
|
104
111
|
|
@@ -111,7 +118,8 @@ class Kuzushi
|
|
111
118
|
def process_files(f)
|
112
119
|
fetch("/templates/#{f.template}") do |file|
|
113
120
|
task "setting up #{f.file}" do
|
114
|
-
|
121
|
+
t = ERB.new File.read(file), 0, '<>'
|
122
|
+
File.open(f.file,"w") { |f| f.write(t.render) }
|
115
123
|
end
|
116
124
|
end
|
117
125
|
end
|
@@ -124,6 +132,14 @@ class Kuzushi
|
|
124
132
|
end
|
125
133
|
end
|
126
134
|
|
135
|
+
def set_readahead(v)
|
136
|
+
if v.readahead
|
137
|
+
task "set readahead for #{v.device}" do
|
138
|
+
shell "blockdev --setra #{v.readahead} #{v.device}"
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
127
143
|
def set_scheduler(v)
|
128
144
|
if v.scheduler
|
129
145
|
task "set scheduler for #{v.device}" do
|
@@ -197,7 +213,7 @@ class Kuzushi
|
|
197
213
|
end
|
198
214
|
|
199
215
|
def get(key)
|
200
|
-
@
|
216
|
+
@config[key.to_s]
|
201
217
|
end
|
202
218
|
|
203
219
|
def get_array(key)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kuzushi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Orion Henry
|
@@ -42,6 +42,16 @@ dependencies:
|
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: "0"
|
44
44
|
version:
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: ohai
|
47
|
+
type: :runtime
|
48
|
+
version_requirement:
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: "0"
|
54
|
+
version:
|
45
55
|
description: A tool used by the sumo gem for performing instance setup and management in AWS
|
46
56
|
email: orion@heroku.com
|
47
57
|
executables:
|