Sha256: 742305bfbf5aab992844e7496257d37cf2d2090b5d546484ec3a649ba9f92266

Contents?: true

Size: 1.7 KB

Versions: 4

Compression:

Stored size: 1.7 KB

Contents

module Fog
  module AWS
    class EC2

      def snapshots(attributes = {})
        Fog::AWS::EC2::Snapshots.new({
          :connection => self
        }.merge!(attributes))
      end

      class Snapshots < Fog::Collection

        attribute :snapshot_id
        attribute :volume_id

        def initialize(attributes)
          @snapshot_id ||= []
          super
        end

        def all(snapshot_id = [])
          data = connection.describe_snapshots(snapshot_id).body
          snapshots = Fog::AWS::EC2::Snapshots.new({
            :connection   => connection,
            :snapshot_id  => snapshot_id
          }.merge!(attributes))
          data['snapshotSet'].each do |snapshot|
            snapshots << Fog::AWS::EC2::Snapshot.new({
              :connection => connection,
              :snapshots  => self
            }.merge!(snapshot))
          end
          if volume_id
            snapshots = snapshots.select {|snapshot| snapshot.volume_id == volume_id}
          end
          snapshots
        end

        def create(attributes = {})
          snapshot = new(attributes)
          snapshot.save
          snapshot
        end

        def get(snapshot_id)
          if snapshot_id
            all(snapshot_id).first
          end
        rescue Fog::Errors::BadRequest
          nil
        end

        def new(attributes = {})
          snapshot = Fog::AWS::EC2::Snapshot.new(
            attributes.merge!(
              :connection => connection,
              :snapshots  => self
            )
          )
          if volume_id
            snapshot.volume_id = volume_id
          end
          snapshot
        end

        def reload
          all(snapshot_id)
        end

      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
fog-0.0.29 lib/fog/aws/models/ec2/snapshots.rb
fog-0.0.28 lib/fog/aws/models/ec2/snapshots.rb
fog-0.0.27 lib/fog/aws/models/ec2/snapshots.rb
fog-0.0.26 lib/fog/aws/models/ec2/snapshots.rb