awspec 1.24.1 → 1.24.2
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.
- checksums.yaml +4 -4
- data/.travis.yml +4 -0
- data/README.md +1 -1
- data/doc/resource_types.md +6 -6
- data/lib/awspec/helper/finder.rb +6 -0
- data/lib/awspec/helper/finder/ec2.rb +5 -4
- data/lib/awspec/helper/states.rb +16 -0
- data/lib/awspec/stub/ec2_non_existing.rb +7 -0
- data/lib/awspec/type/ec2.rb +21 -16
- data/lib/awspec/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 846285926375fd9f812d6110b9b6f82918a1cd217dde0b51e3e87694fa39861c
|
|
4
|
+
data.tar.gz: b9b0d5c955add005d788b35ace982d75a74843cb8bb0c4cc86cbf931bb6cb68e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6d2af549c10d9e3634e6e7ff809b6bb3a5518dc3a9ae52e70963718a19aa2731cd274b9bbbba614989b49253eb85e4f806487692c7a7f72c7135dda58162fb5b
|
|
7
|
+
data.tar.gz: 0aa25037fc049461e9558c57af0b7f6ab02b70cb43b4637496edfb7715704d8abd821b2f52bebc7a4a2ea3bf6ba95d5d9034102084667d249dce7f8584ee8a97
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
|
@@ -32,7 +32,7 @@ If you're starting on a fresh RSpec project, you can use awspec to generate your
|
|
|
32
32
|
|
|
33
33
|
$ awspec init
|
|
34
34
|
|
|
35
|
-
If you're working on an
|
|
35
|
+
If you're working on an existing RSpec project, you will need to add the following lines to your `spec_helper.rb` file:
|
|
36
36
|
|
|
37
37
|
```ruby
|
|
38
38
|
require 'awspec'
|
data/doc/resource_types.md
CHANGED
|
@@ -273,7 +273,7 @@ end
|
|
|
273
273
|
|
|
274
274
|
### have_tag
|
|
275
275
|
|
|
276
|
-
### its(:architecture), its(:creation_date), its(:image_id), its(:image_location), its(:image_type), its(:public), its(:kernel_id), its(:owner_id), its(:platform), its(:platform_details), its(:usage_operation), its(:ramdisk_id), its(:state), its(:description), its(:ena_support), its(:hypervisor), its(:image_owner_alias), its(:name), its(:root_device_name), its(:root_device_type), its(:sriov_net_support), its(:state_reason), its(:virtualization_type), its(:boot_mode)
|
|
276
|
+
### its(:architecture), its(:creation_date), its(:image_id), its(:image_location), its(:image_type), its(:public), its(:kernel_id), its(:owner_id), its(:platform), its(:platform_details), its(:usage_operation), its(:ramdisk_id), its(:state), its(:description), its(:ena_support), its(:hypervisor), its(:image_owner_alias), its(:name), its(:root_device_name), its(:root_device_type), its(:sriov_net_support), its(:state_reason), its(:virtualization_type), its(:boot_mode), its(:deprecation_time)
|
|
277
277
|
### :unlock: Advanced use
|
|
278
278
|
|
|
279
279
|
`ami` can use `Aws::EC2::Image` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Image.html).
|
|
@@ -360,7 +360,7 @@ describe autoscaling_group('my-auto-scaling-group') do
|
|
|
360
360
|
end
|
|
361
361
|
```
|
|
362
362
|
|
|
363
|
-
### its(:auto_scaling_group_name), its(:auto_scaling_group_arn), its(:launch_configuration_name), its(:launch_template), its(:mixed_instances_policy), its(:min_size), its(:max_size), its(:desired_capacity), its(:default_cooldown), its(:availability_zones), its(:load_balancer_names), its(:target_group_arns), its(:health_check_type), its(:health_check_grace_period), its(:created_time), its(:placement_group), its(:vpc_zone_identifier), its(:enabled_metrics), its(:status), its(:termination_policies), its(:new_instances_protected_from_scale_in), its(:service_linked_role_arn), its(:max_instance_lifetime), its(:capacity_rebalance), its(:warm_pool_configuration), its(:warm_pool_size)
|
|
363
|
+
### its(:auto_scaling_group_name), its(:auto_scaling_group_arn), its(:launch_configuration_name), its(:launch_template), its(:mixed_instances_policy), its(:min_size), its(:max_size), its(:desired_capacity), its(:predicted_capacity), its(:default_cooldown), its(:availability_zones), its(:load_balancer_names), its(:target_group_arns), its(:health_check_type), its(:health_check_grace_period), its(:created_time), its(:placement_group), its(:vpc_zone_identifier), its(:enabled_metrics), its(:status), its(:termination_policies), its(:new_instances_protected_from_scale_in), its(:service_linked_role_arn), its(:max_instance_lifetime), its(:capacity_rebalance), its(:warm_pool_configuration), its(:warm_pool_size), its(:context)
|
|
364
364
|
## <a name="batch_compute_environment">batch_compute_environment</a>
|
|
365
365
|
|
|
366
366
|
BatchComputeEnvironment resource type.
|
|
@@ -1372,7 +1372,7 @@ end
|
|
|
1372
1372
|
|
|
1373
1373
|
### be_active, be_inactive
|
|
1374
1374
|
|
|
1375
|
-
### its(:nodegroup_name), its(:nodegroup_arn), its(:cluster_name), its(:version), its(:release_version), its(:created_at), its(:modified_at), its(:status), its(:capacity_type), its(:scaling_config), its(:instance_types), its(:subnets), its(:remote_access), its(:ami_type), its(:node_role), its(:labels), its(:resources), its(:disk_size), its(:health), its(:launch_template), its(:tags)
|
|
1375
|
+
### its(:nodegroup_name), its(:nodegroup_arn), its(:cluster_name), its(:version), its(:release_version), its(:created_at), its(:modified_at), its(:status), its(:capacity_type), its(:scaling_config), its(:instance_types), its(:subnets), its(:remote_access), its(:ami_type), its(:node_role), its(:labels), its(:taints), its(:resources), its(:disk_size), its(:health), its(:update_config), its(:launch_template), its(:tags)
|
|
1376
1376
|
## <a name="elasticache">elasticache</a>
|
|
1377
1377
|
|
|
1378
1378
|
Elasticache resource type.
|
|
@@ -2178,7 +2178,7 @@ DOC
|
|
|
2178
2178
|
end
|
|
2179
2179
|
```
|
|
2180
2180
|
|
|
2181
|
-
### its(:aws_account_id), its(:key_id), its(:arn), its(:creation_date), its(:enabled), its(:description), its(:key_usage), its(:key_state), its(:deletion_date), its(:valid_to), its(:origin), its(:custom_key_store_id), its(:cloud_hsm_cluster_id), its(:expiration_model), its(:key_manager), its(:customer_master_key_spec), its(:encryption_algorithms), its(:signing_algorithms)
|
|
2181
|
+
### its(:aws_account_id), its(:key_id), its(:arn), its(:creation_date), its(:enabled), its(:description), its(:key_usage), its(:key_state), its(:deletion_date), its(:valid_to), its(:origin), its(:custom_key_store_id), its(:cloud_hsm_cluster_id), its(:expiration_model), its(:key_manager), its(:customer_master_key_spec), its(:encryption_algorithms), its(:signing_algorithms), its(:multi_region), its(:multi_region_configuration), its(:pending_deletion_window_in_days)
|
|
2182
2182
|
## <a name="lambda">lambda</a>
|
|
2183
2183
|
|
|
2184
2184
|
Lambda resource type.
|
|
@@ -2422,7 +2422,7 @@ end
|
|
|
2422
2422
|
```
|
|
2423
2423
|
|
|
2424
2424
|
|
|
2425
|
-
### its(:create_time), its(:delete_time), its(:failure_code), its(:failure_message), its(:nat_gateway_id), its(:provisioned_bandwidth), its(:state), its(:subnet_id), its(:vpc_id)
|
|
2425
|
+
### its(:create_time), its(:delete_time), its(:failure_code), its(:failure_message), its(:nat_gateway_id), its(:provisioned_bandwidth), its(:state), its(:subnet_id), its(:vpc_id), its(:connectivity_type)
|
|
2426
2426
|
## <a name="network_acl">network_acl</a>
|
|
2427
2427
|
|
|
2428
2428
|
NetworkAcl resource type.
|
|
@@ -2801,7 +2801,7 @@ end
|
|
|
2801
2801
|
```
|
|
2802
2802
|
|
|
2803
2803
|
|
|
2804
|
-
### its(:vpc_id), its(:db_instance_identifier), its(:db_instance_class), its(:engine), its(:db_instance_status), its(:master_username), its(:db_name), its(:endpoint), its(:allocated_storage), its(:instance_create_time), its(:preferred_backup_window), its(:backup_retention_period), its(:db_security_groups), its(:availability_zone), its(:preferred_maintenance_window), its(:pending_modified_values), its(:latest_restorable_time), its(:multi_az), its(:engine_version), its(:auto_minor_version_upgrade), its(:read_replica_source_db_instance_identifier), its(:read_replica_db_instance_identifiers), its(:read_replica_db_cluster_identifiers), its(:replica_mode), its(:license_model), its(:iops), its(:character_set_name), its(:nchar_character_set_name), its(:secondary_availability_zone), its(:publicly_accessible), its(:status_infos), its(:storage_type), its(:tde_credential_arn), its(:db_instance_port), its(:db_cluster_identifier), its(:storage_encrypted), its(:kms_key_id), its(:dbi_resource_id), its(:ca_certificate_identifier), its(:domain_memberships), its(:copy_tags_to_snapshot), its(:monitoring_interval), its(:enhanced_monitoring_resource_arn), its(:monitoring_role_arn), its(:promotion_tier), its(:db_instance_arn), its(:timezone), its(:iam_database_authentication_enabled), its(:performance_insights_enabled), its(:performance_insights_kms_key_id), its(:performance_insights_retention_period), its(:enabled_cloudwatch_logs_exports), its(:processor_features), its(:deletion_protection), its(:associated_roles), its(:listener_endpoint), its(:max_allocated_storage), its(:tag_list), its(:db_instance_automated_backups_replications), its(:customer_owned_ip_enabled), its(:aws_backup_recovery_point_arn)
|
|
2804
|
+
### its(:vpc_id), its(:db_instance_identifier), its(:db_instance_class), its(:engine), its(:db_instance_status), its(:master_username), its(:db_name), its(:endpoint), its(:allocated_storage), its(:instance_create_time), its(:preferred_backup_window), its(:backup_retention_period), its(:db_security_groups), its(:availability_zone), its(:preferred_maintenance_window), its(:pending_modified_values), its(:latest_restorable_time), its(:multi_az), its(:engine_version), its(:auto_minor_version_upgrade), its(:read_replica_source_db_instance_identifier), its(:read_replica_db_instance_identifiers), its(:read_replica_db_cluster_identifiers), its(:replica_mode), its(:license_model), its(:iops), its(:character_set_name), its(:nchar_character_set_name), its(:secondary_availability_zone), its(:publicly_accessible), its(:status_infos), its(:storage_type), its(:tde_credential_arn), its(:db_instance_port), its(:db_cluster_identifier), its(:storage_encrypted), its(:kms_key_id), its(:dbi_resource_id), its(:ca_certificate_identifier), its(:domain_memberships), its(:copy_tags_to_snapshot), its(:monitoring_interval), its(:enhanced_monitoring_resource_arn), its(:monitoring_role_arn), its(:promotion_tier), its(:db_instance_arn), its(:timezone), its(:iam_database_authentication_enabled), its(:performance_insights_enabled), its(:performance_insights_kms_key_id), its(:performance_insights_retention_period), its(:enabled_cloudwatch_logs_exports), its(:processor_features), its(:deletion_protection), its(:associated_roles), its(:listener_endpoint), its(:max_allocated_storage), its(:tag_list), its(:db_instance_automated_backups_replications), its(:customer_owned_ip_enabled), its(:aws_backup_recovery_point_arn), its(:activity_stream_status), its(:activity_stream_kms_key_id), its(:activity_stream_kinesis_stream_name), its(:activity_stream_mode), its(:activity_stream_engine_native_audit_fields_included)
|
|
2805
2805
|
### :unlock: Advanced use
|
|
2806
2806
|
|
|
2807
2807
|
`rds` can use `Aws::RDS::DBInstance` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/RDS/DBInstance.html).
|
data/lib/awspec/helper/finder.rb
CHANGED
|
@@ -166,6 +166,12 @@ module Awspec::Helper
|
|
|
166
166
|
http_wire_trace: ENV['http_wire_trace'] || false
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
+
check_configuration = ENV['DISABLE_AWS_CLIENT_CHECK'] != 'true' if ENV.key?('DISABLE_AWS_CLIENT_CHECK')
|
|
170
|
+
|
|
171
|
+
# define_method below will "hide" any exception that comes from bad
|
|
172
|
+
# setup of AWS client, so let's try first to create a instance
|
|
173
|
+
Awsecrets.load if check_configuration
|
|
174
|
+
|
|
169
175
|
CLIENTS.each do |method_name, client|
|
|
170
176
|
define_method method_name do
|
|
171
177
|
unless self.methods.include? "@#{method_name}"
|
|
@@ -7,15 +7,16 @@ module Awspec::Helper
|
|
|
7
7
|
res = ec2_client.describe_instances({
|
|
8
8
|
instance_ids: [id]
|
|
9
9
|
})
|
|
10
|
-
rescue
|
|
11
|
-
# Aws::EC2::Errors::InvalidInstanceIDMalformed
|
|
12
|
-
# Aws::EC2::Errors::InvalidInstanceIDNotFound
|
|
10
|
+
rescue Aws::EC2::Errors::InvalidInstanceIDNotFound, Aws::EC2::Errors::InvalidInstanceIDMalformed => e
|
|
13
11
|
res = ec2_client.describe_instances({
|
|
14
12
|
filters: [{ name: 'tag:Name', values: [id] }]
|
|
15
13
|
})
|
|
16
14
|
end
|
|
17
15
|
# rubocop:enable Style/GuardClause
|
|
18
|
-
|
|
16
|
+
|
|
17
|
+
if res.reservations.count == 0
|
|
18
|
+
nil
|
|
19
|
+
elsif res.reservations.count == 1
|
|
19
20
|
res.reservations.first.instances.single_resource(id)
|
|
20
21
|
elsif res.reservations.count > 1
|
|
21
22
|
raise Awspec::DuplicatedResourceTypeError, "Duplicate instances matching id or tag #{id}"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module Awspec::Helper
|
|
2
|
+
module States
|
|
3
|
+
EC2_STATES = %w(pending running shutting-down terminated stopping stopped)
|
|
4
|
+
|
|
5
|
+
def self.ec2_states_checks
|
|
6
|
+
Enumerator.new do |yielder|
|
|
7
|
+
n = 0
|
|
8
|
+
while n < EC2_STATES.size
|
|
9
|
+
method_name = EC2_STATES[n].tr('-', '_') + '?'
|
|
10
|
+
yielder.yield(method_name, EC2_STATES[n])
|
|
11
|
+
n += 1
|
|
12
|
+
end
|
|
13
|
+
end.lazy
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
data/lib/awspec/type/ec2.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'awspec/helper/states'
|
|
2
|
+
|
|
1
3
|
module Awspec::Type
|
|
2
4
|
class Ec2 < ResourceBase
|
|
3
5
|
aws_resource Aws::EC2::Instance
|
|
@@ -8,6 +10,16 @@ module Awspec::Type
|
|
|
8
10
|
@display_name = name
|
|
9
11
|
end
|
|
10
12
|
|
|
13
|
+
# required by Awspec::Generator::Doc::Type
|
|
14
|
+
STATES = Awspec::Helper::States::EC2_STATES
|
|
15
|
+
|
|
16
|
+
Awspec::Helper::States.ec2_states_checks.each do |method_name, state|
|
|
17
|
+
define_method method_name do
|
|
18
|
+
check_existence
|
|
19
|
+
resource_via_client.state.name == state
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
11
23
|
def resource_via_client
|
|
12
24
|
@resource_via_client ||= find_ec2(@display_name)
|
|
13
25
|
end
|
|
@@ -17,20 +29,10 @@ module Awspec::Type
|
|
|
17
29
|
end
|
|
18
30
|
|
|
19
31
|
def security_group_count
|
|
32
|
+
check_existence
|
|
20
33
|
resource_via_client.security_groups.count
|
|
21
34
|
end
|
|
22
35
|
|
|
23
|
-
STATES = %w(
|
|
24
|
-
pending running shutting-down
|
|
25
|
-
terminated stopping stopped
|
|
26
|
-
)
|
|
27
|
-
|
|
28
|
-
STATES.each do |state|
|
|
29
|
-
define_method state.tr('-', '_') + '?' do
|
|
30
|
-
resource_via_client.state.name == state
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
36
|
def disabled_api_termination?
|
|
35
37
|
ret = find_ec2_attribute(id, 'disableApiTermination')
|
|
36
38
|
ret.disable_api_termination.value
|
|
@@ -48,7 +50,6 @@ module Awspec::Type
|
|
|
48
50
|
|
|
49
51
|
def has_security_groups?(sg_ids)
|
|
50
52
|
return true if match_group_ids?(sg_ids) || match_group_names?(sg_ids)
|
|
51
|
-
|
|
52
53
|
group_ids = resource_security_groups.map { |sg| sg.group_id }
|
|
53
54
|
tags = select_security_group_by_group_id(group_ids).map { |sg| sg.tags }.flatten
|
|
54
55
|
group_names = tags.select { |tag| tag.key == 'Name' }.map { |tag| tag.value }
|
|
@@ -56,6 +57,7 @@ module Awspec::Type
|
|
|
56
57
|
end
|
|
57
58
|
|
|
58
59
|
def has_security_group?(sg_id)
|
|
60
|
+
check_existence
|
|
59
61
|
sgs = resource_via_client.security_groups
|
|
60
62
|
ret = sgs.find do |sg|
|
|
61
63
|
sg.group_id == sg_id || sg.group_name == sg_id
|
|
@@ -69,12 +71,14 @@ module Awspec::Type
|
|
|
69
71
|
end
|
|
70
72
|
|
|
71
73
|
def has_iam_instance_profile?(iam_instance_profile_name)
|
|
74
|
+
check_existence
|
|
72
75
|
iam = resource_via_client.iam_instance_profile
|
|
73
76
|
ret = iam.arn.split('/').last == iam_instance_profile_name
|
|
74
77
|
return true if ret
|
|
75
78
|
end
|
|
76
79
|
|
|
77
80
|
def has_ebs?(volume_id)
|
|
81
|
+
check_existence
|
|
78
82
|
blocks = resource_via_client.block_device_mappings
|
|
79
83
|
ret = blocks.find do |block|
|
|
80
84
|
next false unless block.ebs
|
|
@@ -89,8 +93,9 @@ module Awspec::Type
|
|
|
89
93
|
|
|
90
94
|
def has_network_interface?(network_interface_id, device_index = nil)
|
|
91
95
|
res = find_network_interface(network_interface_id)
|
|
96
|
+
check_existence
|
|
92
97
|
interfaces = resource_via_client.network_interfaces
|
|
93
|
-
interfaces.find do |interface|
|
|
98
|
+
ret = interfaces.find do |interface|
|
|
94
99
|
next false if device_index && interface.attachment.device_index != device_index
|
|
95
100
|
interface.network_interface_id == res.network_interface_id
|
|
96
101
|
end
|
|
@@ -98,7 +103,7 @@ module Awspec::Type
|
|
|
98
103
|
|
|
99
104
|
def has_event?(event_code)
|
|
100
105
|
status = find_ec2_status(id)
|
|
101
|
-
status.events.find do |event|
|
|
106
|
+
ret = status.events.find do |event|
|
|
102
107
|
event.code == event_code
|
|
103
108
|
end
|
|
104
109
|
end
|
|
@@ -133,8 +138,7 @@ module Awspec::Type
|
|
|
133
138
|
end
|
|
134
139
|
|
|
135
140
|
def has_credit_specification?(cpu_credits)
|
|
136
|
-
|
|
137
|
-
ret.cpu_credits == cpu_credits
|
|
141
|
+
find_ec2_credit_specifications(id).cpu_credits == cpu_credits
|
|
138
142
|
end
|
|
139
143
|
|
|
140
144
|
private
|
|
@@ -148,6 +152,7 @@ module Awspec::Type
|
|
|
148
152
|
end
|
|
149
153
|
|
|
150
154
|
def resource_security_groups
|
|
155
|
+
check_existence
|
|
151
156
|
resource_via_client.security_groups
|
|
152
157
|
end
|
|
153
158
|
end
|
data/lib/awspec/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: awspec
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.24.
|
|
4
|
+
version: 1.24.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- k1LoW
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-07-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: aws-sdk
|
|
@@ -518,6 +518,7 @@ files:
|
|
|
518
518
|
- lib/awspec/helper/finder/vpc_endpoints.rb
|
|
519
519
|
- lib/awspec/helper/finder/waf.rb
|
|
520
520
|
- lib/awspec/helper/finder/wafregional.rb
|
|
521
|
+
- lib/awspec/helper/states.rb
|
|
521
522
|
- lib/awspec/helper/type.rb
|
|
522
523
|
- lib/awspec/matcher.rb
|
|
523
524
|
- lib/awspec/matcher/be_allowed.rb
|
|
@@ -593,6 +594,7 @@ files:
|
|
|
593
594
|
- lib/awspec/stub/ebs.rb
|
|
594
595
|
- lib/awspec/stub/ec2.rb
|
|
595
596
|
- lib/awspec/stub/ec2_has_multi_security_groups.rb
|
|
597
|
+
- lib/awspec/stub/ec2_non_existing.rb
|
|
596
598
|
- lib/awspec/stub/ecr_repository.rb
|
|
597
599
|
- lib/awspec/stub/ecs.rb
|
|
598
600
|
- lib/awspec/stub/ecs_cluster.rb
|