mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
49 lines
1.3 KiB
Ruby
49 lines
1.3 KiB
Ruby
module Fog
|
|
module Compute
|
|
class Google
|
|
|
|
class Mock
|
|
|
|
def insert_snapshot(snap_name)
|
|
Fog::Mock.not_implemented
|
|
end
|
|
|
|
end
|
|
|
|
class Real
|
|
|
|
def insert_snapshot(disk_name, zone_name, project=@project, opts={})
|
|
|
|
# This is unfortunate, since we might be called from 2 contexts
|
|
# 1. disk.snapshot <-- here validation of disk_name is not needed
|
|
# 2. snapshot.create <-- here we must validate the disk_name
|
|
#
|
|
# Validation would involve 'get'ing the disk by that name. This is
|
|
# redundant (and expensive) for case (1) which is likely the common
|
|
# codepath. So we won't do it.
|
|
|
|
api_method = @compute.disks.create_snapshot
|
|
|
|
parameters = {
|
|
'disk' => disk_name,
|
|
'zone' => zone_name,
|
|
'project' => @project,
|
|
}
|
|
|
|
snap_name = opts.delete('name')
|
|
raise ArgumentError.new('Must specify snapshot name') unless snap_name
|
|
body_object = { 'name' => snap_name }
|
|
|
|
# Merge in any remaining options (description)
|
|
body_object.merge(opts)
|
|
|
|
result = self.build_result(api_method, parameters,
|
|
body_object)
|
|
response = self.build_response(result)
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|