You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by mf...@apache.org on 2010/11/05 12:08:00 UTC
svn commit: r1031511 - in /incubator/deltacloud/trunk/server/lib/deltacloud:
helpers/application_helper.rb models/instance.rb
Author: mfojtik
Date: Fri Nov 5 11:07:59 2010
New Revision: 1031511
URL: http://svn.apache.org/viewvc?rev=1031511&view=rev
Log:
Added 405 HTTP code when calling invalid instance action
Modified:
incubator/deltacloud/trunk/server/lib/deltacloud/helpers/application_helper.rb
incubator/deltacloud/trunk/server/lib/deltacloud/models/instance.rb
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/helpers/application_helper.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/helpers/application_helper.rb?rev=1031511&r1=1031510&r2=1031511&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/helpers/application_helper.rb (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/helpers/application_helper.rb Fri Nov 5 11:07:59 2010
@@ -102,6 +102,14 @@ module ApplicationHelper
end
def instance_action(name)
+ original_instance = driver.instance(credentials, :id => params[:id])
+
+ # If original instance doesn't include called action
+ # return with 405 error (Method is not Allowed)
+ unless driver.instance_actions_for(original_instance.state).include?(name.to_sym)
+ return report_error(405, 'not_allowed')
+ end
+
@instance = driver.send(:"#{name}_instance", credentials, params["id"])
return redirect(instances_url) if name.eql?(:destroy) or @instance.class!=Instance
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/models/instance.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/models/instance.rb?rev=1031511&r1=1031510&r2=1031511&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/models/instance.rb (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/models/instance.rb Fri Nov 5 11:07:59 2010
@@ -29,10 +29,20 @@ class Instance < BaseModel
attr_accessor :private_addresses
attr_accessor :instance_profile
attr_accessor :launch_time
- def initialize(init=nil)
- super(init)
- self.actions = [] if self.actions.nil?
- self.public_addresses = [] if self.public_addresses.nil?
- self.private_addresses = [] if self.private_addresses.nil?
+
+ def initialize(init=nil)
+ super(init)
+ self.actions = [] if self.actions.nil?
+ self.public_addresses = [] if self.public_addresses.nil?
+ self.private_addresses = [] if self.private_addresses.nil?
end
+
+ def method_missing(name, *args)
+ if name =~ /is_(\w+)\?/
+ return true if self.state.downcase.eql?($1)
+ else
+ raise NoMethodError
+ end
+ end
+
end