mirror of
https://github.com/fog/fog-aws.git
synced 2022-11-09 13:50:52 -05:00
Drop ipaddress dependency in favor of built in ipaddr
The ipaddr module is part of Ruby itself and can be used to check for range inclusion.
This commit is contained in:
parent
2a3fe7ae0e
commit
db8e8a706c
3 changed files with 10 additions and 8 deletions
|
@ -31,5 +31,4 @@ Gem::Specification.new do |spec|
|
||||||
spec.add_dependency 'fog-core', '~> 2.1'
|
spec.add_dependency 'fog-core', '~> 2.1'
|
||||||
spec.add_dependency 'fog-json', '~> 1.1'
|
spec.add_dependency 'fog-json', '~> 1.1'
|
||||||
spec.add_dependency 'fog-xml', '~> 0.1'
|
spec.add_dependency 'fog-xml', '~> 0.1'
|
||||||
spec.add_dependency 'ipaddress', '~> 0.8'
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,6 +2,7 @@ module Fog
|
||||||
module AWS
|
module AWS
|
||||||
class Compute
|
class Compute
|
||||||
class Real
|
class Real
|
||||||
|
require 'ipaddr'
|
||||||
require 'fog/aws/parsers/compute/create_network_interface'
|
require 'fog/aws/parsers/compute/create_network_interface'
|
||||||
|
|
||||||
# Creates a network interface
|
# Creates a network interface
|
||||||
|
@ -68,7 +69,7 @@ module Fog
|
||||||
raise Fog::AWS::Compute::Error.new("Unknown subnet '#{subnetId}' specified")
|
raise Fog::AWS::Compute::Error.new("Unknown subnet '#{subnetId}' specified")
|
||||||
else
|
else
|
||||||
id = Fog::AWS::Mock.network_interface_id
|
id = Fog::AWS::Mock.network_interface_id
|
||||||
cidr_block = IPAddress.parse(subnet['cidrBlock'])
|
cidr_block = IPAddr.new(subnet['cidrBlock'])
|
||||||
|
|
||||||
groups = {}
|
groups = {}
|
||||||
if options['GroupSet']
|
if options['GroupSet']
|
||||||
|
@ -82,12 +83,14 @@ module Fog
|
||||||
end
|
end
|
||||||
|
|
||||||
if options['PrivateIpAddress'].nil?
|
if options['PrivateIpAddress'].nil?
|
||||||
|
range = cidr_block.to_range
|
||||||
# Here we try to act like a DHCP server and pick the first
|
# Here we try to act like a DHCP server and pick the first
|
||||||
# available IP (not including the first in the cidr block,
|
# available IP (not including the first in the cidr block,
|
||||||
# which is typically reserved for the gateway).
|
# which is typically reserved for the gateway).
|
||||||
cidr_block.each_host do |p_ip|
|
range = range.drop(2)[0..-2] if cidr_block.ipv4?
|
||||||
unless self.data[:network_interfaces].map{ |ni, ni_conf| ni_conf['privateIpAddress'] }.include?p_ip.to_s ||
|
|
||||||
cidr_block.first == p_ip
|
range.each do |p_ip|
|
||||||
|
unless self.data[:network_interfaces].map{ |ni, ni_conf| ni_conf['privateIpAddress'] }.include?p_ip.to_s
|
||||||
options['PrivateIpAddress'] = p_ip.to_s
|
options['PrivateIpAddress'] = p_ip.to_s
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,7 @@ module Fog
|
||||||
module AWS
|
module AWS
|
||||||
class Compute
|
class Compute
|
||||||
class Real
|
class Real
|
||||||
require 'ipaddress'
|
require 'ipaddr'
|
||||||
require 'fog/aws/parsers/compute/create_subnet'
|
require 'fog/aws/parsers/compute/create_subnet'
|
||||||
|
|
||||||
# Creates a Subnet with the CIDR block you specify.
|
# Creates a Subnet with the CIDR block you specify.
|
||||||
|
@ -50,11 +50,11 @@ module Fog
|
||||||
if vpc.nil?
|
if vpc.nil?
|
||||||
raise Fog::AWS::Compute::NotFound.new("The vpc ID '#{vpcId}' does not exist")
|
raise Fog::AWS::Compute::NotFound.new("The vpc ID '#{vpcId}' does not exist")
|
||||||
end
|
end
|
||||||
if ! ::IPAddress.parse(vpc['cidrBlock']).include?(::IPAddress.parse(cidrBlock))
|
if ! ::IPAddr.new(vpc['cidrBlock']).include?(::IPAddr.new(cidrBlock))
|
||||||
raise Fog::AWS::Compute::Error.new("Range => The CIDR '#{cidrBlock}' is invalid.")
|
raise Fog::AWS::Compute::Error.new("Range => The CIDR '#{cidrBlock}' is invalid.")
|
||||||
end
|
end
|
||||||
self.data[:subnets].select{ |s| s['vpcId'] == vpcId }.each do |subnet|
|
self.data[:subnets].select{ |s| s['vpcId'] == vpcId }.each do |subnet|
|
||||||
if ::IPAddress.parse(subnet['cidrBlock']).include?(::IPAddress.parse(cidrBlock))
|
if ::IPAddr.new(subnet['cidrBlock']).include?(::IPAddr.new(cidrBlock))
|
||||||
raise Fog::AWS::Compute::Error.new("Conflict => The CIDR '#{cidrBlock}' conflicts with another subnet")
|
raise Fog::AWS::Compute::Error.new("Conflict => The CIDR '#{cidrBlock}' conflicts with another subnet")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue