ironfan 3.1.7 → 3.2.2

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.
Files changed (63) hide show
  1. data/CHANGELOG.md +11 -0
  2. data/Gemfile +15 -12
  3. data/Rakefile +1 -1
  4. data/VERSION +1 -1
  5. data/config/ubuntu10.04-ironfan.erb +10 -0
  6. data/config/ubuntu11.10-ironfan.erb +10 -0
  7. data/ironfan.gemspec +29 -54
  8. data/lib/chef/knife/bootstrap/centos6.2-ironfan.erb +10 -0
  9. data/lib/chef/knife/bootstrap/ubuntu10.04-ironfan.erb +10 -0
  10. data/lib/chef/knife/bootstrap/ubuntu11.10-ironfan.erb +10 -0
  11. data/lib/chef/knife/cluster_kick.rb +7 -2
  12. data/lib/chef/knife/cluster_launch.rb +3 -0
  13. data/lib/chef/knife/cluster_ssh.rb +3 -3
  14. data/lib/chef/knife/ironfan_knife_common.rb +21 -0
  15. data/lib/chef/knife/ironfan_script.rb +2 -0
  16. data/lib/ironfan/chef_layer.rb +9 -9
  17. data/lib/ironfan/cloud.rb +232 -360
  18. data/lib/ironfan/cluster.rb +3 -3
  19. data/lib/ironfan/compute.rb +26 -40
  20. data/lib/ironfan/deprecated.rb +45 -10
  21. data/lib/ironfan/discovery.rb +1 -1
  22. data/lib/ironfan/dsl_builder.rb +99 -0
  23. data/lib/ironfan/facet.rb +2 -3
  24. data/lib/ironfan/fog_layer.rb +14 -10
  25. data/lib/ironfan/private_key.rb +1 -1
  26. data/lib/ironfan/security_group.rb +46 -44
  27. data/lib/ironfan/server.rb +26 -52
  28. data/lib/ironfan/server_slice.rb +13 -19
  29. data/lib/ironfan/volume.rb +47 -59
  30. data/lib/ironfan.rb +5 -4
  31. metadata +116 -122
  32. data/lib/ironfan/dsl_object.rb +0 -124
  33. data/notes/Backup of ec2-pricing_and_capacity.numbers +0 -0
  34. data/notes/Home.md +0 -45
  35. data/notes/INSTALL-cloud_setup.md +0 -103
  36. data/notes/INSTALL.md +0 -134
  37. data/notes/Ironfan-Roadmap.md +0 -70
  38. data/notes/advanced-superpowers.md +0 -16
  39. data/notes/aws_servers.jpg +0 -0
  40. data/notes/aws_user_key.png +0 -0
  41. data/notes/cookbook-versioning.md +0 -11
  42. data/notes/core_concepts.md +0 -200
  43. data/notes/declaring_volumes.md +0 -3
  44. data/notes/design_notes-aspect_oriented_devops.md +0 -36
  45. data/notes/design_notes-ci_testing.md +0 -169
  46. data/notes/design_notes-cookbook_event_ordering.md +0 -249
  47. data/notes/design_notes-meta_discovery.md +0 -59
  48. data/notes/ec2-pricing_and_capacity.md +0 -69
  49. data/notes/ec2-pricing_and_capacity.numbers +0 -0
  50. data/notes/homebase-layout.txt +0 -102
  51. data/notes/knife-cluster-commands.md +0 -18
  52. data/notes/named-cloud-objects.md +0 -11
  53. data/notes/opscode_org_key.png +0 -0
  54. data/notes/opscode_user_key.png +0 -0
  55. data/notes/philosophy.md +0 -13
  56. data/notes/rake_tasks.md +0 -24
  57. data/notes/renamed-recipes.txt +0 -142
  58. data/notes/silverware.md +0 -85
  59. data/notes/style_guide.md +0 -300
  60. data/notes/tips_and_troubleshooting.md +0 -92
  61. data/notes/version-3_2.md +0 -273
  62. data/notes/walkthrough-hadoop.md +0 -168
  63. data/notes/walkthrough-web.md +0 -166
