mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
112 lines
3.9 KiB
Ruby
112 lines
3.9 KiB
Ruby
module Fog
|
|
module Compute
|
|
class Clodo
|
|
class Real
|
|
# Input:
|
|
# vps_title - VDS title to display in VDS list
|
|
# vps_type - VDS type (VirtualServer,ScaleServer)
|
|
# vps_memory - memory size in megabytes (for ScaleServer - low limit)
|
|
# vps_memory_max - maximum number of ScaleServer memory megabytes to scale up.
|
|
# vps_hdd - Virtual HDD size im gigabytes.
|
|
# vps_admin - support level (1 - usual&free, 2 - extended, 3 - VIP)
|
|
# vps_os - OS ID to install
|
|
# Output:
|
|
# id - VDS ID
|
|
# name - VDS title
|
|
# imageId - OS ID
|
|
# adminPass - root password
|
|
|
|
def create_server(image_id, options = {})
|
|
data = {
|
|
'server' => {
|
|
:vps_os => image_id,
|
|
:vps_hdd => options[:vps_hdd]?options[:vps_hdd]:5,
|
|
:vps_memory => options[:vps_memory]?options[:vps_memory]:256,
|
|
:vps_memory_max => options[:vps_memory_max]?options[:vps_memory_max]:1024,
|
|
:vps_admin => options[:vps_admin]?options[:vps_admin]:1
|
|
}
|
|
}
|
|
|
|
data['server'].merge! options if options
|
|
|
|
request(
|
|
:body => MultiJson.encode(data),
|
|
:expects => [200, 202],
|
|
:method => 'POST',
|
|
:path => 'servers'
|
|
)
|
|
|
|
end
|
|
end
|
|
|
|
class Mock
|
|
def create_server(image_id, options = {})
|
|
|
|
raise Excon::Errors::BadRequest.new("Invalid image ID") unless image_id > 0
|
|
|
|
response = Excon::Response.new
|
|
response.status = 202
|
|
|
|
id = Fog::Mock.random_numbers(6).to_i
|
|
|
|
data = {
|
|
'id' => id,
|
|
'imageId' => "#{image_id}",
|
|
'name' => options['name'] || "VPS #{rand(999)}",
|
|
'adminPass' => '23ryh8udbcbyt'
|
|
}
|
|
|
|
self.data[:last_modified][:servers][id] = Time.now
|
|
self.data[:servers][id] = {
|
|
'id' => "#{id}",
|
|
'imageId' => data['imageId'],
|
|
'name' => data['name'],
|
|
'vps_os_title' => "OSTitle",
|
|
'vps_root_pass' => data['adminPass'],
|
|
'status' => "is_running",
|
|
'addresses' => {'public' =>[{
|
|
'primary_ip' => true,
|
|
'isp' => false,
|
|
'ip' => '66.6.6.66'
|
|
},
|
|
{
|
|
'primary_ip' => false,
|
|
'isp' => false,
|
|
'ip' => '13.13.13.13'
|
|
}]},
|
|
'vps_createdate' => "#{Time.now}",
|
|
'vps_hdd_max' => "5",
|
|
'vps_traff' => nil,
|
|
'vps_mem_1h_max' => "0",
|
|
'vps_mem_load' => "0",
|
|
'vps_user_pass' => "wer45345ht",
|
|
'vps_vnc_pass' => "bi65tdfyb",
|
|
'vps_adddate' => "#{Time.now}",
|
|
'vps_update' => "#{Time.now}",
|
|
'vps_mem_1h_min' => "0",
|
|
'vps_mem_1h_avg' => nil,
|
|
'vps_memory_max' => options['vps_memory_max'] || "512",
|
|
'vps_os_version' => "6.6.6",
|
|
'vps_cpu_1h_max' => "0",
|
|
'vps_hdd_load' => "0",
|
|
'vps_disk_load' => "0",
|
|
'vps_os_type' => options['vps_os_type'] || "VirtualServer",
|
|
'type' => options['vps_os_type'] || "VirtualServer",
|
|
'vps_memory' => options['vps_memory'] || "512",
|
|
'vps_cpu_load' => "0",
|
|
'vps_update_days' => "0",
|
|
'vps_os_bits' => "64",
|
|
'vps_vnc' => "6.6.6.6:5900",
|
|
'vps_cpu_max' => "0",
|
|
'vps_cpu_1h_min' => "0",
|
|
'vps_cpu_1h_avg' => nil
|
|
}
|
|
|
|
response.body = { 'server' => data }
|
|
response
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|