kuzushi 0.0.7 → 0.0.8
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/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:
|