Sha256: fbdb62b6dbcc70e5b0ff67faef69bc527f6068f9ce226920dbac9182832432fb

Contents?: true

Size: 1.98 KB

Versions: 23

Compression:

Stored size: 1.98 KB

Contents

module Fog
  module Vsphere
    class Compute
      class Real
        def list_vm_snapshots(vm_id, opts = {})
          vm_snapshot_info = get_vm_ref(vm_id).snapshot

          return [] unless vm_snapshot_info

          root_snapshots = vm_snapshot_info.rootSnapshotList.map do |snap|
            item = snapshot_info(snap, vm_id)
            [
              item,
              opts[:recursive] ? list_child_snapshots(item, opts) : nil
            ]
          end

          root_snapshots.flatten.compact
        end

        protected

        def snapshot_info(snap_tree, vm_id)
          {
            name: snap_tree.name,
            quiesced: snap_tree.quiesced,
            description: snap_tree.description,
            create_time: snap_tree.createTime,
            power_state: snap_tree.state,
            ref: snap_tree.snapshot._ref,
            mo_ref: snap_tree.snapshot,
            tree_node: snap_tree,
            ref_chain: "#{vm_id}/#{snap_tree.snapshot._ref}",
            snapshot_name_chain: "#{vm_id}/#{snap_tree.name}",
            server_id: vm_id
          }
        end
      end
      class Mock
        def list_vm_snapshots(vm_id, _opts = {})
          [
            {
              name: 'clean',
              quiesced: false,
              description: '',
              create_time: Time.now.utc,
              power_state: 'poweredOn',
              ref: 'snapshot-0101',
              mo_ref: nil,
              tree_node: nil,
              snapshot_name_chain: '123/clean',
              ref_chain: "#{vm_id}/snapshot-0101"
            },
            {
              name: 'dirty',
              quiesced: false,
              description: '',
              create_time: Time.now.utc,
              power_state: 'poweredOn',
              ref: 'snapshot-0102',
              mo_ref: nil,
              tree_node: nil,
              snapshot_name_chain: '123/dirty',
              ref_chain: "#{vm_id}/snapshot-0102"
            }
          ]
        end
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
fog-vsphere-3.7.0 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.6.8 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.6.7 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.6.6 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.6.5 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.6.4 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.6.3 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.6.2 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.5.3 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.6.0 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.5.2 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.5.1 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.5.0 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.4.0 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.3.1 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.3.0 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.2.5 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.2.2 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.2.1 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
fog-vsphere-3.2.0 lib/fog/vsphere/requests/compute/list_vm_snapshots.rb