Sha256: 1d18f3649b2c94de62f4f48e48d3cd086bc3ea947a572cf930ff756a7b642a2c

Contents?: true

Size: 1.67 KB

Versions: 28

Compression:

Stored size: 1.67 KB

Contents

module Fog
  module Compute
    class Cloudstack

      class Real
        # Deletes a snapshot of a disk volume.
        #
        # {CloudStack API Reference}[http://cloudstack.apache.org/docs/api/apidocs-4.4/root_admin/deleteSnapshot.html]
        def delete_snapshot(*args)
          options = {}
          if args[0].is_a? Hash
            options = args[0]
            options.merge!('command' => 'deleteSnapshot') 
          else
            options.merge!('command' => 'deleteSnapshot', 
            'id' => args[0])
          end
          request(options)
        end
      end
 
      class Mock
        def delete_snapshot(options={})
          snapshot_id = options['id']
          snapshots = self.data[:snapshots]

          if snapshots[snapshot_id]

            snapshots.delete(snapshot_id)
            job_id = add_delete_snapshot_job(snapshot_id)

            {'deletesnapshotresponse' => {'jobid' => job_id}}
          end
          # TODO add cases for empty or wrong id
        end

        def add_delete_snapshot_job(snapshot_id)
          job_id = Fog::Cloudstack.uuid

          job = {
            'id' => job_id,
            'user_id' => self.data[:users].first, # TODO use current user
            'account_id' => self.data[:accounts].first, # TODO use current user
            'cmd' => 'com.cloud.api.commands.DeleteSnapshotCmd',
            'job_status'=> 1,
            'job_result_type' => nil,
            'job_result_code' => 0,
            'job_proc_status' => 0,
            'created_at' => Time.now.iso8601,
            'job_result' => { "success" => true }
          }

          self.data[:jobs][job_id] = job
          job_id
        end

      end 
    end
  end
end

Version data entries

28 entries across 26 versions & 4 rubygems

Version Path
fog-2.1.0 lib/fog/cloudstack/requests/compute/delete_snapshot.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.5.0/gems/fog-1.42.1/lib/fog/cloudstack/requests/compute/delete_snapshot.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.4.0/gems/fog-1.42.1/lib/fog/cloudstack/requests/compute/delete_snapshot.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.3.0/gems/fog-1.42.1/lib/fog/cloudstack/requests/compute/delete_snapshot.rb
fog-1.42.1 lib/fog/cloudstack/requests/compute/delete_snapshot.rb
fog-2.0.0 lib/fog/cloudstack/requests/compute/delete_snapshot.rb
fog-1.42.0 lib/fog/cloudstack/requests/compute/delete_snapshot.rb
fog-1.41.0 lib/fog/cloudstack/requests/compute/delete_snapshot.rb
fog-1.40.0 lib/fog/cloudstack/requests/compute/delete_snapshot.rb
fog-1.39.0 lib/fog/cloudstack/requests/compute/delete_snapshot.rb
fog-1.38.0 lib/fog/cloudstack/requests/compute/delete_snapshot.rb
fog-1.37.0 lib/fog/cloudstack/requests/compute/delete_snapshot.rb
fog-1.36.0 lib/fog/cloudstack/requests/compute/delete_snapshot.rb
fog-1.35.0 lib/fog/cloudstack/requests/compute/delete_snapshot.rb
fog-2.0.0.pre.0 lib/fog/cloudstack/requests/compute/delete_snapshot.rb
vagrant-cloudstack-1.2.0 vendor/bundle/gems/fog-1.32.0/lib/fog/cloudstack/requests/compute/delete_snapshot.rb
fog-1.34.0 lib/fog/cloudstack/requests/compute/delete_snapshot.rb
fog-1.33.0 lib/fog/cloudstack/requests/compute/delete_snapshot.rb
fog-1.32.0 lib/fog/cloudstack/requests/compute/delete_snapshot.rb
fog-1.31.0 lib/fog/cloudstack/requests/compute/delete_snapshot.rb