fog-aws 1.4.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +9 -8
  3. data/CHANGELOG.md +40 -2
  4. data/CONTRIBUTING.md +6 -6
  5. data/CONTRIBUTORS.md +104 -1
  6. data/LICENSE.md +1 -1
  7. data/fog-aws.gemspec +4 -2
  8. data/lib/fog/aws.rb +1 -0
  9. data/lib/fog/aws/compute.rb +86 -2
  10. data/lib/fog/aws/credential_fetcher.rb +4 -2
  11. data/lib/fog/aws/mock.rb +8 -0
  12. data/lib/fog/aws/models/compute/flavors.rb +40 -0
  13. data/lib/fog/aws/models/compute/subnet.rb +1 -0
  14. data/lib/fog/aws/models/compute/vpc.rb +11 -2
  15. data/lib/fog/aws/models/iam/access_keys.rb +0 -2
  16. data/lib/fog/aws/models/rds/instance_option.rb +6 -0
  17. data/lib/fog/aws/parsers/compute/create_subnet.rb +2 -0
  18. data/lib/fog/aws/parsers/compute/describe_subnets.rb +1 -1
  19. data/lib/fog/aws/parsers/compute/describe_vpcs.rb +71 -37
  20. data/lib/fog/aws/parsers/iam/list_access_keys.rb +1 -1
  21. data/lib/fog/aws/parsers/rds/describe_orderable_db_instance_options.rb +4 -3
  22. data/lib/fog/aws/requests/auto_scaling/detach_instances.rb +3 -4
  23. data/lib/fog/aws/requests/compute/authorize_security_group_egress.rb +8 -6
  24. data/lib/fog/aws/requests/compute/authorize_security_group_ingress.rb +25 -21
  25. data/lib/fog/aws/requests/compute/copy_snapshot.rb +22 -9
  26. data/lib/fog/aws/requests/compute/create_network_interface.rb +2 -2
  27. data/lib/fog/aws/requests/compute/create_route_table.rb +1 -1
  28. data/lib/fog/aws/requests/compute/create_security_group.rb +24 -19
  29. data/lib/fog/aws/requests/compute/create_subnet.rb +14 -10
  30. data/lib/fog/aws/requests/compute/create_vpc.rb +38 -10
  31. data/lib/fog/aws/requests/compute/delete_security_group.rb +9 -9
  32. data/lib/fog/aws/requests/compute/describe_network_interface_attribute.rb +16 -14
  33. data/lib/fog/aws/requests/compute/describe_security_groups.rb +30 -6
  34. data/lib/fog/aws/requests/compute/describe_subnets.rb +12 -11
  35. data/lib/fog/aws/requests/compute/modify_network_interface_attribute.rb +3 -3
  36. data/lib/fog/aws/requests/compute/revoke_security_group_egress.rb +19 -25
  37. data/lib/fog/aws/requests/compute/revoke_security_group_ingress.rb +18 -25
  38. data/lib/fog/aws/requests/compute/run_instances.rb +1 -1
  39. data/lib/fog/aws/requests/efs/create_mount_target.rb +8 -4
  40. data/lib/fog/aws/requests/elb/create_load_balancer.rb +6 -37
  41. data/lib/fog/aws/requests/kinesis/put_record.rb +1 -2
  42. data/lib/fog/aws/requests/kinesis/put_records.rb +1 -2
  43. data/lib/fog/aws/requests/lambda/invoke.rb +1 -1
  44. data/lib/fog/aws/requests/rds/describe_orderable_db_instance_options.rb +12 -6
  45. data/lib/fog/aws/requests/storage/put_object.rb +0 -1
  46. data/lib/fog/aws/service_mapper.rb +129 -0
  47. data/lib/fog/aws/version.rb +1 -1
  48. data/tests/helpers/collection_helper.rb +0 -6
  49. data/tests/models/efs/mount_target_tests.rb +3 -1
  50. data/tests/models/elasticache/subnet_groups_tests.rb +0 -1
  51. data/tests/models/storage/file_tests.rb +0 -4
  52. data/tests/models/storage/url_tests.rb +1 -20
  53. data/tests/models/storage/versions_tests.rb +0 -5
  54. data/tests/requests/compute/network_interface_tests.rb +2 -13
  55. data/tests/requests/compute/subnet_tests.rb +3 -1
  56. data/tests/requests/compute/vpc_tests.rb +8 -6
  57. data/tests/requests/dns/dns_tests.rb +0 -4
  58. data/tests/requests/efs/file_system_tests.rb +1 -1
  59. data/tests/requests/iam/managed_policy_tests.rb +0 -1
  60. data/tests/requests/iam/versioned_managed_policy_tests.rb +3 -12
  61. data/tests/requests/lambda/helper.rb +2 -2
  62. data/tests/requests/rds/helper.rb +7 -2
  63. data/tests/requests/rds/instance_option_tests.rb +7 -1
  64. data/tests/requests/storage/object_tests.rb +2 -11
  65. metadata +9 -10
  66. data/gemfiles/Gemfile-ruby-1.8.7 +0 -6
  67. data/gemfiles/Gemfile-ruby-1.9 +0 -7
