Class: Nodes
Instance Method Summary
collapse
Methods inherited from Application
#access_denied, #append_tree, #bad_request?, #binary?, #build_tree, #can_edit_admin?, #cleanup_session, #conflict?, #convert_newline_to_br, #determine_name, #forbidden?, #format_exception, #is_admin?, #is_last_admin?, #list_available_recipes_for, #load_cookbook_segment, #load_environments, #load_session_user, #login_required, #logout_and_redirect_to_login, #not_found?, #redirect_back_or_default, #require_admin, #segment_files, #show_plain_file, #store_location, #str_to_bool, #syntax_highlight
Instance Method Details
#create ⇒ Object
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# File 'app/controllers/nodes.rb', line 93
def create
begin
@node = Chef::Node.new
@node.name params[:name]
@node.chef_environment params[:chef_environment]
@node.normal_attrs = Chef::JSONCompat.from_json(params[:attributes])
@node.run_list.reset!(params[:for_node] ? params[:for_node] : [])
raise ArgumentError, "Node name cannot be blank" if (params[:name].nil? || params[:name].length==0)
@node.create
redirect(url(:nodes), :message => { :notice => "Created Node #{@node.name}" })
rescue => e
Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@node.normal_attrs = Chef::JSONCompat.from_json(params[:attributes])
@available_recipes = list_available_recipes_for(@node.chef_environment)
@available_roles = Chef::Role.list.keys.sort
@node.run_list params[:for_node]
@run_list = @node.run_list
@_message = { :error => "Exception raised creating node, #{e.message.length <= 150 ? e.message : "please check logs for details"}" }
render :new
end
end
|
#destroy ⇒ Object
135
136
137
138
139
140
141
142
143
144
145
146
|
# File 'app/controllers/nodes.rb', line 135
def destroy
begin
@node = Chef::Node.load(params[:id])
@node.destroy
redirect(absolute_url(:nodes), {:message => { :notice => "Node #{params[:id]} deleted successfully" }, :permanent => true})
rescue => e
Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@node_list = Chef::Node.list()
@_message = {:error => "Could not delete the node"}
render :index
end
end
|
#edit ⇒ Object
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# File 'app/controllers/nodes.rb', line 74
def edit
begin
@node = Chef::Node.load(params[:id])
@env = @node.chef_environment
@available_recipes = list_available_recipes_for(@node.chef_environment)
@available_roles = Chef::Role.list.keys.sort
@run_list = @node.run_list
render
rescue => e
Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@node = Chef::Node.new
@available_recipes = []
@available_roles = []
@run_list = []
@_message = {:error => "Could not load node #{params[:id]}"}
render
end
end
|
#index ⇒ Object
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'app/controllers/nodes.rb', line 30
def index
begin
if session[:environment]
node_hash = Chef::Node.list_by_environment(session[:environment])
else
node_hash = Chef::Node.list
end
@node_list = node_hash.keys.sort
rescue => e
Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@_message = {:error => "Could not list nodes"}
@node_hash = {}
end
render
end
|
#new ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# File 'app/controllers/nodes.rb', line 57
def new
begin
@node = Chef::Node.new
@node.chef_environment(session[:environment] || "_default")
@available_recipes = list_available_recipes_for(@node.chef_environment)
@available_roles = Chef::Role.list.keys.sort
@run_list = @node.run_list
@env = session[:environment]
render
rescue => e
Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@node_list = Chef::Node.list()
@_message = {:error => "Could not load available recipes, roles, or the run list"}
render :index
end
end
|
#show ⇒ Object
46
47
48
49
50
51
52
53
54
55
|
# File 'app/controllers/nodes.rb', line 46
def show
begin
@node =Chef::Node.load(params[:id])
rescue => e
Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@_message = {:error => "Could not load node #{params[:id]}"}
@node = Chef::Node.new
end
render
end
|
#update ⇒ Object
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
# File 'app/controllers/nodes.rb', line 115
def update
begin
@node = Chef::Node.load(params[:id])
@node.chef_environment(params[:chef_environment])
@node.run_list.reset!(params[:for_node] ? params[:for_node] : [])
@node.normal_attrs = Chef::JSONCompat.from_json(params[:attributes])
@node.save
@_message = { :notice => "Updated Node" }
render :show
rescue => e
Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@available_recipes = list_available_recipes_for(@node.chef_environment)
@available_roles = Chef::Role.list.keys.sort
@run_list = Chef::RunList.new
@run_list.reset!(params[:for_node])
@_message = { :error => "Exception raised updating node, #{e.message.length <= 150 ? e.message : "please check logs for details"}" }
render :edit
end
end
|