Sha256: 4305c3261ad0ac6dac122078be55c0be3dda6d2f873b7fc16baf35645b0b2b12

Contents?: true

Size: 1.48 KB

Versions: 17

Compression:

Stored size: 1.48 KB

Contents

module Awspec::Generator
  module Spec
    class Ebs
      include Awspec::Helper::Finder
      def generate_all
        volumes = select_all_attached_ebs
        volumes.empty? && fail('Not Found EBS')
        specs = volumes.map do |volume|
          attachment_specs = generate_attachment_specs(volume)
          content = ERB.new(ebs_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
        end
        specs.join("\n")
      end

      def generate_attachment_specs(volume)
        linespecs = []
        volume.attachments.each do |attachment|
          instance = find_ec2(attachment.instance_id)
          linespecs.push(ERB.new(attachment_linetemplate, nil, '-').result(binding)) if attachment.instance_id
        end
        linespecs
      end

      def attachment_linetemplate
        template = <<-'EOF'
<%- if instance.tag_name -%>
it { should be_attached_to('<%= instance.tag_name %>') }
<%- else -%>
it { should be_attached_to('<%= instance.instance_id %>') }
<%- end -%>
EOF
        template
      end

      def ebs_spec_template
        template = <<-'EOF'
<%- if volume.tag_name -%>
describe ebs('<%= volume.tag_name %>') do
<%- else -%>
describe ebs('<%= volume.volume_id %>') do
<%- end -%>
  it { should exist }
  it { should be_<%= volume.state.tr('-', '_') %> }
  its(:size) { should eq <%= volume.size %> }
  its(:volume_type) { should eq '<%= volume.volume_type %>' }
<% attachment_specs.each do |line| %>
  <%= line %>
<% end %>
end
EOF
        template
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
awspec-0.30.0 lib/awspec/generator/spec/ebs.rb
awspec-0.29.0 lib/awspec/generator/spec/ebs.rb
awspec-0.28.1 lib/awspec/generator/spec/ebs.rb
awspec-0.28.0 lib/awspec/generator/spec/ebs.rb
awspec-0.27.2 lib/awspec/generator/spec/ebs.rb
awspec-0.27.1 lib/awspec/generator/spec/ebs.rb
awspec-0.27.0 lib/awspec/generator/spec/ebs.rb
awspec-0.26.2 lib/awspec/generator/spec/ebs.rb
awspec-0.26.1 lib/awspec/generator/spec/ebs.rb
awspec-0.26.0 lib/awspec/generator/spec/ebs.rb
awspec-0.25.3 lib/awspec/generator/spec/ebs.rb
awspec-0.25.2 lib/awspec/generator/spec/ebs.rb
awspec-0.25.1 lib/awspec/generator/spec/ebs.rb
awspec-0.25.0 lib/awspec/generator/spec/ebs.rb
awspec-0.24.2 lib/awspec/generator/spec/ebs.rb
awspec-0.24.1 lib/awspec/generator/spec/ebs.rb
awspec-0.24.0 lib/awspec/generator/spec/ebs.rb