@@ -18,15 +18,17 @@ module Fog
18
18
  # * body<~Hash>:
19
19
  # * 'requestId'<~String> - Id of request
20
20
  # * 'subnet'<~Array>:
21
- # * 'subnetId'<~String> - The Subnet's ID
22
- # * 'state'<~String> - The current state of the Subnet. ['pending', 'available']
23
- # * 'cidrBlock'<~String> - The CIDR block the Subnet covers.
24
- # * 'AvailableIpAddressCount'<~Integer> - The number of unused IP addresses in the subnet (the IP addresses for any stopped
25
- # instances are considered unavailable)
26
- # * 'AvailabilityZone'<~String> - The Availability Zone the subnet is in
27
- # * 'tagSet'<~Array>: Tags assigned to the resource.
28
- # * 'key'<~String> - Tag's key
29
- # * 'value'<~String> - Tag's value
21
+ # * 'subnetId'<~String> - The Subnet's ID
22
+ # * 'state'<~String> - The current state of the Subnet. ['pending', 'available']
23
+ # * 'cidrBlock'<~String> - The CIDR block the Subnet covers.
24
+ # * 'availableIpAddressCount'<~Integer> - The number of unused IP addresses in the subnet (the IP addresses for any stopped
25
+ # instances are considered unavailable)
26
+ # * 'availabilityZone'<~String> - The Availability Zone the subnet is in
27
+ # * 'tagSet'<~Array>: Tags assigned to the resource.
28
+ # * 'key'<~String> - Tag's key
29
+ # * 'value'<~String> - Tag's value
30
+ # * 'mapPublicIpOnLaunch'<~Boolean> - Indicates whether instances launched in this subnet receive a public IPv4 address.
31
+ # * 'defaultForAz'<~Boolean> - Indicates whether this is the default subnet for the Availability Zone.
30
32
  #
31
33
  # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/2011-07-15/APIReference/ApiReference-query-CreateSubnet.html]
32
34
  def create_subnet(vpcId, cidrBlock, options = {})
@@ -65,7 +67,9 @@ module Fog
65
67
  'cidrBlock' => cidrBlock,
66
68
  'availableIpAddressCount' => "255",
67
69
  'availabilityZone' => av_zone,
68
- 'tagSet' => {}
70
+ 'tagSet' => {},
71
+ 'mapPublicIpOnLaunch' => true,
72
+ 'defaultForAz' => true
69
73
  }
70
74
 
71
75
  # Add this subnet to the default network ACL
@@ -43,16 +43,18 @@ module Fog
43
43
  response.status = 200
44
44
  vpc_id = Fog::AWS::Mock.vpc_id
