class Fog::Compute::Google::Disk

Constants

RUNNING_STATE

Public Instance Methods

attached_disk_obj(opts = {}) click to toggle source
# File lib/fog/compute/google/models/disk.rb, line 64
def attached_disk_obj(opts = {})
  requires :self_link
  collection.attached_disk_obj(self_link, opts)
end
create_snapshot(snapshot_name, snapshot = {}) click to toggle source
# File lib/fog/compute/google/models/disk.rb, line 97
def create_snapshot(snapshot_name, snapshot = {})
  requires :name, :zone
  raise ArgumentError, "Invalid snapshot name" unless snapshot_name

  data = service.create_disk_snapshot(snapshot_name, name, zone_name, snapshot)
  operation = Fog::Compute::Google::Operations.new(:service => service)
                                              .get(data.name, data.zone)
  operation.wait_for { !pending? }
  service.snapshots.get(snapshot_name)
end
default_description() click to toggle source
# File lib/fog/compute/google/models/disk.rb, line 21
def default_description
  if !source_image.nil?
    "created from image: #{source_image}"
  elsif !source_snapshot.nil?
    "created from snapshot: #{source_snapshot}"
  else
    "created with fog"
  end
end
destroy(async = true) click to toggle source
# File lib/fog/compute/google/models/disk.rb, line 50
def destroy(async = true)
  requires :name, :zone

  data = service.delete_disk(name, zone_name)
  operation = Fog::Compute::Google::Operations.new(:service => service)
                                              .get(data.name, data.zone)
  operation.wait_for { ready? } unless async
  operation
end
get_as_boot_disk(writable = true, auto_delete = false) click to toggle source
# File lib/fog/compute/google/models/disk.rb, line 69
def get_as_boot_disk(writable = true, auto_delete = false)
  {
    :auto_delete => auto_delete,
    :boot => true,
    :source => self_link,
    :mode =>  writable ? "READ_WRITE" : "READ_ONLY",
    :type => "PERSISTENT"
  }
end
ready?() click to toggle source
# File lib/fog/compute/google/models/disk.rb, line 79
def ready?
  status == RUNNING_STATE
end
reload() click to toggle source
# File lib/fog/compute/google/models/disk.rb, line 83
def reload
  requires :identity, :zone

  return unless data = begin
    collection.get(identity, zone_name)
  rescue Google::Apis::TransmissionError
    nil
  end

  new_attributes = data.attributes
  merge_attributes(new_attributes)
  self
end
save() click to toggle source
# File lib/fog/compute/google/models/disk.rb, line 31
def save
  requires :name, :zone, :size_gb

  options = {
    :description => description || default_description,
    :source_image => source_image,
    :source_snapshot => source_snapshot,
    :size_gb => size_gb,
    :type => type,
    :zone => zone
  }

  data = service.insert_disk(name, zone, source_image, options)
  operation = Fog::Compute::Google::Operations.new(:service => service)
                                              .get(data.name, data.zone)
  operation.wait_for { !pending? }
  reload
end
zone_name() click to toggle source
# File lib/fog/compute/google/models/disk.rb, line 60
def zone_name
  zone.nil? ? nil : zone.split("/")[-1]
end