1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
# frozen_string_literal: true
module Fog
module Compute
class Aliyun
class Real
# {Aliyun API Reference}[https://docs.aliyun.com/?spm=5176.100054.201.106.DGkmH7#/pub/ecs/open-api/image&createimage]
def create_image(snapshotId, options = {})
action = 'CreateImage'
sigNonce = randonStr
time = Time.new.utc
parameters = defaultParameters(action, sigNonce, time)
pathUrl = defaultAliyunUri(action, sigNonce, time)
parameters['SnapshotId'] = snapshotId
pathUrl += '&SnapshotId='
pathUrl += snapshotId
name = options[:name]
if name
parameters['ImageName'] = name
pathUrl += '&ImageName='
pathUrl += name
end
desc = options[:description]
if desc
parameters['Description'] = desc
pathUrl += '&Description='
pathUrl += desc
end
version = options[:version]
if version
parameters['ImageVersion'] = version
pathUrl += '&ImageVersion='
pathUrl += version
end
signature = sign(@aliyun_accesskey_secret, parameters)
pathUrl += '&Signature='
pathUrl += signature
request(
expects: [200, 203],
method: 'GET',
path: pathUrl
)
end
end
class Mock
def create_image(server_id, name, metadata = {})
response = Excon::Response.new
response.status = 202
img_id = Fog::Mock.random_numbers(6).to_s
data = {
'id' => img_id,
'server' => { 'id' => '3', 'links' => [{ 'href' => "http://nova1:8774/admin/servers/#{server_id}", 'rel' => 'bookmark' }] },
'links' => [{ 'href' => "http://nova1:8774/v1.1/admin/images/#{img_id}", 'rel' => 'self' }, { 'href' => "http://nova1:8774/admin/images/#{img_id}", 'rel' => 'bookmark' }],
'metadata' => metadata || {},
'name' => name || "server_#{rand(999)}",
'progress' => 0,
'status' => 'SAVING',
'minDisk' => 0,
'minRam' => 0,
'updated' => '',
'created' => ''
}
self.data[:last_modified][:images][data['id']] = Time.now
self.data[:images][data['id']] = data
response.body = { 'image' => data }
response
end
end
end
end
end
|