45
45
  vpc = {
46
- 'vpcId' => vpc_id,
47
- 'state' => 'pending',
48
- 'cidrBlock' => cidrBlock,
49
- 'dhcpOptionsId' => Fog::AWS::Mock.request_id,
50
- 'tagSet' => {},
51
- 'enableDnsSupport' => true,
52
- 'enableDnsHostnames' => false,
53
- 'mapPublicIpOnLaunch' => false,
54
- 'classicLinkEnabled' => false,
55
- 'classicLinkDnsSupport' => false
46
+ 'vpcId' => vpc_id,
47
+ 'state' => 'pending',
48
+ 'cidrBlock' => cidrBlock,
49
+ 'dhcpOptionsId' => Fog::AWS::Mock.request_id,
50
+ 'tagSet' => {},
51
+ 'enableDnsSupport' => true,
52
+ 'enableDnsHostnames' => false,
53
+ 'mapPublicIpOnLaunch' => false,
54
+ 'classicLinkEnabled' => false,
55
+ 'classicLinkDnsSupport' => false,
56
+ 'cidrBlockAssociationSet' => [{ 'cidrBlock' => cidrBlock, 'state' => 'associated', 'associationId' => "vpc-cidr-assoc-#{vpc_id}" }],
57
+ 'ipv6CidrBlockAssociationSet' => []
56
58
  }
57
59
  self.data[:vpcs].push(vpc)
58
60
 
@@ -75,6 +77,32 @@ module Fog
75
77
  # Manually override since Amazon doesn't let you create a default one
76
78
  self.data[:network_acls][default_nacl.network_acl_id]['default'] = true
77
79
 
