mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
first pass at describe security groups
This commit is contained in:
parent
d40995dd17
commit
2180a50662
3 changed files with 116 additions and 7 deletions
|
@ -142,6 +142,19 @@ module Fog
|
||||||
}.merge!(params), Fog::Parsers::AWS::EC2::DescribeImages.new)
|
}.merge!(params), Fog::Parsers::AWS::EC2::DescribeImages.new)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Describe all or specified security groups
|
||||||
|
#
|
||||||
|
# ==== Parameters
|
||||||
|
# group_name<~Array>:: List of groups to describe, defaults to all
|
||||||
|
#
|
||||||
|
# === Returns
|
||||||
|
def describe_security_groups(group_name = [])
|
||||||
|
params = indexed_params('GroupName', group_name)
|
||||||
|
request({
|
||||||
|
'Action' => 'DescribeSecurityGroups',
|
||||||
|
}.merge!(params), Fog::Parsers::AWS::EC2::DescribeSecurityGroups.new)
|
||||||
|
end
|
||||||
|
|
||||||
# Describe all or specified volumes.
|
# Describe all or specified volumes.
|
||||||
#
|
#
|
||||||
# ==== Parameters
|
# ==== Parameters
|
||||||
|
@ -221,6 +234,8 @@ module Fog
|
||||||
:method => 'POST'
|
:method => 'POST'
|
||||||
})
|
})
|
||||||
|
|
||||||
|
p response
|
||||||
|
|
||||||
if parser && !response.body.empty?
|
if parser && !response.body.empty?
|
||||||
Nokogiri::XML::SAX::Parser.new(parser).parse(response.body.split(/<\?xml.*\?>/)[1])
|
Nokogiri::XML::SAX::Parser.new(parser).parse(response.body.split(/<\?xml.*\?>/)[1])
|
||||||
response.body = parser.response
|
response.body = parser.response
|
||||||
|
|
|
@ -122,6 +122,88 @@ module Fog
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class DescribeSecurityGroups < Fog::Parsers::Base
|
||||||
|
|
||||||
|
def reset
|
||||||
|
@group = {}
|
||||||
|
@ip_permission = { :groups => [], :ip_ranges => []}
|
||||||
|
@ip_range = {}
|
||||||
|
@in_ip_permissions = false
|
||||||
|
@item = { :ip_permissions => [] }
|
||||||
|
@response = { :security_group_info => [] }
|
||||||
|
end
|
||||||
|
|
||||||
|
def start_element(name, attrs = [])
|
||||||
|
if name == 'ipPermissions'
|
||||||
|
@in_ip_permissions = true
|
||||||
|
end
|
||||||
|
if name == 'groups'
|
||||||
|
@in_groups = true
|
||||||
|
end
|
||||||
|
if name == 'ip_ranges'
|
||||||
|
@in_ip_ranges = true
|
||||||
|
end
|
||||||
|
@value = ''
|
||||||
|
end
|
||||||
|
|
||||||
|
def end_element(name)
|
||||||
|
if !@in_ip_permissions
|
||||||
|
case name
|
||||||
|
when 'groupName'
|
||||||
|
@item[:group_name] = @value
|
||||||
|
when 'groupDescription'
|
||||||
|
@item[:group_description] = @value
|
||||||
|
when 'item'
|
||||||
|
@response[:security_group_info] << @item
|
||||||
|
@item = { :ip_permissions => [] }
|
||||||
|
when 'ownerId'
|
||||||
|
@item[:owner_id] = @value
|
||||||
|
end
|
||||||
|
elsif @in_groups
|
||||||
|
case name
|
||||||
|
when 'groupName'
|
||||||
|
@group[:group_name] = @value
|
||||||
|
when 'groups'
|
||||||
|
@in_groups = false
|
||||||
|
when 'item'
|
||||||
|
unless @group == {}
|
||||||
|
@ip_permission[:groups] << @group
|
||||||
|
end
|
||||||
|
@group = {}
|
||||||
|
when 'userId'
|
||||||
|
@group[:user_id] = @value
|
||||||
|
end
|
||||||
|
elsif @in_ip_ranges
|
||||||
|
case name
|
||||||
|
when 'cidrIp'
|
||||||
|
@ip_range[:cidr_ip] = @value
|
||||||
|
when 'ipRanges'
|
||||||
|
@in_ip_ranges = false
|
||||||
|
when 'item'
|
||||||
|
unless @ip_range == {}
|
||||||
|
@ip_permission[:ip_ranges] << @ip_range
|
||||||
|
end
|
||||||
|
@ip_range = {}
|
||||||
|
end
|
||||||
|
elsif @in_ip_permissions
|
||||||
|
case name
|
||||||
|
when 'fromPort'
|
||||||
|
@item[:from_port] = @value
|
||||||
|
when 'item'
|
||||||
|
@item[:ip_permissions] << @ip_permission
|
||||||
|
@ip_permission = { :groups => [], :ip_ranges => []}
|
||||||
|
when 'ipProtocol'
|
||||||
|
@ip_permission[:ip_protocol] = @value
|
||||||
|
when 'ipPermissions'
|
||||||
|
@in_ip_permissions = false
|
||||||
|
when 'toPort'
|
||||||
|
@item[:to_port] = @value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
class DescribeVolumes < Fog::Parsers::Base
|
class DescribeVolumes < Fog::Parsers::Base
|
||||||
|
|
||||||
def reset
|
def reset
|
||||||
|
@ -131,6 +213,13 @@ module Fog
|
||||||
@volume = { :attachment_set => [] }
|
@volume = { :attachment_set => [] }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def start_element(name, attrs = [])
|
||||||
|
if name == 'attachmentSet'
|
||||||
|
@in_attachment_set = true
|
||||||
|
end
|
||||||
|
@value = ''
|
||||||
|
end
|
||||||
|
|
||||||
def end_element(name)
|
def end_element(name)
|
||||||
if @in_attachment_set
|
if @in_attachment_set
|
||||||
case name
|
case name
|
||||||
|
@ -173,13 +262,6 @@ module Fog
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def start_element(name, attrs = [])
|
|
||||||
if name == 'attachmentSet'
|
|
||||||
@in_attachment_set = true
|
|
||||||
end
|
|
||||||
@value = ''
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
12
spec/aws/ec2/describe_security_groups_spec.rb
Normal file
12
spec/aws/ec2/describe_security_groups_spec.rb
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
require File.dirname(__FILE__) + '/../../spec_helper'
|
||||||
|
|
||||||
|
describe 'EC2.describe_security_groups' do
|
||||||
|
|
||||||
|
it "should return proper attributes with no params" do
|
||||||
|
actual = ec2.describe_security_groups
|
||||||
|
p actual
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should return proper attributes with params"
|
||||||
|
|
||||||
|
end
|
Loading…
Add table
Reference in a new issue