Sha256: 5b62afeaf83fb28d1ed1665097d0d0cba8fdc199fcf9f5f152b2f339b296d2d8

Contents?: true

Size: 1.77 KB

Versions: 27

Compression:

Stored size: 1.77 KB

Contents

unless Fog.mocking?

  module Fog
    module AWS
      class EC2

        # Create a snapshot of an EBS volume and store it in S3
        #
        # ==== Parameters
        # * volume_id<~String> - Id of EBS volume to snapshot
        #
        # ==== Returns
        # * response<~Fog::AWS::Response>:
        #   * body<~Hash>:
        #     * 'progress'<~String> - The percentage progress of the snapshot
        #     * 'requestId'<~String> - id of request
        #     * 'snapshotId'<~String> - id of snapshot
        #     * 'startTime'<~Time> - timestamp when snapshot was initiated
        #     * 'status'<~String> - state of snapshot
        #     * 'volumeId'<~String> - id of volume snapshot targets
        def create_snapshot(volume_id)
          request({
            'Action' => 'CreateSnapshot',
            'VolumeId' => volume_id
          }, Fog::Parsers::AWS::EC2::CreateSnapshot.new)
        end

      end
    end
  end

else

  module Fog
    module AWS
      class EC2

        def create_snapshot(volume_id)
          response = Fog::Response.new
          if Fog::AWS::EC2.data[:volumes][volume_id]
            response.status = 200
            snapshot_id = Fog::AWS::Mock.snapshot_id
            data = {
              'progress'    => '',
              'snapshotId'  => snapshot_id,
              'startTime'   => Time.now,
              'status'      => 'pending',
              'volumeId'    => volume_id
            }
            Fog::AWS::EC2.data[:snapshots][snapshot_id] = data
            response.body = {
              'requestId' => Fog::AWS::Mock.request_id
            }.merge!(data)
          else
            response.status = 400
            raise(Fog::Errors.status_error(200, 400, response))
          end
          response
        end

      end
    end
  end

end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
fog-0.0.29 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.28 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.27 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.26 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.25 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.24 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.23 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.22 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.21 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.20 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.19 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.18 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.17 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.16 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.15 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.14 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.13 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.12 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.11 lib/fog/aws/requests/ec2/create_snapshot.rb
fog-0.0.10 lib/fog/aws/requests/ec2/create_snapshot.rb