kuzushi 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/Rakefile +1 -0
  2. data/VERSION +1 -1
  3. data/lib/kuzushi.rb +25 -9
  4. metadata +11 -1
data/Rakefile CHANGED
@@ -13,6 +13,7 @@ Jeweler::Tasks.new do |s|
13
13
  s.add_dependency "rest-client"
14
14
  s.add_dependency "json"
15
15
  s.add_dependency "rush"
16
+ s.add_dependency "ohai"
16
17
  end
17
18
 
18
19
  Jeweler::RubyforgeTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.7
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
- @config = []
13
+ @configs = []
13
14
  @packages = []
14
15
  @tasks = []
15
16
  load_config_stack(@name)
16
- @merge = @config.reverse.inject({}) { |i,c| i.merge(c) }
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
- @config << JSON.parse(RestClient.get("#{@base_url}/#{name}"))
23
- if import = @config.last["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
- set_scheduler(v)
88
- check_format(v)
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 r
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
- shell "erb #{f.template} > #{f.file}" ## FIXME
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
- @merge[key.to_s]
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.7
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: