summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Jacob <adam@opscode.com>2010-02-27 16:14:10 -0800
committerAdam Jacob <adam@opscode.com>2010-02-27 16:14:10 -0800
commit8e295c26fdf0f0d03429dcca5736cb5e9148bebd (patch)
treeec4df5ed3b97a00d4d0d2d877f92a9d60d8a65fc
parent9f94b3f92e15efd3742d621a230f23315a07f401 (diff)
parent526e5cef2a48fb73d17578f3d5a3356793ad7b4f (diff)
downloadchef-8e295c26fdf0f0d03429dcca5736cb5e9148bebd.tar.gz
Merge branch 'CHEF-971' of git://github.com/nuoyan/chef into nuoyan/CHEF-971
Conflicts: chef-server-webui/app/controllers/search.rb
-rw-r--r--chef-server-webui/app/controllers/clients.rb89
-rw-r--r--chef-server-webui/app/controllers/cookbooks.rb23
-rw-r--r--chef-server-webui/app/controllers/databag_items.rb36
-rw-r--r--chef-server-webui/app/controllers/databags.rb32
-rw-r--r--chef-server-webui/app/controllers/nodes.rb83
-rw-r--r--chef-server-webui/app/controllers/roles.rb90
-rw-r--r--chef-server-webui/app/controllers/search.rb20
-rw-r--r--chef-server-webui/app/controllers/status.rb5
-rw-r--r--chef-server-webui/app/controllers/users.rb59
9 files changed, 186 insertions, 251 deletions
diff --git a/chef-server-webui/app/controllers/clients.rb b/chef-server-webui/app/controllers/clients.rb
index d173ca682a..f5fce56a9a 100644
--- a/chef-server-webui/app/controllers/clients.rb
+++ b/chef-server-webui/app/controllers/clients.rb
@@ -25,38 +25,38 @@ class ChefServerWebui::Clients < ChefServerWebui::Application
# GET /clients
def index
- begin
- @clients_list = Chef::ApiClient.list()
- render
- rescue
- @clients_list = {}
- @_message = {:error => $!}
- render
- end
+ @clients_list = begin
+ Chef::ApiClient.list()
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = {:error => "Could not list clients"}
+ {}
+ end
+ render
end
# GET /clients/:id
def show
- begin
- load_client
- render
- rescue => e
- @client = Chef::ApiClient.new
- @_message = e.message =~ /not found/ ? {:error => "Cannot find client '#{params[:id]}'"} : { :error => $!}
- render
- end
+ @client = begin
+ @client = Chef::ApiClient.load(params[:id])
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = { :error => "Could not load client #{params[:id]}"}
+ Chef::ApiClient.new
+ end
+ render
end
# GET /clients/:id/edit
def edit
- begin
- load_client
- render
- rescue
- @client = Chef::ApiClient.new
- @_message = e.message =~ /not found/ ? {:error => "Cannot find client '#{params[:id]}'"} : { :error => $!}
- render
- end
+ @client = begin
+ Chef::ApiClient.load(params[:id])
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = { :error => "Could not load client #{params[:id]}"}
+ Chef::ApiClient.new
+ end
+ render
end
# GET /clients/new
@@ -71,21 +71,14 @@ class ChefServerWebui::Clients < ChefServerWebui::Application
@client = Chef::ApiClient.new
@client.name(params[:name])
@client.admin(str_to_bool(params[:admin])) if params[:admin]
- begin
- response = @client.create
- rescue Net::HTTPServerException => e
- if e.message =~ /403/
- raise ArgumentError, "Client already exists"
- else
- raise e
- end
- end
+ response = @client.create
@private_key = OpenSSL::PKey::RSA.new(response["private_key"])
@_message = { :notice => "Created Client #{@client.name}. Please copy the following private key as the client's validation key." }
- load_client(params[:name])
+ @client = Chef::ApiClient.load(params[:name])
render :show
- rescue StandardError => e
- @_message = { :error => $! }
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = { :error => "Could not create client" }
render :new
end
end
@@ -93,7 +86,7 @@ class ChefServerWebui::Clients < ChefServerWebui::Application
# PUT /clients/:id
def update
begin
- load_client
+ @client = Chef::ApiClient.load(params[:id])
if params[:regen_private_key]
@client.create_keys
@private_key = @client.private_key
@@ -102,8 +95,9 @@ class ChefServerWebui::Clients < ChefServerWebui::Application
@client.save
@_message = @private_key.nil? ? { :notice => "Updated Client" } : { :notice => "Created Client #{@client.name}. Please copy the following private key as the client's validation key." }
render :show
- rescue
- @_message = { :error => $! }
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = { :error => "Could not update client" }
render :edit
end
end
@@ -111,25 +105,16 @@ class ChefServerWebui::Clients < ChefServerWebui::Application
# DELETE /clients/:id
def destroy
begin
- load_client
+ @client = Chef::ApiClient.load(params[:id])
@client.destroy
redirect(absolute_slice_url(:clients), {:message => { :notice => "Client #{params[:id]} deleted successfully" }, :permanent => true})
- rescue
- @_message = {:error => $!}
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = {:error => "Could not delete client #{params[:id]}" }
@clients_list = Chef::ApiClient.list()
render :index
end
end
-
- private
-
- def load_client(name=params[:id])
- begin
- @client = Chef::ApiClient.load(name)
- rescue Net::HTTPServerException => e
- raise NotFound, "Cannot load client #{name}"
- end
- end
end
diff --git a/chef-server-webui/app/controllers/cookbooks.rb b/chef-server-webui/app/controllers/cookbooks.rb
index 5f6e0eddad..9ed11c5546 100644
--- a/chef-server-webui/app/controllers/cookbooks.rb
+++ b/chef-server-webui/app/controllers/cookbooks.rb
@@ -26,24 +26,23 @@ class ChefServerWebui::Cookbooks < ChefServerWebui::Application
before :login_required
def index
- begin
- r = Chef::REST.new(Chef::Config[:chef_server_url])
- @cl = r.get_rest("cookbooks")
- render
- rescue
- @_message = {:error => $!}
- @cl = {}
- render
- end
+ @cl = begin
+ Chef::REST.new(Chef::Config[:chef_server_url]).get_rest("cookbooks")
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = {:error => $!}
+ {}
+ end
+ render
end
def show
begin
- r = Chef::REST.new(Chef::Config[:chef_server_url])
- @cookbook = r.get_rest("cookbooks/#{params[:id]}")
+ @cookbook = Chef::REST.new(Chef::Config[:chef_server_url]).get_rest("cookbooks/#{params[:id]}")
raise NotFound unless @cookbook
display @cookbook
- rescue
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@_message = {:error => $!}
@cl = {}
render :index
diff --git a/chef-server-webui/app/controllers/databag_items.rb b/chef-server-webui/app/controllers/databag_items.rb
index ee0e46d3d0..e3ee5b27d5 100644
--- a/chef-server-webui/app/controllers/databag_items.rb
+++ b/chef-server-webui/app/controllers/databag_items.rb
@@ -25,14 +25,11 @@ class ChefServerWebui::DatabagItems < ChefServerWebui::Application
def edit
begin
- begin
- @databag_item = Chef::DataBagItem.load(params[:databag_id], params[:id])
- rescue Net::HTTPServerException => e
- raise NotFound, "Cannot load Databag Item #{params[:id]}"
- end
+ @databag_item = Chef::DataBagItem.load(params[:databag_id], params[:id])
@default_data = @databag_item
- rescue StandardError => e
- @_message = { :error => $! }
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = { :error => "Could not load the databag item" }
end
render
end
@@ -45,15 +42,15 @@ class ChefServerWebui::DatabagItems < ChefServerWebui::Application
raise ArgumentError, "Updating id is not allowed" unless @databag_item.raw_data['id'] == params[:id] #to be consistent with other objects, changing id is not allowed.
@databag_item.save
redirect(slice_url(:databag_databag_items, :databag_id => params[:databag_id], :id => @databag_item.name), :message => { :notice => "Updated Databag Item #{@databag_item.name}" })
- rescue
- @_message = { :error => $! }
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = { :error => "Could not update the databag item" }
@databag_item = Chef::DataBagItem.load(params[:databag_id], params[:id])
@default_data = @databag_item
render :edit
end
end
-
def new
@default_data = {'id'=>''}
render
@@ -66,9 +63,10 @@ class ChefServerWebui::DatabagItems < ChefServerWebui::Application
@databag_item.data_bag @databag_name
@databag_item.raw_data = JSON.parse(params[:json_data])
@databag_item.create
- redirect(slice_url(:databag_databag_items, :databag_id => @databag_name), :message => { :notice => "Created Databag Item #{@databag_item.name}" })
- rescue StandardError => e
- @_message = { :error => $! }
+ redirect(slice_url(:databag_databag_items, :databag_id => @databag_name), :message => { :notice => "Databag item created successfully" })
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = { :error => "Could not create databag item" }
render :new
end
end
@@ -84,8 +82,9 @@ class ChefServerWebui::DatabagItems < ChefServerWebui::Application
r = Chef::REST.new(Chef::Config[:chef_server_url])
@databag_item = r.get_rest("data/#{params[:databag_id]}/#{params[:id]}")
display @databag_item
- rescue
- redirect(slice_url(:databag_databag_items), {:message => { :error => $! }, :permanent => true})
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ redirect(slice_url(:databag_databag_items), {:message => { :error => "Could not show the databag item" }, :permanent => true})
end
end
@@ -93,9 +92,10 @@ class ChefServerWebui::DatabagItems < ChefServerWebui::Application
begin
@databag_item = Chef::DataBagItem.new
@databag_item.destroy(databag_id, item_id)
- redirect(slice_url(:databag_databag_items), {:message => { :notice => "Databag Item #{params[:id]} deleted successfully" }, :permanent => true})
- rescue
- redirect(slice_url(:databag_databag_items), {:message => { :error => $! }, :permanent => true})
+ redirect(slice_url(:databag_databag_items), {:message => { :notice => "Databag item deleted successfully" }, :permanent => true})
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ redirect(slice_url(:databag_databag_items), {:message => { :error => "Could not delete databag item" }, :permanent => true})
end
end
diff --git a/chef-server-webui/app/controllers/databags.rb b/chef-server-webui/app/controllers/databags.rb
index 555ec79baf..edbf283ac3 100644
--- a/chef-server-webui/app/controllers/databags.rb
+++ b/chef-server-webui/app/controllers/databags.rb
@@ -34,22 +34,22 @@ class ChefServerWebui::Databags < ChefServerWebui::Application
@databag.name params[:name]
@databag.create
redirect(slice_url(:databags), :message => { :notice => "Created Databag #{@databag.name}" })
- rescue StandardError => e
- @_message = { :error => $! }
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = { :error => "Could not create databag" }
render :new
end
end
def index
- begin
- r = Chef::REST.new(Chef::Config[:chef_server_url])
- @databags = r.get_rest("data")
- render
- rescue
- @_message = { :error => $! }
- @databags = {}
- render
- end
+ @databags = begin
+ Chef::REST.new(Chef::Config[:chef_server_url]).get_rest("data")
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = { :error => "Could not list databags" }
+ {}
+ end
+ render
end
def show
@@ -59,9 +59,10 @@ class ChefServerWebui::Databags < ChefServerWebui::Application
@databag = r.get_rest("data/#{params[:id]}")
raise NotFound unless @databag
display @databag
- rescue
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@databags = Chef::DataBag.list
- @_message = { :error => $!}
+ @_message = { :error => "Could not load databag"}
render :index
end
end
@@ -71,9 +72,10 @@ class ChefServerWebui::Databags < ChefServerWebui::Application
r = Chef::REST.new(Chef::Config[:chef_server_url])
r.delete_rest("data/#{params[:id]}")
redirect(absolute_slice_url(:databags), {:message => { :notice => "Data bag #{params[:id]} deleted successfully" }, :permanent => true})
- rescue
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@databags = Chef::DataBag.list
- @_message = { :error => $!}
+ @_message = { :error => "Could not delete databag"}
render :index
end
end
diff --git a/chef-server-webui/app/controllers/nodes.rb b/chef-server-webui/app/controllers/nodes.rb
index a696bf85e1..408884efd5 100644
--- a/chef-server-webui/app/controllers/nodes.rb
+++ b/chef-server-webui/app/controllers/nodes.rb
@@ -28,27 +28,24 @@ class ChefServerWebui::Nodes < ChefServerWebui::Application
before :authorized_node, :only => [ :update, :destroy ]
def index
- begin
- @node_list = Chef::Node.list
- render
- rescue
- @node_list = {}
- @_message = {:error => $!}
- render
- end
+ @node_list = begin
+ Chef::Node.list
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = {:error => "Could not list nodes"}
+ {}
+ end
+ render
end
def show
- begin
- begin
- @node = Chef::Node.load(params[:id])
- rescue Net::HTTPServerException => e
- raise NotFound, "Cannot load node #{params[:id]}"
- end
- rescue
- @node = Chef::Node.new
- @_message = {:error => $!}
- end
+ @node = begin
+ Chef::Node.load(params[:id])
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = {:error => "Could not load node #{params[:id]}"}
+ Chef::Node.new
+ end
render
end
@@ -59,30 +56,28 @@ class ChefServerWebui::Nodes < ChefServerWebui::Application
@available_roles = Chef::Role.list.keys.sort
@run_list = @node.run_list
render
- rescue
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@node_list = Chef::Node.list()
- @_message = {:error => $!}
+ @_message = {:error => "Could not load available recipes, roles, or the run list"}
render :index
end
end
def edit
begin
- begin
- @node = Chef::Node.load(params[:id])
- rescue Net::HTTPServerException => e
- raise NotFound, "Cannot load node #{params[:id]}"
- end
+ @node = Chef::Node.load(params[:id])
@available_recipes = get_available_recipes
@available_roles = Chef::Role.list.keys.sort
@run_list = @node.run_list
render
- rescue
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@node = Chef::Node.new
@available_recipes = []
@available_roles = []
@run_list = []
- @_message = {:error => $!}
+ @_message = {:error => "Could not load node #{params[:id]}"}
render
end
end
@@ -94,18 +89,10 @@ class ChefServerWebui::Nodes < ChefServerWebui::Application
@node.attribute = JSON.parse(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)
- begin
- @node.create
- rescue Net::HTTPServerException => e
- if e.message =~ /403/
- raise ArgumentError, "Node already exists"
- else
- raise e
- end
- end
+ @node.create
redirect(slice_url(:nodes), :message => { :notice => "Created Node #{@node.name}" })
- rescue StandardError => e
- Chef::Log.error("StandardError creating node: #{e.message}")
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@node.attribute = JSON.parse(params[:attributes])
@available_recipes = get_available_recipes
@available_roles = Chef::Role.list.keys.sort
@@ -119,18 +106,13 @@ class ChefServerWebui::Nodes < ChefServerWebui::Application
def update
begin
@node = Chef::Node.load(params[:id])
- rescue Net::HTTPServerException => e
- raise NotFound, "Cannot load node #{params[:id]}"
- end
-
- begin
@node.run_list.reset!(params[:for_node] ? params[:for_node] : [])
@node.attribute = JSON.parse(params[:attributes])
@node.save
@_message = { :notice => "Updated Node" }
render :show
- rescue Exception => e
- Chef::Log.error("Exception updating node: #{e.message}")
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@available_recipes = get_available_recipes
@available_roles = Chef::Role.list.keys.sort
@run_list = Chef::RunList.new
@@ -142,16 +124,13 @@ class ChefServerWebui::Nodes < ChefServerWebui::Application
def destroy
begin
- begin
- @node = Chef::Node.load(params[:id])
- rescue Net::HTTPServerException => e
- raise NotFound, "Cannot load node #{params[:id]}"
- end
+ @node = Chef::Node.load(params[:id])
@node.destroy
redirect(absolute_slice_url(:nodes), {:message => { :notice => "Node #{params[:id]} deleted successfully" }, :permanent => true})
- rescue
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@node_list = Chef::Node.list()
- @_message = {:error => $!}
+ @_message = {:error => "Could not delete the node"}
render :index
end
end
diff --git a/chef-server-webui/app/controllers/roles.rb b/chef-server-webui/app/controllers/roles.rb
index bc6ba21d99..128c1f8190 100644
--- a/chef-server-webui/app/controllers/roles.rb
+++ b/chef-server-webui/app/controllers/roles.rb
@@ -26,30 +26,26 @@ class ChefServerWebui::Roles < ChefServerWebui::Application
# GET /roles
def index
- begin
- @role_list = Chef::Role.list()
- render
- rescue
- @role_list = {}
- @_message = {:error => $!}
- render
- end
+ @role_list = begin
+ Chef::Role.list()
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = {:error => "Could not list roles"}
+ {}
+ end
+ render
end
# GET /roles/:id
def show
- begin
- begin
- @role = Chef::Role.load(params[:id])
- rescue Net::HTTPServerException => e
- raise NotFound, "Cannot load role #{params[:id]}"
- end
- render
- rescue
- @role = Chef::Role.new
- @_message = {:error => $!}
- render
- end
+ @role = begin
+ Chef::Role.load(params[:id])
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = {:error => "Could not load role #{params[:id]}"}
+ Chef::Role.new
+ end
+ render
end
# GET /roles/new
@@ -60,9 +56,10 @@ class ChefServerWebui::Roles < ChefServerWebui::Application
@available_roles = Chef::Role.list.keys.sort
@run_list = @role.run_list
render
- rescue
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@role_list = Chef::Role.list()
- @_message = {:error => $!}
+ @_message = {:error => "Could not load available recipes, roles, or the run list."}
render :index
end
end
@@ -70,23 +67,19 @@ class ChefServerWebui::Roles < ChefServerWebui::Application
# GET /roles/:id/edit
def edit
begin
- begin
- @role = Chef::Role.load(params[:id])
- rescue Net::HTTPServerException => e
- raise NotFound, "Cannot load role #{params[:id]}"
- end
+ @role = Chef::Role.load(params[:id])
@available_recipes = get_available_recipes
@available_roles = Chef::Role.list.keys.sort
@run_list = @role.run_list
- render
- rescue
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@role = Chef::Role.new
@available_recipes = []
@available_roles = []
@run_list = []
- @_message = {:error => $!}
- render
+ @_message = {:error => "Could not load role #{params[:id]}, the available recipes, roles, or the run list"}
end
+ render
end
# POST /roles
@@ -98,23 +91,16 @@ class ChefServerWebui::Roles < ChefServerWebui::Application
@role.description(params[:description]) if params[:description] != ''
@role.default_attributes(JSON.parse(params[:default_attributes])) if params[:default_attributes] != ''
@role.override_attributes(JSON.parse(params[:override_attributes])) if params[:override_attributes] != ''
- begin
- @role.create
- rescue Net::HTTPServerException => e
- if e.message =~ /403/
- raise ArgumentError, "Role already exists"
- else
- raise e
- end
- end
+ @role.create
redirect(slice_url(:roles), :message => { :notice => "Created Role #{@role.name}" })
- rescue ArgumentError
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@available_recipes = get_available_recipes
@role = Chef::Role.new
@role.default_attributes(JSON.parse(params[:default_attributes])) if params[:default_attributes] != ''
@role.override_attributes(JSON.parse(params[:override_attributes])) if params[:override_attributes] != ''
@run_list = params[:for_role] ? params[:for_role] : []
- @_message = { :error => $! }
+ @_message = { :error => "Could not create role" }
render :new
end
end
@@ -123,11 +109,6 @@ class ChefServerWebui::Roles < ChefServerWebui::Application
def update
begin
@role = Chef::Role.load(params[:id])
- rescue Net::HTTPServerException => e
- raise NotFound, "Cannot load role #{params[:id]}"
- end
-
- begin
@role.run_list(params[:for_role] ? params[:for_role] : [])
@role.description(params[:description]) if params[:description] != ''
@role.default_attributes(JSON.parse(params[:default_attributes])) if params[:default_attributes] != ''
@@ -135,11 +116,13 @@ class ChefServerWebui::Roles < ChefServerWebui::Application
@role.save
@_message = { :notice => "Updated Role" }
render :show
- rescue ArgumentError
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@available_recipes = get_available_recipes
@run_list = params[:for_role] ? params[:for_role] : []
@role.default_attributes(JSON.parse(params[:default_attributes])) if params[:default_attributes] != ''
@role.override_attributes(JSON.parse(params[:override_attributes])) if params[:override_attributes] != ''
+ @_message = {:error => "Could not update role #{params[:id]}"}
render :edit
end
end
@@ -147,16 +130,13 @@ class ChefServerWebui::Roles < ChefServerWebui::Application
# DELETE /roles/:id
def destroy
begin
- begin
- @role = Chef::Role.load(params[:id])
- rescue Net::HTTPServerException => e
- raise NotFound, "Cannot load role #{params[:id]}"
- end
+ @role = Chef::Role.load(params[:id])
@role.destroy
redirect(absolute_slice_url(:roles), :message => { :notice => "Role #{@role.name} deleted successfully." }, :permanent => true)
- rescue
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@role_list = Chef::Role.list()
- @_message = {:error => $!}
+ @_message = {:error => "Could not delete role #{params[:id]}"}
render :index
end
end
diff --git a/chef-server-webui/app/controllers/search.rb b/chef-server-webui/app/controllers/search.rb
index 7965eed2ae..c801fd207e 100644
--- a/chef-server-webui/app/controllers/search.rb
+++ b/chef-server-webui/app/controllers/search.rb
@@ -24,15 +24,15 @@ class ChefServerWebui::Search < ChefServerWebui::Application
before :login_required
def index
- begin
- @s = Chef::Search::Query.new
- @search_indexes = @s.list_indexes
- render
- rescue
- @search_indexes = {}
- @_message = {:error => $!}
- render
- end
+ @s = Chef::Search::Query.new
+ @search_indexes = begin
+ @s.list_indexes
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = {:error => "Could not list search indexes"}
+ {}
+ end
+ render
end
def show
@@ -53,7 +53,7 @@ class ChefServerWebui::Search < ChefServerWebui::Application
render
rescue => e
Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
- @_message = { :error => "Unable to find the #{params[:id]}." }
+ @_message = { :error => "Unable to find the #{params[:id]}. (#{$!})" }
@search_indexes = @s.list_indexes
render :index
end
diff --git a/chef-server-webui/app/controllers/status.rb b/chef-server-webui/app/controllers/status.rb
index 4fa3419706..b4a20ec35a 100644
--- a/chef-server-webui/app/controllers/status.rb
+++ b/chef-server-webui/app/controllers/status.rb
@@ -28,9 +28,10 @@ class ChefServerWebui::Status < ChefServerWebui::Application
begin
@status = Chef::Node.list(true)
render
- rescue
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@status = {}
- @_message = {:error => $!}
+ @_message = {:error => "Could not list status"}
render
end
end
diff --git a/chef-server-webui/app/controllers/users.rb b/chef-server-webui/app/controllers/users.rb
index 4b11803d52..39c08089d0 100644
--- a/chef-server-webui/app/controllers/users.rb
+++ b/chef-server-webui/app/controllers/users.rb
@@ -32,7 +32,8 @@ class ChefServerWebui::Users < ChefServerWebui::Application
authorized_user
@users = Chef::WebUIUser.list
render
- rescue
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
set_user_and_redirect
end
end
@@ -43,7 +44,8 @@ class ChefServerWebui::Users < ChefServerWebui::Application
raise Forbidden, "The current user is not an Administrator, you can only Show and Edit the user itself. To control other users, login as an Administrator." unless params[:user_id] == session[:user] unless session[:level] == :admin
@user = Chef::WebUIUser.load(params[:user_id])
render
- rescue
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
set_user_and_redirect
end
end
@@ -52,13 +54,10 @@ class ChefServerWebui::Users < ChefServerWebui::Application
def show
begin
raise Forbidden, "The current user is not an Administrator, you can only Show and Edit the user itself. To control other users, login as an Administrator." unless params[:user_id] == session[:user] unless session[:level] == :admin
- begin
- @user = Chef::WebUIUser.load(params[:user_id])
- rescue Net::HTTPServerException => e
- raise NotFound, "Cannot find user #{params[:user_id]}"
- end
+ @user = Chef::WebUIUser.load(params[:user_id])
render
- rescue
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
set_user_and_redirect
end
end
@@ -66,11 +65,8 @@ class ChefServerWebui::Users < ChefServerWebui::Application
# PUT to /users/:user_id/update
def update
begin
- begin
- @user = Chef::WebUIUser.load(params[:user_id])
- rescue Net::HTTPServerException => e
- raise NotFound, "Cannot find user #{params[:user_id]}"
- end
+ @user = Chef::WebUIUser.load(params[:user_id])
+
if session[:level] == :admin and ['true','false'].include? params[:admin]
@user.admin = str_to_bool(params[:admin])
end
@@ -91,8 +87,9 @@ class ChefServerWebui::Users < ChefServerWebui::Application
@user.save
@_message = { :notice => "Updated User #{@user.name}" }
render :show
- rescue
- @_message = { :error => $! }
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = { :error => "Could not update user" }
render :edit
end
end
@@ -102,7 +99,8 @@ class ChefServerWebui::Users < ChefServerWebui::Application
authorized_user
@user = Chef::WebUIUser.new
render
- rescue
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
set_user_and_redirect
end
end
@@ -115,18 +113,11 @@ class ChefServerWebui::Users < ChefServerWebui::Application
@user.set_password(params[:password], params[:password2])
@user.admin = true if params[:admin]
(params[:openid].length == 0 || params[:openid].nil?) ? @user.set_openid(nil) : @user.set_openid(URI.parse(params[:openid]).normalize.to_s)
- begin
- @user.create
- rescue Net::HTTPServerException => e
- if e.message =~ /403/
- raise ArgumentError, "User already exists"
- else
- raise e
- end
- end
+ @user.create
redirect(slice_url(:users), :message => { :notice => "Created User #{params[:name]}" })
- rescue
- @_message = { :error => $! }
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
+ @_message = { :error => "Could not create user" }
session[:level] != :admin ? set_user_and_redirect : (render :new)
end
end
@@ -138,16 +129,13 @@ class ChefServerWebui::Users < ChefServerWebui::Application
def login_exec
begin
- begin
- @user = Chef::WebUIUser.load(params[:name])
- rescue Net::HTTPServerException => e
- raise(Unauthorized, "Wrong username or password.")
- end
+ @user = Chef::WebUIUser.load(params[:name])
raise(Unauthorized, "Wrong username or password.") unless @user.verify_password(params[:password])
complete
- rescue
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
@user = Chef::WebUIUser.new
- @_message = { :error => $! }
+ @_message = { :error => "Could not complete logging in." }
render :login
end
end
@@ -171,7 +159,8 @@ class ChefServerWebui::Users < ChefServerWebui::Application
@user.destroy
logout if params[:user_id] == session[:user]
redirect(absolute_slice_url(:users), {:message => { :notice => "User #{params[:user_id]} deleted successfully" }, :permanent => true})
- rescue
+ rescue => e
+ Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
session[:level] != :admin ? set_user_and_redirect : redirect_to_list_users({ :error => $! })
end
end