Skip to content

Commit 49b9e6e

Browse files
author
Nuo Yan
committed
revise per environment data structure
1 parent 1a9d45e commit 49b9e6e

6 files changed

Lines changed: 17 additions & 18 deletions

File tree

‎chef-server-api/app/controllers/environments.rb‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def role
116116
rescue Chef::Exceptions::CouchDBNotFound
117117
raise NotFound, "Cannot load role #{params[:role_id]}"
118118
end
119-
display(role.env_run_lists[params[:environment_id]])
119+
display("run_list" => role.env_run_lists[params[:environment_id]])
120120
end
121121

122122
private

‎chef-server-api/app/controllers/roles.rb‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def environment
7373
rescue Chef::Exceptions::CouchDBNotFound => e
7474
raise NotFound, "Cannot load role #{params[:role_id]}"
7575
end
76-
display(@role.env_run_lists[params[:env_id]])
76+
display("run_list" => @role.env_run_lists[params[:env_id]])
7777
end
7878

7979
# GET /roles/:id/environments

‎chef/lib/chef/role.rb‎

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def initialize(couchdb=nil)
6969
@default_attributes = Mash.new
7070
@override_attributes = Mash.new
7171
@run_list = Chef::RunList.new
72-
@env_run_lists = {"_default" => {"default_attributes" => @default_attributes, "override_attributes" => @override_attributes, "run_list" => @run_list}}
72+
@env_run_lists = {"_default" => @run_list}
7373
@couchdb_rev = nil
7474
@couchdb_id = nil
7575
@couchdb = couchdb || Chef::CouchDB.new
@@ -107,28 +107,28 @@ def description(arg=nil)
107107
def run_list(*args)
108108
if (args.length > 0)
109109
@run_list.reset!(args)
110-
@env_run_lists.merge!({"_default" => {"default_attributes"=>@default_attributes, "override_attributes"=>@override_attributes, "run_list"=>@run_list}})
110+
@env_run_lists.merge!({"_default" => @run_list})
111111
end
112112
@run_list
113113
end
114114

115115
alias_method :recipes, :run_list
116116

117+
# For run_list expansion
117118
def run_list_for_environment(environment='_default')
118-
if env_run_lists[environment].nil? || env_run_lists[environment].empty? || env_run_lists[environment]["run_list"].nil?
119+
if env_run_lists[environment].nil? || env_run_lists[environment].empty?
119120
run_list
120121
else
121-
env_run_lists[environment]["run_list"]
122+
env_run_lists[environment]
122123
end
123124
end
124125

126+
# Per environment run lists
125127
def env_run_lists(hash=nil, run_list_items_only=false)
126-
# TODO: should have btter validation, but leaving it as it is for now to make everything work first [nuo]
127128
if (!hash.nil? && hash.length > 0)
128129
hash.each do |k,v|
129-
unless v["run_list"].nil?
130-
rl = Chef::RunList.new(k).reset!(v["run_list"])
131-
v["run_list"] = run_list_items_only ? rl.run_list_items : rl
130+
unless v.nil?
131+
hash[k] = run_list_items_only ? Chef::RunList.new(k).reset!(v).run_list_items : Chef::RunList.new(k).reset!(v)
132132
end
133133
end
134134
@env_run_lists = hash
@@ -184,8 +184,7 @@ def update_from!(o)
184184
run_list(o.run_list)
185185
default_attributes(o.default_attributes)
186186
override_attributes(o.override_attributes)
187-
default_env_run_list = {"_default"=>{"default_attributes"=>o.default_attributes, "override_attributes"=>o.override_attributes, "run_list"=>o.run_list}}
188-
env_run_lists(o.env_run_lists.nil? ? default_env_run_list : o.env_run_lists.merge!(default_env_run_list))
187+
env_run_lists(o.env_run_lists.nil? ? {"_default"=>o.run_list} : o.env_run_lists.merge!({"_default"=>o.run_list}))
189188
self
190189
end
191190

@@ -201,8 +200,7 @@ def self.json_create(o)
201200
else
202201
o["recipes"]
203202
end)
204-
default_env_run_list = {"_default"=>{"default_attributes"=>o["default_attributes"], "override_attributes"=>o["override_attributes"], "run_list"=>role.run_list}}
205-
role.env_run_lists(o["env_run_lists"].nil? ? default_env_run_list : o["env_run_lists"].merge!(default_env_run_list))
203+
role.env_run_lists(o["env_run_lists"].nil? ? {"_default"=>role.run_list} : o["env_run_lists"].merge!({"_default"=>role.run_list}))
206204
role.couchdb_rev = o["_rev"] if o.has_key?("_rev")
207205
role.index_id = role.couchdb_id
208206
role.couchdb_id = o["_id"] if o.has_key?("_id")
@@ -268,7 +266,7 @@ def destroy
268266

269267
# Save this role to the CouchDB
270268
def cdb_save
271-
@env_run_lists.merge!({"_default" => {"default_attributes"=>@default_attributes, "override_attributes"=>@override_attributes, "run_list"=>@run_list}})
269+
@env_run_lists.merge!({"_default" => @run_list})
272270
self.couchdb_rev = couchdb.store("role", @name, self)["rev"]
273271
end
274272

‎chef/spec/unit/client_spec.rb‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040

4141
@node = Chef::Node.new(@hostname)
4242
@node.name(@fqdn)
43+
@node.chef_environment("_default")
4344
@node[:platform] = "example-platform"
4445
@node[:platform_version] = "example-platform-1.0"
4546

‎features/data/roles/role_env_test.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
"run_list": [
1111
],
1212
"env_run_lists": {
13-
"cucumber" : {"default_attributes":{}, "override_attributes":{}, "run_list":"recipe[roles]"},
14-
"_default" : {}
13+
"cucumber" : "recipe[roles]",
14+
"_default" : ""
1515
},
1616
"override_attributes": {
1717
"ossining": "whatever",

‎features/steps/fixture_steps.rb‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@
9797
r = Chef::Role.new
9898
r.name "webserver"
9999
r.description "monkey"
100-
r.env_run_lists({"cucumber" => {"default_attributes" => {}, "override_attributes" => {}, "run_list" => "role[db]"}})
100+
r.env_run_lists({"cucumber" =>"role[db]"})
101101
r.run_list("role[webserver]", "role[base]")
102102
r.default_attributes({ 'a' => 'b' })
103103
r.override_attributes({ 'c' => 'd' })

0 commit comments

Comments
 (0)