mirror of
https://github.com/fog/fog-aws.git
synced 2022-11-09 13:50:52 -05:00
Merge pull request #630 from ekohl/drop-ipaddress
Drop ipaddress dependency in favor of built in ipaddr
This commit is contained in:
commit
0461653ccf
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…
Add table
Add a link
Reference in a new issue