mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[AWS|RDS] Support for creating and removing subnet groups.
This commit is contained in:
parent
8a4c909211
commit
21e2c64597
6 changed files with 102 additions and 3 deletions
|
@ -12,7 +12,18 @@ module Fog
|
|||
attribute :vpc_id, :aliases => 'VpcId'
|
||||
attribute :subnet_ids, :aliases => 'Subnets'
|
||||
|
||||
# TODO: ready?, save, destroy
|
||||
# TODO: ready?
|
||||
#
|
||||
def save
|
||||
requires :description, :id, :subnet_ids
|
||||
service.create_db_subnet_group(id, subnet_ids, description)
|
||||
reload
|
||||
end
|
||||
|
||||
def destroy
|
||||
requires :id
|
||||
service.delete_db_subnet_group(id)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
35
lib/fog/aws/parsers/rds/delete_db_subnet_group.rb
Normal file
35
lib/fog/aws/parsers/rds/delete_db_subnet_group.rb
Normal file
|
@ -0,0 +1,35 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module RDS
|
||||
|
||||
require 'fog/aws/parsers/rds/subnet_group_parser'
|
||||
|
||||
class DeleteDBSubnetGroup < Fog::Parsers::AWS::RDS::SubnetGroupParser
|
||||
|
||||
def reset
|
||||
@response = { 'DeleteDBSubnetGroupResponse' => {}, 'ResponseMetadata' => {} }
|
||||
super
|
||||
end
|
||||
|
||||
def start_element(name, attrs = [])
|
||||
super
|
||||
end
|
||||
|
||||
def end_element(name)
|
||||
case name
|
||||
when 'RequestId'
|
||||
@response['ResponseMetadata'][name] = value
|
||||
else
|
||||
super
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -49,7 +49,8 @@ module Fog
|
|||
|
||||
request :create_db_subnet_group
|
||||
request :describe_db_subnet_groups
|
||||
# TODO: :delete_db_subnet_group, :modify_db_subnet_group
|
||||
request :delete_db_subnet_group
|
||||
# TODO: :modify_db_subnet_group
|
||||
|
||||
request :describe_orderable_db_instance_options
|
||||
|
||||
|
|
|
@ -33,7 +33,13 @@ module Fog
|
|||
raise Fog::AWS::RDS::IdentifierTaken.new("DBSubnetGroupAlreadyExists => The subnet group '#{name}' already exists")
|
||||
end
|
||||
|
||||
subnets = subnet_ids.map { |snid| Fog::Compute[:aws].subnets.get(snid) }
|
||||
# collection = Fog::Compute::AWS.new(:aws_access_key_id => 'mock key', :aws_secret_access_key => 'mock secret')
|
||||
collection = Fog::Compute[:aws]
|
||||
subnets = subnet_ids.map do |snid|
|
||||
subnet = collection.subnets.get(snid)
|
||||
raise Fog::AWS::RDS::NotFound.new("InvalidSubnet => The subnet '#{snid}' was not found") if subnet.nil?
|
||||
subnet
|
||||
end
|
||||
vpc_id = subnets.first.vpc_id
|
||||
|
||||
data = {
|
||||
|
|
42
lib/fog/aws/requests/rds/delete_db_subnet_group.rb
Normal file
42
lib/fog/aws/requests/rds/delete_db_subnet_group.rb
Normal file
|
@ -0,0 +1,42 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class RDS
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/rds/delete_db_subnet_group'
|
||||
|
||||
# Deletes a db subnet group
|
||||
# http://docs.aws.amazon.com/AmazonRDS/2013-09-09/APIReference/API_DeleteDBSubnetGroup.html
|
||||
# ==== Parameters
|
||||
# * DBSubnetGroupName <~String> - The name for the DB Subnet Group. This value is stored as a lowercase string. Must contain no more than 255 alphanumeric characters or hyphens. Must not be "Default".
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
# * body<~Hash>:
|
||||
def delete_db_subnet_group(name)
|
||||
params = { 'Action' => 'DeleteDBSubnetGroup',
|
||||
'DBSubnetGroupName' => name,
|
||||
:parser => Fog::Parsers::AWS::RDS::DeleteDBSubnetGroup.new }
|
||||
request(params)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class Mock
|
||||
|
||||
def delete_db_subnet_group(name)
|
||||
response = Excon::Response.new
|
||||
unless self.data[:subnet_groups] && self.data[:subnet_groups][name]
|
||||
raise Fog::AWS::RDS::NotFound.new("DBSubnetGroupNotFound => The subnet group '#{name}' doesn't exists")
|
||||
end
|
||||
|
||||
response.body = {
|
||||
'ResponseMetadata'=>{ 'RequestId'=> Fog::AWS::Mock.request_id },
|
||||
'return' => true,
|
||||
}
|
||||
response
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -38,6 +38,10 @@ Shindo.tests('AWS::RDS | subnet group requests', ['aws', 'rds']) do
|
|||
Fog::AWS[:rds].describe_db_subnet_groups.body
|
||||
end
|
||||
|
||||
tests("#delete_db_subnet_group").formats(AWS::RDS::Formats::BASIC) do
|
||||
Fog::AWS[:rds].delete_db_subnet_group(@subnet_group_name).body
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@subnets.each do |sn|
|
Loading…
Reference in a new issue