data/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ # v3.2.0: First refactoring pass in preparation for multi-cloud support
2
+ * Rebuilt the internal models of Ironfan to use gorillib's Field/Model/Builder architecture.
3
+ * [#145](https://github.com/infochimps-labs/ironfan/pull/145): node attribues should be 'normal', not 'override' -- they don't show up as printed on the node otherwise
4
+ * [#144](https://github.com/infochimps-labs/ironfan/pull/144): knife cluster ssh sets exit status based on commands' exit status
5
+ * [#139](https://github.com/infochimps-labs/ironfan/pull/139): Fix detection of hostname in cluster_launch
6
+
7
+ # v3.1.6
8
+ * [#136](https://github.com/infochimps-labs/ironfan/pull/136): Basic support for VPC
9
+ * cleanup of gemspec version constraints, including move to chef 0.10.10
10
+ * CentOS compatibility tweaks to several cookbooks
11
+
1
12
  # v3.1.5: A bug with quoting in bootstrap scripts
2
13
 
3
14
  * Bootstrap scripts with env vars were being interpolated twice, so the bootstrap script quoting was changed to use `'` (single-quote) semantics. I am a bit troubled, because I can't tell when this regression happened. I believe I introduced it while merging @gpaco's bootstrap scripts and didn't notice because the bug strikes most forcefully within the fenced-off 'Is ruby installed?' part. But there's a chance I just screwed over chef 0.10.04 users.
data/Gemfile CHANGED
@@ -3,27 +3,30 @@ source "http://rubygems.org"
3
3
  gem 'chef', ">= 0.10.4"
4
4
  gem 'fog', "~> 1.2"
5
5
  gem 'formatador', "~> 0.2"
6
- gem 'gorillib', "~> 0.1"
6
+ gem 'gorillib', "~> 0.4.2"
7
7
 
8
8
  group :development do
9
- gem 'bundler', ">= 1.1"
9
+ gem 'bundler', "~> 1.1"
10
+ gem 'rake'
11
+ gem 'rspec', "~> 2.8"
12
+ gem 'yard', ">= 0.7"
13
+ #
14
+ gem 'redcarpet', ">= 2.1"
15
+ gem 'oj', ">= 1.2"
16
+ gem 'json', :platform => :jruby
17
+ end
18
+
19
+ group :support do
10
20
  gem 'jeweler', ">= 1.6"
11
- gem 'rspec', "~> 2.5"
12
- gem 'yard', ">= 0.6"
13
- gem 'redcarpet', "~> 2"
21
+ gem 'pry'
22
+ gem 'grit'
14
23
  end
15
24
 
16
25
  group :test do
17
- gem 'rcov', ">= 0.9.9", :platform => :ruby_18
18
26
  gem 'simplecov', ">= 0.5", :platform => :ruby_19
19
27
  #
20
- gem 'ruby_gntp'
21
28
  gem 'guard', "~> 1"
22
29
  gem 'guard-rspec'
23
30
  gem 'guard-yard'
24
- end
25
-
26
- group :support do
27
- gem 'pry'
28
- gem 'grit'
31
+ gem 'ruby_gntp'
29
32
  end
data/Rakefile CHANGED
@@ -21,7 +21,7 @@
21
21
  require 'rubygems' unless defined?(Gem)
22
22
  require 'bundler'
23
23
  begin
24
- Bundler.setup(:default, :development)
24
+ Bundler.setup(:default, :development, :support)
25
25
  rescue Bundler::BundlerError => e
26
26
  $stderr.puts e.message
27
27
  $stderr.puts "Run `bundle install` to install missing gems"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.1.7
1
+ 3.2.2
@@ -107,6 +107,16 @@ EOP
107
107
  awk NF /tmp/knife-bootstrap/validation.pem > /etc/chef/validation.pem
108
108
  <%- end %>
109
109
 
110
+ <% if @chef_config[:encrypted_data_bag_secret] -%>
111
+ (
112
+ cat <<'EOP'
113
+ <%= encrypted_data_bag_secret %>
114
+ EOP
115
+ ) > /tmp/encrypted_data_bag_secret
116
+ awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret
117
+ rm /tmp/encrypted_data_bag_secret
118
+ <% end -%>
119
+
110
120
  echo -e "`date` \n\n**** \n**** Nuking our temp files:\n****\n"
111
121
 
112
122
  cd /tmp
@@ -95,6 +95,16 @@ EOP
95
95
  awk NF /tmp/knife-bootstrap/validation.pem > /etc/chef/validation.pem
96
96
  <%- end %>
97
97
 
98
+ <% if @chef_config[:encrypted_data_bag_secret] -%>
99
+ (
100
+ cat <<'EOP'
101
+ <%= encrypted_data_bag_secret %>
102
+ EOP
103
+ ) > /tmp/encrypted_data_bag_secret
104
+ awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret
105
+ rm /tmp/encrypted_data_bag_secret
106
+ <% end -%>
107
+
98
108
  echo -e "`date` \n\n**** \n**** Nuking our temp files:\n****\n"
99
109
 
100
110
  cd /tmp
data/ironfan.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "ironfan"
8
- s.version = "3.1.7"
8
+ s.version = "3.2.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Infochimps"]
12
- s.date = "2012-07-24"
12
+ s.date = "2012-09-10"
13
13
  s.description = "Ironfan allows you to orchestrate not just systems but clusters of machines. It includes a powerful layer on top of knife and a collection of cloud cookbooks."
14
14
  s.email = "coders@infochimps.com"
15
15
  s.extra_rdoc_files = [
@@ -62,7 +62,7 @@ Gem::Specification.new do |s|
62
62
  "lib/ironfan/compute.rb",
63
63
  "lib/ironfan/deprecated.rb",
64
64
  "lib/ironfan/discovery.rb",
65
- "lib/ironfan/dsl_object.rb",
65
+ "lib/ironfan/dsl_builder.rb",
66
66
  "lib/ironfan/facet.rb",
67
67
  "lib/ironfan/fog_layer.rb",
68
68
  "lib/ironfan/private_key.rb",
@@ -71,37 +71,6 @@ Gem::Specification.new do |s|
71
71
  "lib/ironfan/server.rb",
72
72
  "lib/ironfan/server_slice.rb",
73
73
  "lib/ironfan/volume.rb",
74
- "notes/Backup of ec2-pricing_and_capacity.numbers",
75
- "notes/Home.md",
76
- "notes/INSTALL-cloud_setup.md",
77
- "notes/INSTALL.md",
78
- "notes/Ironfan-Roadmap.md",
79
- "notes/advanced-superpowers.md",
80
- "notes/aws_servers.jpg",
81
- "notes/aws_user_key.png",
82
- "notes/cookbook-versioning.md",
83
- "notes/core_concepts.md",
84
- "notes/declaring_volumes.md",
85
- "notes/design_notes-aspect_oriented_devops.md",
86
- "notes/design_notes-ci_testing.md",
87
- "notes/design_notes-cookbook_event_ordering.md",
88
- "notes/design_notes-meta_discovery.md",
89
- "notes/ec2-pricing_and_capacity.md",
90
- "notes/ec2-pricing_and_capacity.numbers",
91
- "notes/homebase-layout.txt",
92
- "notes/knife-cluster-commands.md",
93
- "notes/named-cloud-objects.md",
94
- "notes/opscode_org_key.png",
95
- "notes/opscode_user_key.png",
96
- "notes/philosophy.md",
97
- "notes/rake_tasks.md",
98
- "notes/renamed-recipes.txt",
99
- "notes/silverware.md",
100
- "notes/style_guide.md",
101
- "notes/tips_and_troubleshooting.md",
102
- "notes/version-3_2.md",
103
- "notes/walkthrough-hadoop.md",
104
- "notes/walkthrough-web.md",
105
74
  "spec/ironfan/cluster_spec.rb",
106
75
  "spec/ironfan/facet_spec.rb",
107
76
  "spec/ironfan/server_slice_spec.rb",
@@ -115,9 +84,9 @@ Gem::Specification.new do |s|
115
84
  s.homepage = "http://infochimps.com/labs"
116
85
  s.licenses = ["apachev2"]
117
86
  s.require_paths = ["lib"]
118
- s.rubygems_version = "1.8.11"
87
+ s.rubygems_version = "1.8.24"
119
88
  s.summary = "Ironfan allows you to orchestrate not just systems but clusters of machines. It includes a powerful layer on top of knife and a collection of cloud cookbooks."
120
- s.test_files = ["spec/ironfan/cluster_spec.rb", "spec/ironfan/facet_spec.rb", "spec/ironfan/server_slice_spec.rb", "spec/ironfan/server_spec.rb", "spec/ironfan_spec.rb", "spec/spec_helper/dummy_chef.rb", "spec/spec_helper.rb", "spec/test_config.rb"]
89
+ s.test_files = ["spec/ironfan_spec.rb", "spec/spec_helper/dummy_chef.rb", "spec/ironfan/cluster_spec.rb", "spec/ironfan/server_slice_spec.rb", "spec/ironfan/server_spec.rb", "spec/ironfan/facet_spec.rb", "spec/spec_helper.rb", "spec/test_config.rb"]
121
90
 
122
91
  if s.respond_to? :specification_version then
123
92
  s.specification_version = 3
@@ -126,33 +95,39 @@ Gem::Specification.new do |s|
126
95
  s.add_runtime_dependency(%q<chef>, [">= 0.10.4"])
127
96
  s.add_runtime_dependency(%q<fog>, ["~> 1.2"])
128
97
  s.add_runtime_dependency(%q<formatador>, ["~> 0.2"])
129
- s.add_runtime_dependency(%q<gorillib>, ["~> 0.1"])
130
- s.add_development_dependency(%q<bundler>, [">= 1.1"])
131
- s.add_development_dependency(%q<jeweler>, [">= 1.6"])
132
- s.add_development_dependency(%q<rspec>, ["~> 2.5"])
133
- s.add_development_dependency(%q<yard>, [">= 0.6"])
134
- s.add_development_dependency(%q<redcarpet>, ["~> 2"])
98
+ s.add_runtime_dependency(%q<gorillib>, ["~> 0.4.2"])
99
+ s.add_development_dependency(%q<bundler>, ["~> 1.1"])
100
+ s.add_development_dependency(%q<rake>, [">= 0"])
101
+ s.add_development_dependency(%q<rspec>, ["~> 2.8"])
102
+ s.add_development_dependency(%q<yard>, [">= 0.7"])
103
+ s.add_development_dependency(%q<redcarpet>, [">= 2.1"])
104
+ s.add_development_dependency(%q<oj>, [">= 1.2"])
105
+ s.add_development_dependency(%q<json>, [">= 0"])
135
106
  else
136
107
  s.add_dependency(%q<chef>, [">= 0.10.4"])
137
108
  s.add_dependency(%q<fog>, ["~> 1.2"])
138
109
  s.add_dependency(%q<formatador>, ["~> 0.2"])
139
- s.add_dependency(%q<gorillib>, ["~> 0.1"])
140
- s.add_dependency(%q<bundler>, [">= 1.1"])
141
- s.add_dependency(%q<jeweler>, [">= 1.6"])
142
- s.add_dependency(%q<rspec>, ["~> 2.5"])
143
- s.add_dependency(%q<yard>, [">= 0.6"])
144
- s.add_dependency(%q<redcarpet>, ["~> 2"])
110
+ s.add_dependency(%q<gorillib>, ["~> 0.4.2"])
111
+ s.add_dependency(%q<bundler>, ["~> 1.1"])
112
+ s.add_dependency(%q<rake>, [">= 0"])
113
+ s.add_dependency(%q<rspec>, ["~> 2.8"])
114
+ s.add_dependency(%q<yard>, [">= 0.7"])
115
+ s.add_dependency(%q<redcarpet>, [">= 2.1"])
116
+ s.add_dependency(%q<oj>, [">= 1.2"])
117
+ s.add_dependency(%q<json>, [">= 0"])
145
118
  end
146
119
  else
147
120
  s.add_dependency(%q<chef>, [">= 0.10.4"])
148
121
  s.add_dependency(%q<fog>, ["~> 1.2"])
149
122
  s.add_dependency(%q<formatador>, ["~> 0.2"])
150
- s.add_dependency(%q<gorillib>, ["~> 0.1"])
151
- s.add_dependency(%q<bundler>, [">= 1.1"])
152
- s.add_dependency(%q<jeweler>, [">= 1.6"])
153
- s.add_dependency(%q<rspec>, ["~> 2.5"])
154
- s.add_dependency(%q<yard>, [">= 0.6"])
155
- s.add_dependency(%q<redcarpet>, ["~> 2"])
123
+ s.add_dependency(%q<gorillib>, ["~> 0.4.2"])
124
+ s.add_dependency(%q<bundler>, ["~> 1.1"])
125
+ s.add_dependency(%q<rake>, [">= 0"])
126
+ s.add_dependency(%q<rspec>, ["~> 2.8"])
127
+ s.add_dependency(%q<yard>, [">= 0.7"])
128
+ s.add_dependency(%q<redcarpet>, [">= 2.1"])
129
+ s.add_dependency(%q<oj>, [">= 1.2"])
130
+ s.add_dependency(%q<json>, [">= 0"])
156
131
  end
157
132
  end
158
133
 
@@ -89,6 +89,16 @@ EOP
89
89
  awk NF /tmp/knife-bootstrap/validation.pem > /etc/chef/validation.pem
90
90
  <%- end %>
91
91
 
92
+ <% if @chef_config[:encrypted_data_bag_secret] -%>
93
+ (
94
+ cat <<'EOP'
95
+ <%= encrypted_data_bag_secret %>
96
+ EOP
97
+ ) > /tmp/encrypted_data_bag_secret
98
+ awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret
99
+ rm /tmp/encrypted_data_bag_secret
100
+ <% end -%>
101
+
92
102
  echo -e "`date` \n\n**** \n**** Nuking our temp files:\n****\n"
93
103
 
94
104
  cd /tmp
@@ -107,6 +107,16 @@ EOP
107
107
  awk NF /tmp/knife-bootstrap/validation.pem > /etc/chef/validation.pem
108
108
  <%- end %>
109
109
 
110
+ <% if @chef_config[:encrypted_data_bag_secret] -%>
111
+ (
112
+ cat <<'EOP'
113
+ <%= encrypted_data_bag_secret %>
114
+ EOP
115
+ ) > /tmp/encrypted_data_bag_secret
116
+ awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret
117
+ rm /tmp/encrypted_data_bag_secret
118
+ <% end -%>
119
+
110
120
  echo -e "`date` \n\n**** \n**** Nuking our temp files:\n****\n"
111
121
 
112
122
  cd /tmp
@@ -95,6 +95,16 @@ EOP
95
95
  awk NF /tmp/knife-bootstrap/validation.pem > /etc/chef/validation.pem
96
96
  <%- end %>
97
97
 
98
+ <% if @chef_config[:encrypted_data_bag_secret] -%>
99
+ (
100
+ cat <<'EOP'
101
+ <%= encrypted_data_bag_secret %>
102
+ EOP
103
+ ) > /tmp/encrypted_data_bag_secret
104
+ awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret
105
+ rm /tmp/encrypted_data_bag_secret
106
+ <% end -%>
107
+
98
108
  echo -e "`date` \n\n**** \n**** Nuking our temp files:\n****\n"
99
109
 
100
110
  cd /tmp
@@ -42,6 +42,11 @@ class Chef
42
42
  :description => "Where to find the pid file. Typically /var/run/chef/client.pid (init.d) or /etc/sv/chef-client/supervise/pid (runit)",
43
43
  :default => "/etc/sv/chef-client/supervise/pid"
44
44
 
45
+ option :log_file,
46
+ :long => "--log_file",
47
+ :description => "Where to find the log file. Typically /var/log/chef/client.log",
48
+ :default => "/var/log/chef/client.log"
49
+
45
50
  def run
46
51
  @name_args = [ @name_args.join('-') ]
47
52
  config[:display_target] = true
@@ -62,7 +67,7 @@ if sudo -p 'knife sudo password: ' service chef-client status ; then
62
67
 
63
68
  # running
64
69
  pid_file="<%= config[:pid_file] %>"
65
- log_file=/var/log/chef/client.log
70
+ log_file=<%= config[:log_file] %>
66
71
 
67
72
  declare tail_pid
68
73
 
@@ -76,7 +81,7 @@ trap "on_exit" EXIT ERR
76
81
  pipe=/tmp/pipe-$$
77
82
  mkfifo $pipe
78
83
 
79
- tail -fn0 "$log_file" > $pipe &
84
+ tail -Fn0 "$log_file" > $pipe &
80
85
 
81
86
  tail_pid=$!
82
87
 
@@ -136,6 +136,9 @@ class Chef
136
136
  rescue Errno::ECONNREFUSED
137
137
  sleep 2
138
138
  false
139
+ rescue Errno::EHOSTUNREACH
140
+ sleep 2
141
+ false
139
142
  ensure
140
143
  tcp_socket && tcp_socket.close
141
144
  end
@@ -84,7 +84,7 @@ class Chef
84
84
  def ssh_command(command, subsession=nil)
85
85
  subsession ||= session
86
86
  command = fixup_sudo(command)
87
- notifications = []
87
+ #
88
88
  subsession.open_channel do |ch|
89
89
  ch.request_pty
90
90
  ch.exec command do |ch, success|
@@ -101,13 +101,12 @@ class Chef
101
101
  exit_status = data.read_long
102
102
  if exit_status != 0
103
103
  command_snippet = (command.length < 70) ? command : (command[0..45] + ' ... ' + command[-19..-1])
104
- notifications << [ichannel[:host], "'#{command_snippet.gsub(/[\r\n]+/, "; ")}' terminated with error status #{exit_status}", :err]
104
+ has_problem ->{ print_data(ichannel[:host], "'#{command_snippet.gsub(/[\r\n]+/, "; ")}' terminated with error status #{exit_status}", :err) }
105
105
  end
106
106
  end
107
107
  end
108
108
  end
109
109
  session.loop
110
- notifications.each{|args| print_data(*args) }
111
110
  end
112
111
 
113
112
  def cssh
@@ -133,6 +132,7 @@ class Chef
133
132
  end
134
133
 
135
134
  session.close
135
+ exit_if_unhealthy!
136
136
  end
137
137
 
138
138
  end
@@ -163,6 +163,27 @@ module Ironfan
163
163
  ui.info("")
164
164
  end
165
165
 
166
+ # list of problems encountered
167
+ attr_accessor :problems
168
+ # register that a problem was encountered
169
+ def has_problem(desc)
170
+ (@problems||=[]) << desc
171
+ end
172
+ # healthy if no problems
173
+ def healthy?() problems.blank? ; end
174
+
175
+ def exit_if_unhealthy!
176
+ return if healthy?
177
+ problems.each do |problem|
178
+ if problem.respond_to?(:call)
179
+ problem.call
180
+ else
181
+ ui.warn(problem)
182
+ end
183
+ end
184
+ exit(2) if not healthy?
185
+ end
186
+
166
187
  #
167
188
  # Announce a new section of tasks
168
189
  #
@@ -57,6 +57,8 @@ module Ironfan
57
57
  ui.info("")
58
58
  ui.info "Finished! Current state:"
59
59
  display(target)
60
+ #
61
+ exit_if_unhealthy!
60
62
  end
61
63
 
62
64
  def perform_execution(target)
@@ -73,12 +73,12 @@ module Ironfan
73
73
  @chef_client = cluster.find_client(fullname) || false
74
74
  end
75
75
 
76
- # The chef node, if it already exists in the server.
77
- # Use the 'ensure' method to create/update it.
78
- def chef_node
79
- return @chef_node unless @chef_node.nil?
80
- @chef_node = cluster.find_node(fullname) || false
81
- end
76
+ # # The chef node, if it already exists in the server.
77
+ # # Use the 'ensure' method to create/update it.
78
+ # def chef_node
79
+ # return @chef_node unless @chef_node.nil?
80
+ # @chef_node = cluster.find_node(fullname) || false
81
+ # end
82
82
 
83
83
  # true if chef client is created and discovered
84
84
  def chef_client?
@@ -193,15 +193,15 @@ module Ironfan
193
193
  end
194
194
 
195
195
  def sync_volume_attributes
196
- composite_volumes.each do |vol_name, vol|
196
+ volumes.each_pair do |vol_name, vol|
197
197
  chef_node.normal[:volumes] ||= Mash.new
198
- chef_node.normal[:volumes][vol_name] = vol.to_mash.compact
198
+ chef_node.normal[:volumes][vol_name] = vol.attributes.compact
199
199
  end
200
200
  end
201
201
 
202
202
  def set_chef_node_attributes
203
203
  step(" setting node runlist and essential attributes")
204
- @chef_node.run_list = Chef::RunList.new(*@settings[:run_list])
204
+ @chef_node.run_list = Chef::RunList.new(*combined_run_list)
205
205
  @chef_node.normal[:organization] = organization if organization
206
206
  @chef_node.normal[:permanent] = cloud.permanent if cloud.permanent
207
207
  @chef_node.normal[:cluster_name] = cluster_name