class Fog::Compute::Google::Disk
Constants
- RUNNING_STATE
Public Instance Methods
attached_disk_obj(opts = {})
click to toggle source
Returns an attached disk configuration hash.
Compute
API needs attached disks to be specified in a custom format. This provides a handy shortcut for generating a preformatted config.
Example output: {:auto_delete=>false,
:boot=>true, :mode=>"READ_WRITE", :source=>"https://www.googleapis.com/compute/v1/projects/myproj/zones/us-central1-f/disks/mydisk", :type=>"PERSISTENT"}
See Instances.insert API docs for more info: cloud.google.com/compute/docs/reference/rest/v1/instances/insert
@param [Hash] opts options to attach the disk with.
@option opts [Boolean] :writable The mode in which to attach this disk. (defaults to READ_WRITE) @option opts [Boolean] :boot Indicates whether this is a boot disk. (defaults to false) @option opts [String] :device_name Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. @option opts [Object] :encryption_key Encrypts or decrypts a disk using a customer-supplied encryption key. @option opts [Object] :auto_delete Specifies whether the disk will be auto-deleted when the instance is deleted. (defaults to false)
@return [Hash] Attached disk configuration hash
# File lib/fog/compute/google/models/disk.rb, line 104 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 140 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 { ready? } service.snapshots.get(snapshot_name) end
default_description()
click to toggle source
# File lib/fog/compute/google/models/disk.rb, line 24 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 61 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
A legacy shorthand for attached_disk_obj
@param [Object] writable The mode in which to attach this disk.
(defaults to READ_WRITE)
@param [Object] auto_delete Specifies whether the disk will be
auto-deleted when the instance is deleted. (defaults to false)
@return [Hash]
# File lib/fog/compute/google/models/disk.rb, line 116 def get_as_boot_disk(writable = true, auto_delete = false) attached_disk_obj(boot: true, writable: writable, auto_delete: auto_delete) end
ready?()
click to toggle source
# File lib/fog/compute/google/models/disk.rb, line 122 def ready? status == RUNNING_STATE end
reload()
click to toggle source
# File lib/fog/compute/google/models/disk.rb, line 126 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 34 def save requires :name, :zone, :size_gb options = { :description => description || default_description, :type => type, :size_gb => size_gb, :source_image => source_image, :source_snapshot => source_snapshot, :labels => labels }.reject { |_, v| v.nil? } if options[:source_image] unless source_image.include?("projects/") options[:source_image] = service.images.get(source_image).self_link end end # Request needs backward compatibility so source image is specified in # method arguments data = service.insert_disk(name, zone, options[:source_image], **options) operation = Fog::Compute::Google::Operations.new(service: service) .get(data.name, data.zone) operation.wait_for { ready? } reload end
zone_name()
click to toggle source
# File lib/fog/compute/google/models/disk.rb, line 71 def zone_name zone.nil? ? nil : zone.split("/")[-1] end