Return-Path: X-Original-To: apmail-deltacloud-commits-archive@www.apache.org Delivered-To: apmail-deltacloud-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 23D53C70A for ; Fri, 28 Jun 2013 09:06:42 +0000 (UTC) Received: (qmail 22726 invoked by uid 500); 28 Jun 2013 09:06:41 -0000 Delivered-To: apmail-deltacloud-commits-archive@deltacloud.apache.org Received: (qmail 22687 invoked by uid 500); 28 Jun 2013 09:06:41 -0000 Mailing-List: contact commits-help@deltacloud.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@deltacloud.apache.org Delivered-To: mailing list commits@deltacloud.apache.org Received: (qmail 22454 invoked by uid 99); 28 Jun 2013 09:06:30 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 28 Jun 2013 09:06:30 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 950713A3C5; Fri, 28 Jun 2013 09:06:30 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: marios@apache.org To: commits@deltacloud.apache.org Date: Fri, 28 Jun 2013 09:06:33 -0000 Message-Id: In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [4/9] git commit: EC2 driver - Fix for determining instance_actions on ebs/root_store instances EC2 driver - Fix for determining instance_actions on ebs/root_store instances https://github.com/deltacloud/deltacloud-core/pull/47 Project: http://git-wip-us.apache.org/repos/asf/deltacloud/repo Commit: http://git-wip-us.apache.org/repos/asf/deltacloud/commit/fd92d39d Tree: http://git-wip-us.apache.org/repos/asf/deltacloud/tree/fd92d39d Diff: http://git-wip-us.apache.org/repos/asf/deltacloud/diff/fd92d39d Branch: refs/heads/master Commit: fd92d39d4efd9491322697a54950fc0685518015 Parents: 6307f26 Author: marios Authored: Tue Jun 18 12:31:59 2013 +0300 Committer: marios Committed: Fri Jun 28 12:05:50 2013 +0300 ---------------------------------------------------------------------- server/lib/deltacloud/drivers/base_driver.rb | 2 +- server/lib/deltacloud/drivers/ec2/ec2_driver.rb | 16 ++++++++++++---- server/lib/deltacloud/helpers/deltacloud_helper.rb | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/deltacloud/blob/fd92d39d/server/lib/deltacloud/drivers/base_driver.rb ---------------------------------------------------------------------- diff --git a/server/lib/deltacloud/drivers/base_driver.rb b/server/lib/deltacloud/drivers/base_driver.rb index 439f099..8fa58b2 100644 --- a/server/lib/deltacloud/drivers/base_driver.rb +++ b/server/lib/deltacloud/drivers/base_driver.rb @@ -135,7 +135,7 @@ module Deltacloud self.class.instance_state_machine end - def instance_actions_for(state, instance = nil) + def instance_actions_for(state, params={}) actions = [] states = instance_state_machine.states() current_state = states.find{|e| e.name == state.underscore.to_sym } http://git-wip-us.apache.org/repos/asf/deltacloud/blob/fd92d39d/server/lib/deltacloud/drivers/ec2/ec2_driver.rb ---------------------------------------------------------------------- diff --git a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb index fdc282b..cc3878a 100644 --- a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb +++ b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb @@ -137,9 +137,9 @@ module Deltacloud end - def instance_actions_for(state, instance = nil) - if instance - ebs = (instance[:root_device_type] == "ebs") ? true : false + def instance_actions_for(state, params={}) + unless params.empty? + ebs = is_ebs_instance?(params) end actions = [] states = instance_state_machine.states() @@ -1084,6 +1084,14 @@ module Deltacloud type == 'ebs' ? 'persistent' : 'transient' end + #params: {:image_id => 123, :persistent_image=>true, :credentials => creds} + def is_ebs_instance?(params) + return params[:persistent_image] unless params[:persistent_image].nil? + (image(params[:credentials], {:id=>params[:image_id]}).root_type == "persistent") ? true : false + end + + + def convert_instance(instance) can_create_image = 'ebs'.eql?(instance[:root_device_type]) and 'RUNNING'.eql?(convert_state(instance[:aws_state])) inst_profile_opts={} @@ -1100,7 +1108,7 @@ module Deltacloud :state => convert_state(instance[:aws_state]), :image_id => instance[:aws_image_id], :owner_id => instance[:aws_owner], - :actions => instance_actions_for(convert_state(instance[:aws_state]), instance), + :actions => instance_actions_for(convert_state(instance[:aws_state]), {:persistent_image => (instance[:root_device_type] == "ebs")}), :keyname => instance[:ssh_key_name], :launch_time => instance[:aws_launch_time], :instance_profile => InstanceProfile.new(instance[:aws_instance_type], inst_profile_opts), http://git-wip-us.apache.org/repos/asf/deltacloud/blob/fd92d39d/server/lib/deltacloud/helpers/deltacloud_helper.rb ---------------------------------------------------------------------- diff --git a/server/lib/deltacloud/helpers/deltacloud_helper.rb b/server/lib/deltacloud/helpers/deltacloud_helper.rb index 2b5d347..64f68f8 100644 --- a/server/lib/deltacloud/helpers/deltacloud_helper.rb +++ b/server/lib/deltacloud/helpers/deltacloud_helper.rb @@ -150,7 +150,7 @@ module Deltacloud::Helpers # 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) + unless driver.instance_actions_for(original_instance.state, {:image_id=>original_instance.image_id, :credentials=>credentials}).include?(name.to_sym) return report_error(405) end