80
+
81
+ # create default security groups
82
+ default_elb_group_name = "default_elb_#{Fog::Mock.random_hex(6)}"
83
+ default_elb_group_id = Fog::AWS::Mock.security_group_id
84
+
85
+ Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:security_groups][default_elb_group_id] = {
86
+ 'groupDescription' => 'default_elb security group',
87
+ 'groupName' => default_elb_group_name,
88
+ 'groupId' => default_elb_group_id,
89
+ 'ipPermissions' => [],
90
+ 'ownerId' => self.data[:owner_id],
91
+ 'vpcId' => vpc_id
92
+ }
93
+
94
+ default_group_name = 'default'
95
+ default_group_id = Fog::AWS::Mock.security_group_id
96
+
97
+ Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:security_groups][default_group_id] = {
98
+ 'groupDescription' => default_group_name,
99
+ 'groupName' => default_group_name,
100
+ 'groupId' => default_group_id,
101
+ 'ipPermissions' => [],
102
+ 'ownerId' => self.data[:owner_id],
103
+ 'vpcId' => vpc_id
104
+ }
105
+
78
106
  response.body = {
79
107
  'requestId' => Fog::AWS::Mock.request_id,
80
108
  'vpcSet' => [vpc]
@@ -47,12 +47,12 @@ module Fog
47
47
  raise Fog::Compute::AWS::Error.new("May not specify both group_name and group_id")
48
48
  end
49
49
 
50
- if id
51
- name = self.data[:security_groups].reject { |k,v| v['groupId'] != id } .keys.first
50
+ if name
51
+ id, _ = self.data[:security_groups].find { |_,v| v['groupName'] == name }
52
52
  end
53
53
 
54
- unless self.data[:security_groups][name]
55
- raise Fog::Compute::AWS::NotFound.new("The security group '#{name}' does not exist")
54
+ unless self.data[:security_groups][id]
55
+ raise Fog::Compute::AWS::NotFound.new("The security group '#{id}' does not exist")
56
56
  end
57
57
 
58
58
  response = Excon::Response.new
@@ -61,14 +61,14 @@ module Fog
61
61
 
62
62
  # ec2 authorizations
63
63
  self.region_data.each do |_, key_data|
64
- key_data[:security_groups].each do |group_name, group|
65
- next if group == self.data[:security_groups][name]
64
+ key_data[:security_groups].each do |group_id, group|
65
+ next if group == self.data[:security_groups][group_id]
66
66
 
67
67
  group['ipPermissions'].each do |group_ip_permission|
68
68
  group_ip_permission['groups'].each do |group_group_permission|
69
- if group_group_permission['groupName'] == name &&
69
+ if group_group_permission['groupId'] == group_id &&
70
70
  group_group_permission['userId'] == self.data[:owner_id]
71
- used_by_groups << "#{key_data[:owner_id]}:#{group_name}"
71
+ used_by_groups << "#{key_data[:owner_id]}:#{group['groupName']}"
72
72
  end
73
73
  end
74
74
  end
@@ -100,7 +100,7 @@ module Fog
100
100
  raise Fog::Compute::AWS::Error.new("InUse => There are active instances using security group '#{name}'")
101
101
  end
102
102
 
103
- self.data[:security_groups].delete(name)
103
+ self.data[:security_groups].delete(id)
104
104
  response.status = 200
105
105
  response.body = {
106
106
  'requestId' => Fog::AWS::Mock.request_id,
@@ -42,23 +42,25 @@ module Fog
42
42
  class Mock
43
43
  def describe_network_interface_attribute(network_interface_id, attribute)
44
44
  response = Excon::Response.new
45
- if self.data[:network_interfaces][network_interface_id]
45
+ network_interface = self.data[:network_interfaces][network_interface_id]
46
46
 
47
- response.status = 200
48
- response.body = {
49
- 'requestId' => Fog::AWS::Mock.request_id,
50
- 'networkInterfaceId' => network_interface_id
51
- }
52
- case attribute
53
- when 'description', 'groupSet', 'sourceDestCheck', 'attachment'
54
- response.body[attribute] = self.data[:network_interfaces][network_interface_id][attribute]
55
- else
56
- raise Fog::Compute::AWS::Error.new("Illegal attribute '#{attribute}' specified")
57
- end
58
- response
59
- else
47
+
48
+ unless network_interface
60
49
  raise Fog::Compute::AWS::NotFound.new("The network interface '#{network_interface_id}' does not exist")
61
50
  end
51
+
52
+ response.status = 200
53
+ response.body = {
54
+ 'requestId' => Fog::AWS::Mock.request_id,
55
+ 'networkInterfaceId' => network_interface_id
56
+ }
57
+ case attribute
58
+ when 'description', 'groupSet', 'sourceDestCheck', 'attachment'
59
+ response.body[attribute] = network_interface[attribute]
60
+ else
61
+ raise Fog::Compute::AWS::Error.new("Illegal attribute '#{attribute}' specified")
62
+ end
63
+ response
62
64
  end
63
65
  end
64
66
  end
@@ -66,22 +66,46 @@ module Fog
66
66
  'protocol' => 'ipProtocol',
67
67
  'to-port' => 'toPort'
68
68
  }
69
- security_group_groups = lambda { |security_group| (security_group['ipPermissions'] || []).map { |permission| permission["groups"] }.flatten.compact.uniq }
69
+
70
+ security_group_groups = lambda do |security_group|
71
+ (security_group['ipPermissions'] || []).map do |permission|
72
+ permission['groups']
73
+ end.flatten.compact.uniq
74
+ end
75
+
70
76
  for filter_key, filter_value in filters
71
77
  if permission_key = filter_key.split('ip-permission.')[1]
72
78
  if permission_key == 'group-name'
73
- security_group_info = security_group_info.reject{|security_group| !security_group_groups.call(security_group).find {|group| [*filter_value].include?(group['groupName'])}}
79
+ security_group_info = security_group_info.reject do |security_group|
80
+ !security_group_groups.call(security_group).find do |group|
81
+ [*filter_value].include?(group['groupName'])
82
+ end
83
+ end
74
84
  elsif permission_key == 'group-id'
75
- security_group_info = security_group_info.reject{|security_group| !security_group_groups.call(security_group).find {|group| [*filter_value].include?(group['groupId'])}}
85
+ security_group_info = security_group_info.reject do |security_group|
86
+ !security_group_groups.call(security_group).find do |group|
87
+ [*filter_value].include?(group['groupId'])
88
+ end
89
+ end
76
90
  elsif permission_key == 'user-id'
77
- security_group_info = security_group_info.reject{|security_group| !security_group_groups.call(security_group).find {|group| [*filter_value].include?(group['userId'])}}
91
+ security_group_info = security_group_info.reject do |security_group|
92
+ !security_group_groups.call(security_group).find do |group|
93
+ [*filter_value].include?(group['userId'])
94
+ end
95
+ end
78
96
  else
79
97
  aliased_key = permission_aliases[filter_key]
80
- security_group_info = security_group_info.reject{|security_group| !security_group['ipPermissions'].find {|permission| [*filter_value].include?(permission[aliased_key])}}
98
+ security_group_info = security_group_info.reject do |security_group|
99
+ !security_group['ipPermissions'].find do |permission|
100
+ [*filter_value].include?(permission[aliased_key])
101
+ end
102
+ end
81
103
  end
82
104
  else
83
105
  aliased_key = aliases[filter_key]
84
- security_group_info = security_group_info.reject{|security_group| ![*filter_value].include?(security_group[aliased_key])}
106
+ security_group_info = security_group_info.reject do |security_group|
107
+ ![*filter_value].include?(security_group[aliased_key])
108
+ end
85
109
  end
86
110
  end
87
111
 
@@ -14,17 +14,18 @@ module Fog
14
14
  # * body<~Hash>:
15
15
  # * 'requestId'<~String> - Id of request
16
16
  # * 'subnetSet'<~Array>:
17
- # * 'subnetId'<~String> - The Subnet's ID
18
- # * 'state'<~String> - The current state of the Subnet. ['pending', 'available']
19
- # * 'vpcId'<~String> - The ID of the VPC the subnet is in
20
- # * 'cidrBlock'<~String> - The CIDR block the Subnet covers.
21
- # * 'availableIpAddressCount'<~Integer> - The number of unused IP addresses in the subnet (the IP addresses for any
22
- # stopped instances are considered unavailable)
23
- # * 'availabilityZone'<~String> - The Availability Zone the subnet is in.
24
- # * 'tagSet'<~Array>: Tags assigned to the resource.
25
- # * 'key'<~String> - Tag's key
26
- # * 'value'<~String> - Tag's value
27
- # * 'instanceTenancy'<~String> - The allowed tenancy of instances launched into the Subnet.
17
+ # * 'subnetId'<~String> - The Subnet's ID
18
+ # * 'state'<~String> - The current state of the Subnet. ['pending', 'available']
19
+ # * 'vpcId'<~String> - The ID of the VPC the subnet is in
20
+ # * 'cidrBlock'<~String> - The CIDR block the Subnet covers.
21
+ # * 'availableIpAddressCount'<~Integer> - The number of unused IP addresses in the subnet (the IP addresses for any
22
+ # stopped instances are considered unavailable)
23
+ # * 'availabilityZone'<~String> - The Availability Zone the subnet is in.
24
+ # * 'tagSet'<~Array>: Tags assigned to the resource.
25
+ # * 'key'<~String> - Tag's key
26
+ # * 'value'<~String> - Tag's value
27
+ # * 'mapPublicIpOnLaunch'<~Boolean> - Indicates whether instances launched in this subnet receive a public IPv4 address.
28
+ # * 'defaultForAz'<~Boolean> - Indicates whether this is the default subnet for the Availability Zone.
28
29
  #
29
30
  # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/2011-07-15/APIReference/index.html?ApiReference-query-DescribeSubnets.html]
30
31
  def describe_subnets(filters = {})
@@ -54,11 +54,11 @@ module Fog
54
54
  when 'groupSet'
55
55
  groups = {}
56
56
  value.each do |group_id|
57
- name = self.data[:security_groups].select { |k,v| v['groupId'] == group_id } .first.first
58
- if name.nil?
57
+ security_group = self.data[:security_groups][group_id]
58
+ if security_group.nil?
59
59
  raise Fog::Compute::AWS::Error.new("Unknown security group '#{group_id}' specified")
60
60
  end
61
- groups[group_id] = name
61
+ groups[group_id] = security_group['groupName']
62
62
  end
63
63
  nic['groupSet'] = groups
64
64
  when 'sourceDestCheck'
@@ -57,40 +57,34 @@ module Fog
57
57
  class Mock
58
58
  def revoke_security_group_egress(group_name, options = {})
59
59
  options = Fog::AWS.parse_security_group_options(group_name, options)
60
- if options.key?('GroupName')
61
- group_name = options['GroupName']
62
- else
63
- group_name = self.data[:security_groups].reject { |k,v| v['groupId'] != options['GroupId'] } .keys.first
64
- end
65
60
 
61
+ group = self.data[:security_groups].values.find { |v| v['groupName'] == group_name }
62
+
63
+ group ||
64
+ raise(Fog::Compute::AWS::NotFound.new("The security group '#{group_name}' does not exist"))
66
65
  response = Excon::Response.new
67
- group = self.data[:security_groups][group_name]
68
66
 
69
- if group
70
- verify_permission_options(options, group['vpcId'] != nil)
67
+ verify_permission_options(options, group['vpcId'] != nil)
71
68
 
72
- normalized_permissions = normalize_permissions(options)
69
+ normalized_permissions = normalize_permissions(options)
73
70
 
74
- normalized_permissions.each do |permission|
75
- if matching_permission = find_matching_permission_egress(group, permission)
76
- matching_permission['ipRanges'] -= permission['ipRanges']
77
- matching_permission['groups'] -= permission['groups']
71
+ normalized_permissions.each do |permission|
72
+ if matching_permission = find_matching_permission_egress(group, permission)
73
+ matching_permission['ipRanges'] -= permission['ipRanges']
74
+ matching_permission['groups'] -= permission['groups']
78
75
 
79
- if matching_permission['ipRanges'].empty? && matching_permission['groups'].empty?
80
- group['ipPermissionsEgress'].delete(matching_permission)
81
- end
76
+ if matching_permission['ipRanges'].empty? && matching_permission['groups'].empty?
77
+ group['ipPermissionsEgress'].delete(matching_permission)
82
78
  end
83
79
  end
84
-
85
- response.status = 200
86
- response.body = {
87
- 'requestId' => Fog::AWS::Mock.request_id,
88
- 'return' => true
89
- }
90
- response
91
- else
92
- raise Fog::Compute::AWS::NotFound.new("The security group '#{group_name}' does not exist")
93
80
  end
81
+
82
+ response.status = 200
83
+ response.body = {
84
+ 'requestId' => Fog::AWS::Mock.request_id,
85
+ 'return' => true
86
+ }
87
+ response
94
88
  end
95
89
  end
96
90
  end
@@ -57,40 +57,33 @@ module Fog
57
57
  class Mock
58
58
  def revoke_security_group_ingress(group_name, options = {})
59
59
  options = Fog::AWS.parse_security_group_options(group_name, options)
60
- if options.key?('GroupName')
61
- group_name = options['GroupName']
62
- else
63
- group_name = self.data[:security_groups].reject { |k,v| v['groupId'] != options['GroupId'] } .keys.first
64
- end
60
+ group = self.data[:security_groups].values.find { |v| v['groupName'] == group_name }
65
61
 
62
+ group ||
63
+ raise(Fog::Compute::AWS::NotFound.new("The security group '#{group_name}' does not exist"))
66
64
  response = Excon::Response.new
67
- group = self.data[:security_groups][group_name]
68
65
 
69
- if group
70
- verify_permission_options(options, group['vpcId'] != nil)
66
+ verify_permission_options(options, group['vpcId'] != nil)
71
67
 
72
- normalized_permissions = normalize_permissions(options)
68
+ normalized_permissions = normalize_permissions(options)
73
69
 
74
- normalized_permissions.each do |permission|
75
- if matching_permission = find_matching_permission(group, permission)
76
- matching_permission['ipRanges'] -= permission['ipRanges']
77
- matching_permission['groups'] -= permission['groups']
70
+ normalized_permissions.each do |permission|
71
+ if matching_permission = find_matching_permission(group, permission)
72
+ matching_permission['ipRanges'] -= permission['ipRanges']
73
+ matching_permission['groups'] -= permission['groups']
78
74
 
79
- if matching_permission['ipRanges'].empty? && matching_permission['groups'].empty?
80
- group['ipPermissions'].delete(matching_permission)
81
- end
75
+ if matching_permission['ipRanges'].empty? && matching_permission['groups'].empty?
76
+ group['ipPermissions'].delete(matching_permission)
82
77
  end
83
78
  end
84
-
85
- response.status = 200
86
- response.body = {
87
- 'requestId' => Fog::AWS::Mock.request_id,
88
- 'return' => true
89
- }
90
- response
91
- else
92
- raise Fog::Compute::AWS::NotFound.new("The security group '#{group_name}' does not exist")
93
79
  end
80
+
81
+ response.status = 200
82
+ response.body = {
83
+ 'requestId' => Fog::AWS::Mock.request_id,
84
+ 'return' => true
85
+ }
86
+ response
94
87
  end
95
88
  end
96
89
  end
@@ -48,7 +48,7 @@ module Fog
48
48
  # * 'SecurityGroupId'<~Array> or <~String> - id's of security group(s) for instances, use this or SecurityGroup
49
49
  # * 'InstanceInitiatedShutdownBehaviour'<~String> - specifies whether volumes are stopped or terminated when instance is shutdown, in [stop, terminate]
50
50
  # * 'InstanceType'<~String> - Type of instance to boot. Valid options
51
- # in ['t1.micro', 't2.micro', 't2.small', 't2.medium', 'm1.small', 'm1.medium', 'm1.large', 'm1.xlarge', 'c1.medium', 'c1.xlarge', 'c3.large', 'c3.xlarge', 'c3.2xlarge', 'c3.4xlarge', 'c3.8xlarge', 'g2.2xlarge', 'hs1.8xlarge', 'm2.xlarge', 'm2.2xlarge', 'm2.4xlarge', 'cr1.8xlarge', 'm3.xlarge', 'm3.2xlarge', 'hi1.4xlarge', 'cc1.4xlarge', 'cc2.8xlarge', 'cg1.4xlarge', 'i2.xlarge', 'i2.2xlarge', 'i2.4xlarge', 'i2.8xlarge']
51
+ # in ['t1.micro', 't2.nano', 't2.micro', 't2.small', 't2.medium', 'm1.small', 'm1.medium', 'm1.large', 'm1.xlarge', 'c1.medium', 'c1.xlarge', 'c3.large', 'c3.xlarge', 'c3.2xlarge', 'c3.4xlarge', 'c3.8xlarge', 'g2.2xlarge', 'hs1.8xlarge', 'm2.xlarge', 'm2.2xlarge', 'm2.4xlarge', 'cr1.8xlarge', 'm3.xlarge', 'm3.2xlarge', 'hi1.4xlarge', 'cc1.4xlarge', 'cc2.8xlarge', 'cg1.4xlarge', 'i2.xlarge', 'i2.2xlarge', 'i2.4xlarge', 'i2.8xlarge']
52
52
  # default is 'm1.small'
53
53
  # * 'KernelId'<~String> - Id of kernel with which to launch
54
54
  # * 'KeyName'<~String> - Name of a keypair to add to booting instances
@@ -25,8 +25,10 @@ module Fog
25
25
  class Mock
26
26
  def create_mount_target(file_system_id, subnet_id, options={})
27
27
  response = Excon::Response.new
28
- default_security_group = mock_compute.data[:security_groups]['default']
29
- security_groups = options["SecurityGroups"] || [default_security_group['groupId']]
28
+ default_security_group = mock_compute.data[:security_groups].find do |_, sg|
29
+ sg['groupDescription'] == 'default_elb security group'
30
+ end
31
+ security_groups = options["SecurityGroups"] || [default_security_group.first]
30
32
 
31
33
  unless file_system = self.data[:file_systems][file_system_id]
32
34
  raise Fog::AWS::EFS::NotFound.new("invalid file system ID: #{file_system_id}")
@@ -41,8 +43,10 @@ module Fog
41
43
  raise Fog::AWS::EFS::InvalidSubnet.new("invalid subnet ID: #{subnet_id}")
42
44
  end
43
45
 
44
- security_groups.each do |sg|
45
- raise Fog::AWS::EFS::NotFound.new("invalid security group ID: #{sg}") unless mock_compute.data[:security_groups].values.detect { |sgd| sgd["groupId"] == sg }
46
+ security_groups.each do |group_id|
47
+ unless mock_compute.data[:security_groups][group_id]
48
+ raise Fog::AWS::EFS::NotFound.new("invalid security group ID: #{group_id}")
49
+ end
46
50
  end
47
51
 
48
52
  id = "fsmt-#{Fog::Mock.random_letters(8)}"
@@ -111,53 +111,22 @@ module Fog
111
111
  when 'EC2-Classic'
112
112
  Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:security_groups]['amazon-elb-sg']
