Class: AwsEbsVolume
- Inherits:
-
Object
- Object
- AwsEbsVolume
- Defined in:
- lib/resources/aws/aws_ebs_volume.rb
Instance Method Summary collapse
-
#catch_aws_errors ⇒ Object
TODO: DRY up, see github.com/chef/inspec/issues/2633 Copied from resource_support/aws/aws_resource_mixin.rb.
- #encrypted? ⇒ Boolean
- #exists? ⇒ Boolean
- #id ⇒ Object (also: #volume_id)
-
#initialize(opts, conn = nil) ⇒ AwsEbsVolume
constructor
TODO: rewrite to avoid direct injection, match other resources, use AwsSingularResourceMixin.
-
#inspec_runner ⇒ Object
TODO: DRY up, see github.com/chef/inspec/issues/2633 Copied from resource_support/aws/aws_singular_resource_mixin.rb.
- #security_group_ids ⇒ Object
-
#security_groups ⇒ Object
Don’t document this - it’s a bit hard to use.
- #tags ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(opts, conn = nil) ⇒ AwsEbsVolume
TODO: rewrite to avoid direct injection, match other resources, use AwsSingularResourceMixin
23 24 25 26 27 28 |
# File 'lib/resources/aws/aws_ebs_volume.rb', line 23 def initialize(opts, conn = nil) @opts = opts @display_name = opts.is_a?(Hash) ? @opts[:name] : opts @ec2_client = conn ? conn.ec2_client : inspec_runner.backend.aws_client(Aws::EC2::Client) @ec2_resource = conn ? conn.ec2_resource : inspec_runner.backend.aws_resource(Aws::EC2::Resource, {}) end |
Instance Method Details
#catch_aws_errors ⇒ Object
TODO: DRY up, see github.com/chef/inspec/issues/2633 Copied from resource_support/aws/aws_resource_mixin.rb
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/resources/aws/aws_ebs_volume.rb', line 32 def catch_aws_errors yield rescue Aws::Errors::MissingCredentialsError # The AWS error here is unhelpful: # "unable to sign request without credentials set" Inspec::Log.error "It appears that you have not set your AWS credentials. You may set them using environment variables, or using the 'aws://region/aws_credentials_profile' target. See https://www.inspec.io/docs/reference/platforms for details." fail_resource("No AWS credentials available") rescue Aws::Errors::ServiceError => e fail_resource(e.) end |
#encrypted? ⇒ Boolean
81 82 83 |
# File 'lib/resources/aws/aws_ebs_volume.rb', line 81 def encrypted? volume.encrypted end |
#exists? ⇒ Boolean
77 78 79 |
# File 'lib/resources/aws/aws_ebs_volume.rb', line 77 def exists? !volume.nil? end |
#id ⇒ Object Also known as: volume_id
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/resources/aws/aws_ebs_volume.rb', line 55 def id return @volume_id if defined?(@volume_id) catch_aws_errors do if @opts.is_a?(Hash) first = @ec2_resource.volumes( { filters: [{ name: "tag:Name", values: [@opts[:name]], }], } ).first # catch case where the volume is not known @volume_id = first.id unless first.nil? else @volume_id = @opts end end end |
#inspec_runner ⇒ Object
TODO: DRY up, see github.com/chef/inspec/issues/2633 Copied from resource_support/aws/aws_singular_resource_mixin.rb
45 46 47 48 49 50 51 52 53 |
# File 'lib/resources/aws/aws_ebs_volume.rb', line 45 def inspec_runner # When running under inspec-cli, we have an 'inspec' method that # returns the runner. When running under unit tests, we don't # have that, but we still have to call this to pass something # (nil is OK) to the backend. # TODO: remove with https://github.com/chef/inspec-aws/issues/216 # TODO: remove after rewrite to include AwsSingularResource inspec if respond_to?(:inspec) end |
#security_group_ids ⇒ Object
106 107 108 109 110 |
# File 'lib/resources/aws/aws_ebs_volume.rb', line 106 def security_group_ids catch_aws_errors do @security_group_ids ||= volume.security_groups.map(&:group_id) end end |
#security_groups ⇒ Object
Don’t document this - it’s a bit hard to use. Our current doctrine is to use dumb things, like arrays of strings - use security_group_ids instead.
98 99 100 101 102 103 104 |
# File 'lib/resources/aws/aws_ebs_volume.rb', line 98 def security_groups catch_aws_errors do @security_groups ||= volume.security_groups.map do |sg| { id: sg.group_id, name: sg.group_name } end end end |
#tags ⇒ Object
112 113 114 115 116 |
# File 'lib/resources/aws/aws_ebs_volume.rb', line 112 def catch_aws_errors do @tags ||= volume..map { |tag| { key: tag.key, value: tag.value } } end end |
#to_s ⇒ Object
118 119 120 |
# File 'lib/resources/aws/aws_ebs_volume.rb', line 118 def to_s "EBS Volume #{@display_name}" end |