class Fog::Compute::Aliyun::Mock
Attributes
auth_token[R]
auth_token_expiration[R]
current_tenant[R]
current_user[R]
Public Class Methods
data()
click to toggle source
# File lib/fog/aliyun/compute.rb, line 124 def self.data @data ||= Hash.new do |hash, key| hash[key] = { last_modified: { images: {}, servers: {}, key_pairs: {}, security_groups: {}, addresses: {} }, images: { '0e09fbd6-43c5-448a-83e9-0d3d05f9747e' => { 'id' => '0e09fbd6-43c5-448a-83e9-0d3d05f9747e', 'name' => 'cirros-0.3.0-x86_64-blank', 'progress' => 100, 'status' => 'ACTIVE', 'updated' => '', 'minRam' => 0, 'minDisk' => 0, 'metadata' => {}, 'links' => [{ 'href' => 'http://nova1:8774/v1.1/admin/images/1', 'rel' => 'self' }, { 'href' => 'http://nova1:8774/admin/images/2', 'rel' => 'bookmark' }] } }, servers: {}, key_pairs: {}, security_groups: { '0' => { 'id' => 0, 'tenant_id' => Fog::Mock.random_hex(8), 'name' => 'default', 'description' => 'default', 'rules' => [ { 'id' => 0, 'parent_group_id' => 0, 'from_port' => 68, 'to_port' => 68, 'ip_protocol' => 'udp', 'ip_range' => { 'cidr' => '0.0.0.0/0' }, 'group' => {} } ] } }, server_security_group_map: {}, addresses: {}, quota: { 'security_group_rules' => 20, 'security_groups' => 10, 'injected_file_content_bytes' => 10_240, 'injected_file_path_bytes' => 256, 'injected_files' => 5, 'metadata_items' => 128, 'floating_ips' => 10, 'instances' => 10, 'key_pairs' => 10, 'gigabytes' => 5000, 'volumes' => 10, 'cores' => 20, 'ram' => 51_200 }, volumes: {} } end end
new(options = {})
click to toggle source
# File lib/fog/aliyun/compute.rb, line 192 def initialize(options = {}) @openstack_username = options[:openstack_username] @openstack_user_domain = options[:openstack_user_domain] || options[:openstack_domain] @openstack_project_domain = options[:openstack_project_domain] || options[:openstack_domain] || 'Default' @openstack_auth_uri = URI.parse(options[:openstack_auth_url]) @current_tenant = options[:openstack_tenant] @current_tenant_id = options[:openstack_tenant_id] @auth_token = Fog::Mock.random_base64(64) @auth_token_expiration = (Time.now.utc + 86_400).iso8601 management_url = URI.parse(options[:openstack_auth_url]) management_url.port = 8774 management_url.path = '/v1.1/1' @openstack_management_url = management_url.to_s identity_public_endpoint = URI.parse(options[:openstack_auth_url]) identity_public_endpoint.port = 5000 @openstack_identity_public_endpoint = identity_public_endpoint.to_s end
reset()
click to toggle source
# File lib/fog/aliyun/compute.rb, line 188 def self.reset @data = nil end
Public Instance Methods
add_security_group(_server_id, _group_name)
click to toggle source
# File lib/fog/aliyun/requests/compute/leave_security_group.rb, line 32 def add_security_group(_server_id, _group_name) response = Excon::Response.new response.status = 200 response end
attach_volume(volume_id, server_id, device)
click to toggle source
# File lib/fog/aliyun/requests/compute/attach_disk.rb, line 63 def attach_volume(volume_id, server_id, device) response = Excon::Response.new response.status = 200 data = { 'id' => volume_id, 'volumeId' => volume_id, 'serverId' => server_id, 'device' => device } self.data[:volumes][volume_id]['attachments'] << data response.body = { 'volumeAttachment' => data } response end
create_image(server_id, name, metadata = {})
click to toggle source
# File lib/fog/aliyun/requests/compute/create_image.rb, line 52 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
create_security_group(name, description)
click to toggle source
# File lib/fog/aliyun/requests/compute/create_security_group.rb, line 49 def create_security_group(name, description) Fog::Identity::OpenStack.new(openstack_auth_url: credentials[:openstack_auth_url]) tenant_id = Fog::Identity::OpenStack::V2::Mock.data[current_tenant][:tenants].keys.first security_group_id = Fog::Mock.random_numbers(2).to_i + 1 data[:security_groups][security_group_id.to_s] = { 'tenant_id' => tenant_id, 'rules' => [], 'id' => security_group_id, 'name' => name, 'description' => description } response = Excon::Response.new response.status = 200 response.headers = { 'X-Compute-Request-Id' => "req-#{Fog::Mock.random_hex(32)}", 'Content-Type' => 'application/json', 'Content-Length' => Fog::Mock.random_numbers(3).to_s, 'Date' => Date.new } response.body = { 'security_group' => data[:security_groups][security_group_id.to_s] } response end
create_server(name, image_ref, flavor_ref, options = {})
click to toggle source
# File lib/fog/aliyun/requests/compute/create_server.rb, line 96 def create_server(name, image_ref, flavor_ref, options = {}) response = Excon::Response.new response.status = 202 server_id = Fog::Mock.random_numbers(6).to_s identity = Fog::Identity::OpenStack.new openstack_auth_url: credentials[:openstack_auth_url] user = identity.users.find do |u| u.name == @openstack_username end user_id = if user user.id else response = identity.create_user(@openstack_username, 'password', "#{@openstack_username}@example.com") response.body['user']['id'] end mock_data = { 'addresses' => { 'Private' => [{ 'addr' => Fog::Mock.random_ip }] }, 'flavor' => { 'id' => flavor_ref, 'links' => [{ 'href' => 'http://nova1:8774/admin/flavors/1', 'rel' => 'bookmark' }] }, 'id' => server_id, 'image' => { 'id' => image_ref, 'links' => [{ 'href' => "http://nova1:8774/admin/images/#{image_ref}", 'rel' => 'bookmark' }] }, 'links' => [{ 'href' => 'http://nova1:8774/v1.1/admin/servers/5', 'rel' => 'self' }, { 'href' => 'http://nova1:8774/admin/servers/5', 'rel' => 'bookmark' }], 'hostId' => '123456789ABCDEF01234567890ABCDEF', 'metadata' => options['metadata'] || {}, 'name' => name || "server_#{rand(999)}", 'accessIPv4' => options['accessIPv4'] || '', 'accessIPv6' => options['accessIPv6'] || '', 'progress' => 0, 'status' => 'BUILD', 'created' => '2012-09-27T00:04:18Z', 'updated' => '2012-09-27T00:04:27Z', 'user_id' => user_id, 'config_drive' => options['config_drive'] || '' } if nics = options['nics'] nics.each do |_nic| mock_data['addresses'].merge!( 'Public' => [{ 'addr' => Fog::Mock.random_ip }] ) end end response_data = {} if options['return_reservation_id'] == 'True' response_data = { 'reservation_id' => "r-#{Fog::Mock.random_numbers(6)}" } else response_data = { 'adminPass' => 'password', 'id' => server_id, 'links' => mock_data['links'] } end if block_devices = options['block_device_mapping_v2'] block_devices.each { |bd| compute.volumes.get(bd[:uuid]).attach(server_id, bd[:device_name]) } elsif block_device = options['block_device_mapping'] compute.volumes.get(block_device[:volume_id]).attach(server_id, block_device[:device_name]) end data[:last_modified][:servers][server_id] = Time.now data[:servers][server_id] = mock_data if options['security_groups'] groups = Array(options['security_groups']).map do |sg| if sg.is_a?(Fog::Compute::OpenStack::SecurityGroup) sg.name else sg end end data[:server_security_group_map][server_id] = groups response_data['security_groups'] = groups end data[:last_modified][:servers][server_id] = Time.now data[:servers][server_id] = mock_data response.body = if options['return_reservation_id'] == 'True' response_data else { 'server' => response_data } end response end
credentials()
click to toggle source
# File lib/fog/aliyun/compute.rb, line 222 def credentials { provider: 'openstack', openstack_auth_url: @openstack_auth_uri.to_s, openstack_auth_token: @auth_token, openstack_management_url: @openstack_management_url, openstack_identity_endpoint: @openstack_identity_public_endpoint } end
data()
click to toggle source
# File lib/fog/aliyun/compute.rb, line 214 def data self.class.data["#{@openstack_username}-#{@current_tenant}"] end
delete_security_group(security_group_id)
click to toggle source
# File lib/fog/aliyun/requests/compute/delete_security_group.rb, line 35 def delete_security_group(security_group_id) data[:security_groups].delete security_group_id.to_s response = Excon::Response.new response.status = 202 response.headers = { 'Content-Type' => 'text/html; charset=UTF-8', 'Content-Length' => '0', 'Date' => Date.new } response.body = {} response end
delete_server(server_id)
click to toggle source
# File lib/fog/aliyun/requests/compute/delete_server.rb, line 29 def delete_server(server_id) response = Excon::Response.new if server = list_servers_detail.body['servers'].find { |_| _['id'] == server_id } if server['status'] == 'BUILD' response.status = 409 raise(Excon::Errors.status_error({ expects: 204 }, response)) else data[:last_modified][:servers].delete(server_id) data[:servers].delete(server_id) response.status = 204 end response else raise Fog::Compute::OpenStack::NotFound end end
get_security_group(security_group_id)
click to toggle source
# File lib/fog/aliyun/requests/compute/list_security_group_rules.rb, line 51 def get_security_group(security_group_id) security_group = data[:security_groups][security_group_id.to_s] response = Excon::Response.new if security_group response.status = 200 response.headers = { 'X-Compute-Request-Id' => 'req-63a90344-7c4d-42e2-936c-fd748bced1b3', 'Content-Type' => 'application/json', 'Content-Length' => '167', 'Date' => Date.new } response.body = { 'security_group' => security_group } else raise Fog::Compute::OpenStack::NotFound, "Security group #{security_group_id} does not exist" end response end
join_security_group(_server_id, _group_id)
click to toggle source
# File lib/fog/aliyun/requests/compute/join_security_group.rb, line 32 def join_security_group(_server_id, _group_id) response = Excon::Response.new response.status = 200 response end
list_images(_options = {})
click to toggle source
# File lib/fog/aliyun/requests/compute/list_images.rb, line 68 def list_images(_options = {}) response = Excon::Response.new data = list_images_detail.body['images'] images = [] for image in data images << image.reject { |key, _value| !%w(id name links).include?(key) } end response.status = [200, 203][rand(1)] response.body = { 'images' => images } response end
list_route_tables(_vrouterid, _options = {})
click to toggle source
# File lib/fog/aliyun/requests/compute/list_route_tables.rb, line 50 def list_route_tables(_vrouterid, _options = {}) response = Excon::Response.new data = list_images_detail.body['images'] images = [] for image in data images << image.reject { |key, _value| !%w(id name links).include?(key) } end response.status = [200, 203][rand(1)] response.body = { 'images' => images } response end
list_security_groups(server_id = nil)
click to toggle source
# File lib/fog/aliyun/requests/compute/list_security_groups.rb, line 49 def list_security_groups(server_id = nil) security_groups = data[:security_groups].values groups = if server_id server_group_names = Array(data[:server_security_group_map][server_id]) server_group_names.map do |name| security_groups.find do |sg| sg['name'] == name end end.compact else security_groups end Excon::Response.new( body: { 'security_groups' => groups }, headers: { 'X-Compute-Request-Id' => "req-#{Fog::Mock.random_base64(36)}", 'Content-Type' => 'application/json', 'Date' => Date.new }, status: 200 ) end
list_servers(_options = {})
click to toggle source
# File lib/fog/aliyun/requests/compute/list_servers.rb, line 57 def list_servers(_options = {}) response = Excon::Response.new data = list_servers_detail.body['servers'] servers = [] for server in data servers << server.reject { |key, _value| !%w(id name links).include?(key) } end response.status = [200, 203][rand(1)] response.body = { 'servers' => servers } response end
list_vrouters()
click to toggle source
# File lib/fog/aliyun/requests/compute/list_vrouters.rb, line 47 def list_vrouters response = Excon::Response.new data = list_images_detail.body['VRouters'] images = [] for image in data images << image.reject { |key, _value| !%w(id name links).include?(key) } end response.status = [200, 203][rand(1)] response.body = { 'VRouter' => images } response end
list_zones(*_args)
click to toggle source
# File lib/fog/aliyun/requests/compute/list_zones.rb, line 27 def list_zones(*_args) Excon::Response.new( body: { 'availabilityZoneInfo' => [ { 'zoneState' => { 'available' => true }, 'hosts' => nil, 'zoneName' => 'nova' } ] }, status: 200 ) end
modify_vpc(_vpcId, _options = {})
click to toggle source
# File lib/fog/aliyun/requests/compute/modify_vpc.rb, line 45 def modify_vpc(_vpcId, _options = {}) Fog::Identity::OpenStack.new(openstack_auth_url: credentials[:openstack_auth_url]) tenant_id = Fog::Identity::OpenStack::V2::Mock.data[current_tenant][:tenants].keys.first security_group_id = Fog::Mock.random_numbers(2).to_i + 1 data[:security_groups][security_group_id.to_s] = { 'tenant_id' => tenant_id, 'rules' => [], 'id' => security_group_id, 'name' => name, 'description' => description } response = Excon::Response.new response.status = 200 response.headers = { 'X-Compute-Request-Id' => "req-#{Fog::Mock.random_hex(32)}", 'Content-Type' => 'application/json', 'Content-Length' => Fog::Mock.random_numbers(3).to_s, 'Date' => Date.new } response.body = { 'security_group' => data[:security_groups][security_group_id.to_s] } response end
reboot_server(_server_id, _type = 'SOFT')
click to toggle source
# File lib/fog/aliyun/requests/compute/reboot_server.rb, line 35 def reboot_server(_server_id, _type = 'SOFT') response = Excon::Response.new response.status = 202 response end
reset_data()
click to toggle source
# File lib/fog/aliyun/compute.rb, line 218 def reset_data self.class.data.delete("#{@openstack_username}-#{@current_tenant}") end
start_server(_server_id)
click to toggle source
# File lib/fog/aliyun/requests/compute/start_server.rb, line 35 def start_server(_server_id) true end
stop_server(_server_id)
click to toggle source
# File lib/fog/aliyun/requests/compute/stop_server.rb, line 35 def stop_server(_server_id) true end