113
113
  when 'EC2-VPC-Default'
114
- # find or create default vpc
115
114
  compute = Fog::Compute::AWS::new(:aws_access_key_id => @aws_access_key_id, :aws_secret_access_key => @aws_secret_access_key)
116
- unless vpc = compute.vpcs.all.first
117
- vpc = compute.vpcs.create('cidr_block' => '10.0.0.0/24')
118
- end
119
115
 
120
- default_sg = Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:security_groups].values.find { |sg|
116
+ vpc = compute.vpcs.all.first ||
117
+ compute.vpcs.create('cidr_block' => '10.0.0.0/24')
118
+
119
+ Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:security_groups].values.find { |sg|
121
120
  sg['groupName'] =~ /^default_elb/ &&
122
121
  sg["vpcId"] == vpc.id
123
122
  }
124
-
125
- unless default_sg
126
- default_sg = {
127
- 'groupDescription' => 'default_elb security group',
128
- 'groupName' => "default_elb_#{Fog::Mock.random_hex(6)}",
129
- 'groupId' => Fog::AWS::Mock.security_group_id,
130
- 'ipPermissionsEgress' => [],
131
- 'ipPermissions' => [],
132
- 'ownerId' => self.data[:owner_id],
133
- 'vpcId' => vpc.id
134
- }
135
- Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:security_groups]['default'] = default_sg
136
- end
137
-
138
- default_sg
139
123
  when 'EC2-VPC'
140
- # find or create default vpc security group
141
124
  vpc_id = subnets.first["vpcId"]
142
- default_sg = Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:security_groups].values.find { |sg|
125
+
126
+ Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:security_groups].values.find { |sg|
143
127
  sg['groupName'] == 'default' &&
144
128
  sg["vpcId"] == vpc_id
145
129
  }
146
-
147
- unless default_sg
148
- default_sg = {
149
- 'groupDescription' => 'default elb security group',
150
- 'groupName' => 'default',
151
- 'groupId' => Fog::AWS::Mock.security_group_id,
152
- 'ipPermissionsEgress' => [],
153
- 'ipPermissions' => [],
154
- 'ownerId' => self.data[:owner_id],
155
- 'vpcId' => vpc_id
156
- }
157
- Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:security_groups]['default'] = default_sg
158
- end
159
-
160
- default_sg
161
130
  end
162
131
  self.data[:tags] ||= {}
163
132
  self.data[:tags][lb_name] = {}