class Fog::OpenStack::Compute::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/openstack/compute.rb, line 258 def self.data @data ||= Hash.new do |hash, key| hash[key] = { :last_modified => { :images => {}, :servers => {}, :key_pairs => {}, :security_groups => {}, :addresses => {} }, :aggregates => [{ "availability_zone" => "nova", "created_at" => "2012-11-16T06:22:23.032493", "deleted" => false, "deleted_at" => nil, "id" => 1, "name" => "name", "updated_at" => nil }], :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_groups => {}, :server_security_group_map => {}, :addresses => {}, :quota => { 'security_group_rules' => 20, 'security_groups' => 10, 'injected_file_content_bytes' => 10240, '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' => 51200 }, :volumes => {}, :snapshots => {}, :os_interfaces => [ { "fixed_ips" => [ { "ip_address" => "192.168.1.3", "subnet_id" => "f8a6e8f8-c2ec-497c-9f23-da9616de54ef" } ], "mac_addr" => "fa:16:3e:4c:2c:30", "net_id" => "3cb9bc59-5699-4588-a4b1-b87f96708bc6", "port_id" => "ce531f90-199f-48c0-816c-13e38010b442", "port_state" => "ACTIVE" } ] } end end
new(options = {})
click to toggle source
# File lib/fog/openstack/compute.rb, line 354 def initialize(options = {}) @auth_token = Fog::Mock.random_base64(64) @auth_token_expiration = (Time.now.utc + 86400).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 end
reset()
click to toggle source
# File lib/fog/openstack/compute.rb, line 348 def self.reset @data = nil end
Public Instance Methods
add_aggregate_host(_uuid, _host_uuid)
click to toggle source
# File lib/fog/openstack/compute/requests/add_aggregate_host.rb, line 17 def add_aggregate_host(_uuid, _host_uuid) response = Excon::Response.new response.status = 200 response.headers = { "Content-Type" => "text/html; charset=UTF-8", "Content-Length" => "0", "Date" => Date.new } response end
add_fixed_ip(_server_id, _network_id)
click to toggle source
# File lib/fog/openstack/compute/requests/add_fixed_ip.rb, line 23 def add_fixed_ip(_server_id, _network_id) true end
add_flavor_access(flavor_ref, tenant_id)
click to toggle source
# File lib/fog/openstack/compute/requests/add_flavor_access.rb, line 18 def add_flavor_access(flavor_ref, tenant_id) response = Excon::Response.new response.status = 200 response.body = { "flavor_access" => [{"tenant_id" => tenant_id.to_s, "flavor_id" => flavor_ref.to_s}] } response end
add_security_group(_server_id, _group_name)
click to toggle source
# File lib/fog/openstack/compute/requests/add_security_group.rb, line 12 def add_security_group(_server_id, _group_name) response = Excon::Response.new response.status = 200 response end
allocate_address(_pool = nil)
click to toggle source
# File lib/fog/openstack/compute/requests/allocate_address.rb, line 16 def allocate_address(_pool = nil) response = Excon::Response.new response.status = 200 response.headers = { "X-Compute-Request-Id" => "req-d4a21158-a86c-44a6-983a-e25645907f26", "Content-Type" => "application/json", "Content-Length" => "105", "Date" => Date.new } response.body = { "floating_ip" => { "instance_id" => nil, "ip" => "192.168.27.132", "fixed_ip" => nil, "id" => 4, "pool" => "nova" } } response end
associate_address(server_id, ip_address)
click to toggle source
# File lib/fog/openstack/compute/requests/associate_address.rb, line 12 def associate_address(server_id, ip_address) server = data[:servers][server_id] server["addresses"]['mocknet'] ||= [] ip_hash = {"OS-EXT-IPS-MAC:mac_addr" => "fa:16:3e:85:47:40", "version" => 4, "addr" => ip_address, "OS-EXT-IPS:type" => "floating"} server["addresses"]['mocknet'] << ip_hash response = Excon::Response.new response.status = 202 response.headers = { "Content-Type" => "text/html, charset=UTF-8", "Content-Length" => "0", "Date" => Date.new } response end
attach_volume(volume_id, server_id, device)
click to toggle source
# File lib/fog/openstack/compute/requests/attach_volume.rb, line 22 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 self.data[:volumes][volume_id]['status'] = 'in-use' response.body = {'volumeAttachment' => data} response end
change_server_password(_server_id, _admin_password)
click to toggle source
# File lib/fog/openstack/compute/requests/change_server_password.rb, line 12 def change_server_password(_server_id, _admin_password) response = Excon::Response.new response.status = 202 response end
confirm_resize_server(_server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/confirm_resize_server.rb, line 12 def confirm_resize_server(_server_id) response = Excon::Response.new response.status = 204 response end
create_aggregate(_name, _options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/create_aggregate.rb, line 28 def create_aggregate(_name, _options = {}) response = Excon::Response.new response.status = 200 response.headers = { "Content-Type" => "text/html; charset=UTF-8", "Content-Length" => "0", "Date" => Date.new } response.body = {'aggregate' => data[:aggregates].first} response end
create_flavor(attributes)
click to toggle source
# File lib/fog/openstack/compute/requests/create_flavor.rb, line 37 def create_flavor(attributes) response = Excon::Response.new response.status = 200 response.headers = { "X-Compute-Request-Id" => "req-fdc6f99e-55a2-4ab1-8904-0892753828cf", "Content-Type" => "application/json", "Content-Length" => "356", "Date" => Date.new } response.body = { "flavor" => { "vcpus" => attributes[:vcpus], "disk" => attributes[:disk], "name" => attributes[:name], "links" => [ { "href" => "http://192.168.27.100:8774/v1.1/6733e93c5f5c4eb1bcabc6902ba208d6/flavors/11", "rel" => "self" }, { "href" => "http://192.168.27.100:8774/6733e93c5f5c4eb1bcabc6902ba208d6/flavors/11", "rel" => "bookmark" } ], "rxtx_factor" => attributes[:rxtx_factor] || 1.0, "OS-FLV-EXT-DATA:ephemeral" => attributes[:ephemeral] || 0, "os-flavor-access:is_public" => attributes[:is_public] || false, "OS-FLV-DISABLED:disabled" => attributes[:disabled] || false, "ram" => attributes[:ram], "id" => "11", "swap" => attributes[:swap] || "" } } response end
create_flavor_metadata(_flavor_ref, _metadata)
click to toggle source
# File lib/fog/openstack/compute/requests/create_flavor_metadata.rb, line 20 def create_flavor_metadata(_flavor_ref, _metadata) response = Excon::Response.new response.status = 200 response.headers = { "X-Compute-Request-Id" => "req-fdc6f99e-55a2-4ab1-8904-0892753828cf", "Content-Type" => "application/json", "Content-Length" => "356", "Date" => Date.new } response.body = {"extra_specs" => { "cpu_arch" => "x86_64" }} response end
create_image(server_id, name, metadata = {})
click to toggle source
# File lib/fog/openstack/compute/requests/create_image.rb, line 17 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_key_pair(key_name, _public_key = nil)
click to toggle source
# File lib/fog/openstack/compute/requests/create_key_pair.rb, line 25 def create_key_pair(key_name, _public_key = nil) response = Excon::Response.new response.status = 200 response.headers = { "X-Compute-Request-Id" => "req-c373a42c-2825-4e60-8d34-99416ea850be", "Content-Type" => "application/json", "Content-Length" => "1289", "Date" => Date.new } response.body = { "keypair" => { "public_key" => "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDCdAZLjljntJbLVVkNHjWFSoKen2nZbk39ZfqhZJOMdeFdz02GWBS45rcuboeGg/gozKRwsLu4N6NLPlYtbK/NapJIvgO/djBp+FQG1QZNtLPsx7j4hVJac3yISGms+Xtu4cEv6j5sFDzAgTQbWez0Z1+9qOq9ngdaoW+YClfQ== vagrant@nova\n", "private_key" => "-----BEGIN RSA PRIVATE KEY-----\nMIICXgIBAAKBgQDCdAZLjljn1tJbLVVkNHjWFSoKen2nZbk39ZfqhZJOMdeFdz02\nGWBS45rcuHboeGg/gozKRwsLu4N6NLPlYtbK/NapJIvgO/djBp+FQG1QZNtLPsx7\nj4hVJac3yISGms+Xtu4cEv6j5sFDzAgTQbWez0Z1+9qOq9ngdaoW+YClfQIDAQAB\nAoGBALBoT9m1vuQ82EONQf2RONqHAsfUzi/SMhEZRgOlv9AemXZkcWyl4uPvxmtd\nEcreiTystAtCHjw7lhCExXthipevUjtIAAt+b3pMn6Oyjad3IRvde6atMdjrje43\n/nftYtuXYyJTsvwEvLYqSioLQ0Nn/XDKhOpcM5tejDHOH35lAkEA+H4r7y9X521u\nIABVAezBWaT/wvdMjx5cwfyYEQjnI1bxfRIqkgoY5gDDBdVbT75UTsHHbHLORQcw\nRjRvS2zgewJBAMhT6eyMonJvHHvC5RcchcY+dWkscIKoOzeyUKMb+7tERQa9/UN2\njYb+jdM0VyL0ruLFwYtl2m34gfmhcXgIvGcCQGzKMEnjHEUBr7jq7EyPbobkqeSd\niDMQQ+PZxmmO0EK0ib0L+v881HG926PuKK/cz+Q7Cif8iznFT+ksg50t6YkCQQC9\nwfcAskqieSuS9A9LcCIrojhXctf0e+T0Ij2N89DlF4sHEuqXf/IZ4IB5gsfTfdE3\nUDnAkK9yogaEbu/r0uKbAkEAy5kl71bIqvKTKsY2mES9ziVxfftl/9UIi5LI+QHb\nmC/c6cTrGVCM71fi2GMxGgBeEea4+7xwoWTL4CxA00kmTg==\n-----END RSA PRIVATE KEY-----\n", "user_id" => "admin", "name" => key_name, "fingerprint" => "97:86:f4:15:68:0c:7b:a7:e5:8f:f0:bd:1f:27:65:ad" } } response end
create_os_interface(server_id, options={})
click to toggle source
# File lib/fog/openstack/compute/requests/create_os_interface.rb, line 33 def create_os_interface(server_id, options={}) Excon::Response.new( :body => {'interfaceAttachment' => data[:os_interfaces].first}, :status => 200 ) end
create_security_group(name, description)
click to toggle source
# File lib/fog/openstack/compute/requests/create_security_group.rb, line 23 def create_security_group(name, description) Fog::OpenStack::Identity.new(:openstack_auth_url => credentials[:openstack_auth_url], :openstack_identity_api_version => 'v2.0') tenant_id = Fog::OpenStack::Identity::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_security_group_rule(parent_group_id, ip_protocol, from_port, to_port, cidr, group_id = nil)
click to toggle source
# File lib/fog/openstack/compute/requests/create_security_group_rule.rb, line 27 def create_security_group_rule(parent_group_id, ip_protocol, from_port, to_port, cidr, group_id = nil) parent_group_id = parent_group_id.to_i 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 } rule = { 'id' => Fog::Mock.random_numbers(2).to_i, 'from_port' => from_port, 'group' => group_id || {}, 'ip_protocol' => ip_protocol, 'to_port' => to_port, 'parent_group_id' => parent_group_id, 'ip_range' => { 'cidr' => cidr } } data[:security_groups][parent_group_id.to_s]['rules'].push(rule) response.body = { 'security_group_rule' => rule } response end
create_server(name, image_ref, flavor_ref, options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/create_server.rb, line 92 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::OpenStack::Identity.new(:openstack_auth_url => credentials[:openstack_auth_url], :openstack_identity_api_version => 'v2.0') 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'] || '', } nics = options['nics'] if 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' {'reservation_id' => "r-#{Fog::Mock.random_numbers(6)}"} else { 'adminPass' => 'password', 'id' => server_id, 'links' => mock_data['links'], } end if block_devices = options["block_device_mapping_v2"] block_devices.each { |bd| volumes.get(bd[:uuid]).attach(server_id, bd[:device_name]) } elsif block_device = options["block_device_mapping"] 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 security_groups = options['security_groups'] if security_groups groups = Array(security_groups).map do |sg| if sg.kind_of?(Fog::OpenStack::Compute::SecurityGroup) sg.name else sg end end data[:server_security_group_map][server_id] = groups response_data['security_groups'] = groups end if options['os:scheduler_hints'] && options['os:scheduler_hints']['group'] group = data[:server_groups][options['os:scheduler_hints']['group']] group[:members] << server_id if group end response.body = if options['return_reservation_id'] == 'True' response_data else {'server' => response_data} end response end
create_server_group(name, policy)
click to toggle source
# File lib/fog/openstack/compute/requests/create_server_group.rb, line 22 def create_server_group(name, policy) Fog::OpenStack::Compute::ServerGroup.validate_server_group_policy policy id = SecureRandom.uuid data[:server_groups][id] = {:name => name, :policies => [policy], :members => []} get_server_group id end
create_snapshot(volume_id, name, description, _force = false)
click to toggle source
# File lib/fog/openstack/compute/requests/create_snapshot.rb, line 25 def create_snapshot(volume_id, name, description, _force = false) volume_response = get_volume_details(volume_id) volume = volume_response.data[:body]['volume'] if volume.nil? raise Fog::OpenStack::Compute::NotFound else response = Excon::Response.new data = { "status" => "availble", "name" => name, "created_at" => Time.now, "description" => description, "volume_id" => volume_id, "id" => Fog::Mock.random_numbers(2), "size" => volume['size'] } self.data[:snapshots][data['id']] = data response.body = {"snapshot" => data} response.status = 202 response end end
create_volume(name, description, size, options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/create_volume.rb, line 38 def create_volume(name, description, size, options = {}) response = Excon::Response.new response.status = 202 data = {'id' => Fog::Mock.random_numbers(2), 'displayName' => name, 'displayDescription' => description, 'size' => size, 'status' => 'creating', 'snapshotId' => options[:snapshot_id], 'volumeType' => options[:volume_type] || 'None', 'availabilityZone' => options[:availability_zone] || 'nova', 'createdAt' => Time.now.strftime('%FT%T.%6N'), 'attachments' => [], 'metadata' => options[:metadata] || {}} self.data[:volumes][data['id']] = data response.body = {'volume' => data} response end
data()
click to toggle source
# File lib/fog/openstack/compute.rb, line 364 def data self.class.data["#{@openstack_username}-#{@current_tenant}"] end
delete_aggregate(_uuid)
click to toggle source
# File lib/fog/openstack/compute/requests/delete_aggregate.rb, line 15 def delete_aggregate(_uuid) response = Excon::Response.new response.status = 200 response.headers = { "Content-Type" => "text/html; charset=UTF-8", "Content-Length" => "0", "Date" => Date.new } response end
delete_flavor(_flavor_id)
click to toggle source
# File lib/fog/openstack/compute/requests/delete_flavor.rb, line 15 def delete_flavor(_flavor_id) response = Excon::Response.new response.status = 202 response.headers = { "Content-Type" => "text/html; charset=UTF-8", "Content-Length" => "0", "Date" => Date.new } response end
delete_flavor_metadata(_flavor_ref, _key)
click to toggle source
# File lib/fog/openstack/compute/requests/delete_flavor_metadata.rb, line 15 def delete_flavor_metadata(_flavor_ref, _key) response = Excon::Response.new response.status = 200 response.headers = { "X-Compute-Request-Id" => "req-fdc6f99e-55a2-4ab1-8904-0892753828cf", "Content-Type" => "application/json", "Content-Length" => "356", "Date" => Date.new } response.body = nil response end
delete_image(image_id)
click to toggle source
# File lib/fog/openstack/compute/requests/delete_image.rb, line 15 def delete_image(image_id) response = Excon::Response.new image = list_images_detail.body['images'].find { |im| im['id'] == image_id } if image if image['status'] == 'SAVING' response.status = 409 raise(Excon::Errors.status_error({:expects => 202}, response)) else data[:last_modified][:images].delete(image_id) data[:images].delete(image_id) response.status = 202 end response else response.status = 400 raise(Excon::Errors.status_error({:expects => 202}, response)) end end
delete_key_pair(_key_name)
click to toggle source
# File lib/fog/openstack/compute/requests/delete_key_pair.rb, line 17 def delete_key_pair(_key_name) 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_meta(collection_name, parent_id, _key)
click to toggle source
# File lib/fog/openstack/compute/requests/delete_meta.rb, line 15 def delete_meta(collection_name, parent_id, _key) if collection_name == "images" unless list_images_detail.body['images'].find { |image| image['id'] == parent_id } raise Fog::OpenStack::Compute::NotFound end end if collection_name == "servers" unless list_servers_detail.body['servers'].find { |server| server['id'] == parent_id } raise Fog::OpenStack::Compute::NotFound end end response = Excon::Response.new response.status = 204 response end
delete_metadata(_collection_name, _parent_id, _key)
click to toggle source
# File lib/fog/openstack/compute/requests/delete_metadata.rb, line 15 def delete_metadata(_collection_name, _parent_id, _key) response = Excon::Response.new response.status = 204 response end
delete_os_interface(server_id, port_id)
click to toggle source
# File lib/fog/openstack/compute/requests/delete_os_interface.rb, line 18 def delete_os_interface(server_id, port_id) true end
delete_security_group(security_group_id)
click to toggle source
# File lib/fog/openstack/compute/requests/delete_security_group.rb, line 15 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_security_group_rule(security_group_rule_id)
click to toggle source
# File lib/fog/openstack/compute/requests/delete_security_group_rule.rb, line 15 def delete_security_group_rule(security_group_rule_id) security_group = data[:security_groups].values.find { |sg| sg["rules"].find { |sgr| sgr["id"].to_s == security_group_rule_id.to_s } } security_group["rules"].reject! { |sgr| sgr["id"] == security_group_rule_id } 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/openstack/compute/requests/delete_server.rb, line 15 def delete_server(server_id) response = Excon::Response.new server = list_servers_detail.body['servers'].find { |srv| srv['id'] == server_id } if server 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 server_groups = data[:server_groups] if server_groups group_id, = server_groups.find { |_id, grp| grp[:members].include?(server_id) } server_groups[group_id][:members] -= [server_id] if group_id end end response else raise Fog::OpenStack::Compute::NotFound end end
delete_server_group(group_id)
click to toggle source
# File lib/fog/openstack/compute/requests/delete_server_group.rb, line 15 def delete_server_group(group_id) response = Excon::Response.new response.status = data[:server_groups].delete(group_id) ? 204 : 404 response.headers = { "Content-Type" => "text/html; charset=UTF-8", "Content-Length" => "0", "Date" => Date.new } response end
delete_service(_host, _binary, _optional_params = nil)
click to toggle source
# File lib/fog/openstack/compute/requests/delete_service.rb, line 19 def delete_service(_host, _binary, _optional_params = nil) response = Excon::Response.new response.status = 204 response.headers = { "Content-Type" => "text/html; charset=UTF-8", "Content-Length" => "0", "Date" => Date.new } response end
delete_snapshot(snapshot_id)
click to toggle source
# File lib/fog/openstack/compute/requests/delete_snapshot.rb, line 15 def delete_snapshot(snapshot_id) response = Excon::Response.new response.status = 204 if list_snapshots_detail.body['snapshots'].find { |snap| snap['id'] == snapshot_id } data[:snapshots].delete(snapshot_id) else raise Fog::OpenStack::Compute::NotFound end response end
delete_volume(volume_id)
click to toggle source
# File lib/fog/openstack/compute/requests/delete_volume.rb, line 15 def delete_volume(volume_id) response = Excon::Response.new if list_volumes.body['volumes'].map { |v| v['id'] }.include? volume_id data[:volumes].delete(volume_id) response.status = 204 response else raise Fog::OpenStack::Compute::NotFound end end
detach_volume(server_id, attachment_id)
click to toggle source
# File lib/fog/openstack/compute/requests/detach_volume.rb, line 15 def detach_volume(server_id, attachment_id) response = Excon::Response.new if data[:volumes][attachment_id] && data[:volumes][attachment_id]['attachments'].reject! { |attachment| attachment['serverId'] == server_id } data[:volumes][attachment_id]['status'] = 'available' response.status = 202 response else raise Fog::OpenStack::Compute::NotFound end end
disable_service(_host, _binary, _optional_params = nil)
click to toggle source
# File lib/fog/openstack/compute/requests/disable_service.rb, line 22 def disable_service(_host, _binary, _optional_params = nil) response = Excon::Response.new response.status = 200 response.body = { "service" => { "host" => "host1", "binary" => "nova-compute", "status" => "disabled" } } response end
disable_service_log_reason(_host, _binary, _disabled_reason, _optional_params = nil)
click to toggle source
# File lib/fog/openstack/compute/requests/disable_service_log_reason.rb, line 22 def disable_service_log_reason(_host, _binary, _disabled_reason, _optional_params = nil) response = Excon::Response.new response.status = 200 response.body = { "service" => { "host" => "host1", "binary" => "nova-compute", "status" => "disabled", "disabled_reason" => "test2" } } response end
disassociate_address(_server_id, _ip_address)
click to toggle source
# File lib/fog/openstack/compute/requests/disassociate_address.rb, line 12 def disassociate_address(_server_id, _ip_address) response = Excon::Response.new response.status = 202 response.headers = { "Content-Type" => "text/html, charset=UTF-8", "Content-Length" => "0", "Date" => Date.new } response end
enable_service(_host, _binary, _optional_params = nil)
click to toggle source
# File lib/fog/openstack/compute/requests/enable_service.rb, line 22 def enable_service(_host, _binary, _optional_params = nil) response = Excon::Response.new response.status = 200 response.body = { "service" => { "host" => "host1", "binary" => "nova-compute", "status" => "enabled" } } response end
evacuate_server(_server_id, _host, _on_shared_storage, _admin_password = nil)
click to toggle source
# File lib/fog/openstack/compute/requests/evacuate_server.rb, line 22 def evacuate_server(_server_id, _host, _on_shared_storage, _admin_password = nil) response = Excon::Response.new response.status = 202 response end
get_address(_address_id)
click to toggle source
# File lib/fog/openstack/compute/requests/get_address.rb, line 15 def get_address(_address_id) response = Excon::Response.new response.status = 200 response.headers = { "X-Compute-Request-Id" => "req-d4a21158-a86c-44a6-983a-e25645907f26", "Content-Type" => "application/json", "Content-Length" => "105", "Date" => Date.new } response.body = { "floating_ip" => { "instance_id" => nil, "ip" => "192.168.27.129", "fixed_ip" => nil, "id" => 1, "pool" => "nova" } } response end
get_aggregate(_uuid)
click to toggle source
# File lib/fog/openstack/compute/requests/get_aggregate.rb, line 15 def get_aggregate(_uuid) response = Excon::Response.new response.status = 2040 response.body = {'aggregate' => data[:aggregates].first.merge("hosts" => [])} response end
get_console_output(_server_id, _log_length)
click to toggle source
# File lib/fog/openstack/compute/requests/get_console_output.rb, line 16 def get_console_output(_server_id, _log_length) response = Excon::Response.new response.status = 200 response end
get_flavor_details(flavor_ref)
click to toggle source
# File lib/fog/openstack/compute/requests/get_flavor_details.rb, line 15 def get_flavor_details(flavor_ref) response = Excon::Response.new flavor = { '1' => {'id' => '1', 'name' => '256 server', 'ram' => 256, 'disk' => 10, 'swap' => '1', 'vcpus' => 1, 'OS-FLV-EXT-DATA:ephemeral' => 1, 'links' => []}, '2' => {'id' => '2', 'name' => '512 server', 'ram' => 512, 'disk' => 20, 'swap' => '1', 'vcpus' => 2, 'OS-FLV-EXT-DATA:ephemeral' => 1, 'links' => []}, '3' => {'id' => '3', 'name' => '1GB server', 'ram' => 1024, 'disk' => 40, 'swap' => '2', 'vcpus' => 2, 'OS-FLV-EXT-DATA:ephemeral' => 1, 'links' => []}, '4' => {'id' => '4', 'name' => '2GB server', 'ram' => 2048, 'disk' => 80, 'swap' => '4', 'vcpus' => 4, 'OS-FLV-EXT-DATA:ephemeral' => 1, 'links' => []}, '5' => {'id' => '5', 'name' => '4GB server', 'ram' => 4096, 'disk' => 160, 'swap' => '8', 'vcpus' => 8, 'OS-FLV-EXT-DATA:ephemeral' => 1, 'links' => []}, '6' => {'id' => '6', 'name' => '8GB server', 'ram' => 8192, 'disk' => 320, 'swap' => '16', 'vcpus' => 16, 'OS-FLV-EXT-DATA:ephemeral' => 1, 'links' => []}, '7' => {'id' => '7', 'name' => '15.5GB server', 'ram' => 15872, 'disk' => 620, 'swap' => '32', 'vcpus' => 32, 'OS-FLV-EXT-DATA:ephemeral' => 1, 'links' => []} }[flavor_ref] if flavor response.status = 200 response.body = { 'flavor' => flavor } response else raise Fog::OpenStack::Compute::NotFound end end
get_flavor_metadata(_flavor_ref)
click to toggle source
# File lib/fog/openstack/compute/requests/get_flavor_metadata.rb, line 15 def get_flavor_metadata(_flavor_ref) response = Excon::Response.new response.status = 200 response.body = {"extra_specs" => { "cpu_arch" => "x86_64" }} response end
get_host_details(_host)
click to toggle source
# File lib/fog/openstack/compute/requests/get_host_details.rb, line 15 def get_host_details(_host) response = Excon::Response.new response.status = 200 response.body = {"host" => [ {"resource" => { "project" => "(total)", "memory_mb" => 64427, "host" => "cn28.la-1-3.morphcloud.net", "cpu" => 12, "disk_gb" => 1608 }}, {"resource" => { "project" => "(used_now)", "memory_mb" => 1753, "host" => "cn28.la-1-3.morphcloud.net", "cpu" => 3, "disk_gb" => 33 }}, {"resource" => { "project" => "(used_max)", "memory_mb" => 7168, "host" => "cn28.la-1-3.morphcloud.net", "cpu" => 3, "disk_gb" => 45 }}, {"resource" => { "project" => "bf8301f5164f4790889a1bc2bfb16d99", "memory_mb" => 5120, "host" => "cn28.la-1-3.morphcloud.net", "cpu" => 2, "disk_gb" => 35 }}, {"resource" => { "project" => "3bb4d0301c5f47d5b4d96a361fcf96f4", "memory_mb" => 2048, "host" => "cn28.la-1-3.morphcloud.net", "cpu" => 1, "disk_gb" => 10 }} ]} response end
get_hypervisor(hypervisor_id)
click to toggle source
# File lib/fog/openstack/compute/requests/get_hypervisor.rb, line 15 def get_hypervisor(hypervisor_id) response = Excon::Response.new response.status = 200 response.body = { "hypervisor" => { "cpu_info" => { "arch" => "x86_64", "model" => "Nehalem", "vendor" => "Intel", "features" => [ "pge", "clflush" ], "topology" => { "cores" => 1, "threads" => 1, "sockets" => 4 } }, "current_workload" => 0, "status" => "enabled", "state" => "up", "disk_available_least" => 0, "host_ip" => "1.1.1.1", "free_disk_gb" => 1028, "free_ram_mb" => 7680, "hypervisor_hostname" => "fake-mini", "hypervisor_type" => "fake", "hypervisor_version" => 1000, "id" => hypervisor_id, "local_gb" => 1028, "local_gb_used" => 0, "memory_mb" => 8192, "memory_mb_used" => 512, "running_vms" => 0, "service" => { "host" => "host1", "id" => 7, "disabled_reason" => null }, "vcpus" => 1, "vcpus_used" => 0 } } response end
get_hypervisor_statistics(_tenant_id)
click to toggle source
# File lib/fog/openstack/compute/requests/get_hypervisor_statistics.rb, line 15 def get_hypervisor_statistics(_tenant_id) response = Excon::Response.new response.status = 200 response.body = { "hypervisor_statistics" => { "count" => 1, "current_workload" => 0, "disk_available_least" => 0, "free_disk_gb" => 1028, "free_ram_mb" => 7680, "local_gb" => 1028, "local_gb_used" => 0, "memory_mb" => 8192, "memory_mb_used" => 512, "running_vms" => 0, "vcpus" => 1, "vcpus_used" => 0 } } response end
get_image_details(image_id)
click to toggle source
# File lib/fog/openstack/compute/requests/get_image_details.rb, line 15 def get_image_details(image_id) response = Excon::Response.new image = list_images_detail.body['images'].find { |im| im['id'] == image_id } if image response.status = [200, 203][rand(2)] response.body = {'image' => image} response else raise Fog::OpenStack::Compute::NotFound end end
get_limits(_options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/get_limits.rb, line 18 def get_limits(_options = {}) rate_limits = [ {'regex' => '.*', 'limit' => [ {'next-available' => '2012-11-22T16:13:44Z', 'unit' => 'MINUTE', 'verb' => 'POST', 'remaining' => 9, 'value' => 10}, {'next-available' => '2012-11-23T00:46:14Z', 'unit' => 'MINUTE', 'verb' => 'PUT', 'remaining' => 10, 'value' => 10}, {'next-available' => '2012-11-22T16:14:30Z', 'unit' => 'MINUTE', 'verb' => 'DELETE', 'remaining' => 99, 'value' => 100} ], 'uri' => '*'}, {'regex' => '^/servers', 'limit' => [ {'next-available' => '2012-11-23T00:46:14Z', 'unit' => 'DAY', 'verb' => 'POST', 'remaining' => 50, 'value' => 50} ], 'uri' => '*/servers'}, {'regex' => '.*changes-since.*', 'limit' => [ {'next-available' => '2012-11-23T00:46:14Z', 'unit' => 'MINUTE', 'verb' => 'GET', 'remaining' => 3, 'value' => 3} ], 'uri' => '*changes-since*'} ] absolute_limits = { # Max 'maxServerMeta' => 128, 'maxTotalInstances' => 10, 'maxPersonality' => 5, 'maxImageMeta' => 128, 'maxPersonalitySize' => 10240, 'maxSecurityGroupRules' => 20, 'maxTotalKeypairs' => 100, 'maxSecurityGroups' => 10, 'maxTotalCores' => 20, 'maxTotalFloatingIps' => 10, 'maxTotalRAMSize' => 51200, # Used 'totalCoresUsed' => -1, 'totalRAMUsed' => -2048, 'totalInstancesUsed' => -1, 'totalSecurityGroupsUsed' => 0, 'totalFloatingIpsUsed' => 0 } Excon::Response.new( :status => 200, :body => { 'limits' => { 'rate' => rate_limits, 'absolute' => absolute_limits } } ) end
get_metadata(_collection_name, _parent_id, _key)
click to toggle source
# File lib/fog/openstack/compute/requests/get_metadata.rb, line 15 def get_metadata(_collection_name, _parent_id, _key) response = Excon::Response.new response.status = 200 response.body = {'meta' => {}} response end
get_os_interface(server_id,port_id)
click to toggle source
# File lib/fog/openstack/compute/requests/get_os_interface.rb, line 15 def get_os_interface(server_id,port_id) Excon::Response.new( :body => {'interfaceAttachment' => data[:os_interfaces].first}, :status => 200 ) end
get_quota(tenant_id)
click to toggle source
# File lib/fog/openstack/compute/requests/get_quota.rb, line 15 def get_quota(tenant_id) response = Excon::Response.new response.status = 200 response.body = { 'quota_set' => (data[:quota_updated] || data[:quota]).merge('id' => tenant_id) } response end
get_quota_defaults(tenant_id)
click to toggle source
# File lib/fog/openstack/compute/requests/get_quota_defaults.rb, line 15 def get_quota_defaults(tenant_id) response = Excon::Response.new response.status = 200 response.body = { 'quota_set' => data[:quota].merge('id' => tenant_id) } response end
get_security_group(security_group_id)
click to toggle source
# File lib/fog/openstack/compute/requests/get_security_group.rb, line 15 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::OpenStack::Compute::NotFound, "Security group #{security_group_id} does not exist" end response end
get_security_group_rule(security_group_rule_id)
click to toggle source
# File lib/fog/openstack/compute/requests/get_security_group_rule.rb, line 15 def get_security_group_rule(security_group_rule_id) security_group_rule = nil data[:security_groups].find { |_id, sg| security_group_rule = sg["rules"].find { |sgr| sgr["id"].to_s == security_group_rule_id.to_s } } response = Excon::Response.new if security_group_rule 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_rule" => security_group_rule } else raise Fog::OpenStack::Compute::NotFound, "Security group rule #{security_group_rule_id} does not exist" end response end
get_server_details(server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/get_server_details.rb, line 15 def get_server_details(server_id) response = Excon::Response.new server = list_servers_detail.body['servers'].find { |srv| srv['id'] == server_id } if server response.status = [200, 203][rand(2)] response.body = {'server' => server} response else raise Fog::OpenStack::Compute::NotFound end end
get_server_group(group_id)
click to toggle source
# File lib/fog/openstack/compute/requests/get_server_group.rb, line 15 def get_server_group(group_id) grp = data[:server_groups][group_id] response = Excon::Response.new response.status = 200 response.headers = { "Content-Type" => "text/html; charset=UTF-8", "Content-Length" => "0", "Date" => Date.new } response.body = {'server_group' => { 'id' => group_id, 'name' => grp[:name], 'policies' => grp[:policies], 'members' => grp[:members], 'metadata' => {}, 'project_id' => 'test-project', 'user_id' => 'test-user' }} response end
get_server_password(server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/get_server_password.rb, line 15 def get_server_password(server_id) response = Excon::Response.new server = list_servers_detail.body['servers'].find { |srv| srv['id'] == server_id } if server response.status = [200, 203][rand(2)] response.body = {'server' => server} response else raise Fog::OpenStack::Compute::NotFound end end
get_server_volumes(server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/get_server_volumes.rb, line 15 def get_server_volumes(server_id) response = Excon::Response.new response.status = 200 data = self.data[:volumes].values.select do |vol| vol['attachments'].find { |attachment| attachment["serverId"] == server_id } end response.body = {'volumeAttachments' => data.map! { |vol| vol['attachments'] }.flatten(1)} response end
get_snapshot_details(snapshot_id)
click to toggle source
# File lib/fog/openstack/compute/requests/get_snapshot_details.rb, line 15 def get_snapshot_details(snapshot_id) response = Excon::Response.new if snapshot = list_snapshots_detail.body['snapshots'].find do |snap| snap['id'] == snapshot_id end response.status = 200 response.body = {'snapshot' => snapshot} response else raise Fog::OpenStack::Compute::NotFound end end
get_usage(tenant_id, date_start, date_end)
click to toggle source
# File lib/fog/openstack/compute/requests/get_usage.rb, line 19 def get_usage(tenant_id, date_start, date_end) response = Excon::Response.new response.status = 200 response.body = {"tenant_usage" => {"total_memory_mb_usage" => 0.0, "total_vcpus_usage" => 0.0, "total_hours" => 0.0, "tenant_id" => tenant_id, "stop" => date_start, "start" => date_end, "total_local_gb_usage" => 0.0, "server_usages" => [{ "hours" => 0.0, "uptime" => 69180, "local_gb" => 0, "ended_at" => nil, "name" => "test server", "tenant_id" => tenant_id, "vcpus" => 1, "memory_mb" => 512, "state" => "active", "flavor" => "m1.tiny", "started_at" => "2012-03-05 09:11:44" }]}} response end
get_vnc_console(_server_id, _console_type)
click to toggle source
# File lib/fog/openstack/compute/requests/get_vnc_console.rb, line 35 def get_vnc_console(_server_id, _console_type) response = Excon::Response.new response.status = 200 response.body = { "console" => { "url" => "http://192.168.27.100:6080/vnc_auto.html?token=c3606020-d1b7-445d-a88f-f7af48dd6a20", "type" => "novnc" } } response end
get_volume_details(volume_id)
click to toggle source
# File lib/fog/openstack/compute/requests/get_volume_details.rb, line 15 def get_volume_details(volume_id) response = Excon::Response.new if data = self.data[:volumes][volume_id] if data['status'] == 'creating' \ && Time.now - Time.parse(data['createdAt']) >= Fog::Mock.delay data['status'] = 'available' end response.status = 200 response.body = {'volume' => data} response else raise Fog::OpenStack::Compute::NotFound end end
list_address_pools()
click to toggle source
# File lib/fog/openstack/compute/requests/list_address_pools.rb, line 15 def list_address_pools response = Excon::Response.new response.status = 200 response.body = { 'floating_ip_pools' => [ {'name' => 'nova'} ] } response end
list_addresses(server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/list_addresses.rb, line 15 def list_addresses(server_id) response = Excon::Response.new server = list_servers_detail.body['servers'].find { |srv| srv['id'] == server_id } if server response.status = [200, 203][rand(2)] response.body = {'addresses' => server['addresses']} response else raise Fog::OpenStack::Compute::NotFound end end
list_aggregates(_options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_aggregates.rb, line 16 def list_aggregates(_options = {}) response = Excon::Response.new response.status = 200 response.body = {'aggregates' => [{ "availability_zone" => "nova", "created_at" => "2012-11-16T06:22:23.032493", "deleted" => false, "deleted_at" => nil, "metadata" => { "availability_zone" => "nova" }, "id" => 1, "name" => "name", "updated_at" => nil }]} response end
list_all_addresses(_options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_all_addresses.rb, line 16 def list_all_addresses(_options = {}) response = Excon::Response.new response.status = 200 response.headers = { "X-Compute-Request-Id" => "req-d4a21158-a86c-44a6-983a-e25645907f26", "Content-Type" => "application/json", "Content-Length" => "378", "Date" => Date.new } response.body = { "floating_ips" => [ { "instance_id" => nil, "ip" => "192.168.27.129", "fixed_ip" => nil, "id" => 1, "pool" => "nova" }, { "instance_id" => nil, "ip" => "192.168.27.130", "fixed_ip" => nil, "id" => 2, "pool" => "nova" }, { "instance_id" => nil, "ip" => "192.168.27.131", "fixed_ip" => nil, "id" => 3, "pool" => "nova" }, { "instance_id" => nil, "ip" => "192.168.27.132", "fixed_ip" => nil, "id" => 4, "pool" => "nova" } ] } response end
list_endpoints()
click to toggle source
# File lib/fog/openstack/compute/requests/list_availability_zones.rb, line 18 def list_endpoints end
list_flavors(_options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_flavors.rb, line 16 def list_flavors(_options = {}) response = Excon::Response.new response.status = 200 response.body = { 'flavors' => [ {'name' => '256 server', 'id' => '1', 'links' => ['https://itdoesntmatterwhatshere.heh']}, {'name' => '512 server', 'id' => '2', 'links' => ['https://itdoesntmatterwhatshere.heh']}, {'name' => '1GB server', 'id' => '3', 'links' => ['https://itdoesntmatterwhatshere.heh']}, {'name' => '2GB server', 'id' => '4', 'links' => ['https://itdoesntmatterwhatshere.heh']}, {'name' => '4GB server', 'id' => '5', 'links' => ['https://itdoesntmatterwhatshere.heh']}, {'name' => '8GB server', 'id' => '6', 'links' => ['https://itdoesntmatterwhatshere.heh']}, {'name' => '15.5GB server', 'id' => '7', 'links' => ['https://itdoesntmatterwhatshere.heh']} ] } response end
list_flavors_detail(_options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_flavors_detail.rb, line 16 def list_flavors_detail(_options = {}) response = Excon::Response.new response.status = 200 response.body = { 'flavors' => [ {'id' => '1', 'name' => '256 server', 'ram' => 256, 'disk' => 10, 'swap' => '1', 'vcpus' => 1, 'OS-FLV-EXT-DATA:ephemeral' => 1, 'links' => []}, {'id' => '2', 'name' => '512 server', 'ram' => 512, 'disk' => 20, 'swap' => '1', 'vcpus' => 2, 'OS-FLV-EXT-DATA:ephemeral' => 1, 'links' => []}, {'id' => '3', 'name' => '1GB server', 'ram' => 1024, 'disk' => 40, 'swap' => '2', 'vcpus' => 2, 'OS-FLV-EXT-DATA:ephemeral' => 1, 'links' => []}, {'id' => '4', 'name' => '2GB server', 'ram' => 2048, 'disk' => 80, 'swap' => '4', 'vcpus' => 4, 'OS-FLV-EXT-DATA:ephemeral' => 1, 'links' => []}, {'id' => '5', 'name' => '4GB server', 'ram' => 4096, 'disk' => 160, 'swap' => '8', 'vcpus' => 8, 'OS-FLV-EXT-DATA:ephemeral' => 1, 'links' => []}, {'id' => '6', 'name' => '8GB server', 'ram' => 8192, 'disk' => 320, 'swap' => '16', 'vcpus' => 16, 'OS-FLV-EXT-DATA:ephemeral' => 1, 'links' => []}, {'id' => '7', 'name' => '15.5GB server', 'ram' => 15872, 'disk' => 620, 'swap' => '32', 'vcpus' => 32, 'OS-FLV-EXT-DATA:ephemeral' => 1, 'links' => []} ] } response end
list_hosts(_options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_hosts.rb, line 16 def list_hosts(_options = {}) response = Excon::Response.new response.status = 200 response.body = {"hosts" => [ {"host_name" => "host.test.net", "service" => "compute", "zone" => "az1"} ]} response end
list_hypervisor_servers(hypervisor_id, _options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_hypervisor_servers.rb, line 16 def list_hypervisor_servers(hypervisor_id, _options = {}) response = Excon::Response.new response.status = 200 response.body = {'hypervisors' => [ { "hypervisor_hostname" => "fake-mini", "id" => hypervisor_id, "state" => "up", "status" => "enabled", "servers" => [ { "name" => "test_server1", "uuid" => "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" }, { "name" => "test_server2", "uuid" => "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb" } ] } ]} response end
list_hypervisors(_options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_hypervisors.rb, line 16 def list_hypervisors(_options = {}) response = Excon::Response.new response.status = 200 response.body = {'hypervisors' => [ {"hypervisor_hostname" => "fake-mini", "id" => 2, "state" => "up", "status" => "enabled"} ]} response end
list_hypervisors_detail(_options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_hypervisors_detail.rb, line 16 def list_hypervisors_detail(_options = {}) response = Excon::Response.new response.status = 200 response.body = { "hypervisors" => [{ "cpu_info" => { "arch" => "x86_64", "model" => "Nehalem", "vendor" => "Intel", "features" => [ "pge", "clflush" ], "topology" => { "cores" => 1, "threads" => 1, "sockets" => 4 } }, "current_workload" => 0, "status" => "enabled", "state" => "up", "disk_available_least" => 0, "host_ip" => "1.1.1.1", "free_disk_gb" => 1028, "free_ram_mb" => 7680, "hypervisor_hostname" => "fake-mini", "hypervisor_type" => "fake", "hypervisor_version" => 1000, "id" => 2, "local_gb" => 1028, "local_gb_used" => 0, "memory_mb" => 8192, "memory_mb_used" => 512, "running_vms" => 0, "service" => { "host" => "host1", "id" => 7, "disabled_reason" => null }, "vcpus" => 1, "vcpus_used" => 0 }], "hypervisors_links" => [ { "href" => "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/hypervisors/detail?limit=1&marker=2", "rel" => "next" } ] } response end
list_images()
click to toggle source
# File lib/fog/openstack/compute/requests/list_images.rb, line 15 def list_images response = Excon::Response.new data = list_images_detail.body['images'] images = [] data.each do |image| images << image.reject { |key, _value| !['id', 'name', 'links'].include?(key) } end response.status = [200, 203][rand(2)] response.body = {'images' => images} response end
list_images_detail(_filters = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_images_detail.rb, line 16 def list_images_detail(_filters = {}) response = Excon::Response.new images = data[:images].values images.each do |image| case image['status'] when 'SAVING' if Time.now - data[:last_modified][:images][image['id']] >= Fog::Mock.delay image['status'] = 'ACTIVE' end end end response.status = [200, 203][rand(2)] response.body = {'images' => images.map { |image| image.reject { |key, _value| !['id', 'name', 'links', 'minRam', 'minDisk', 'metadata', 'status', 'updated'].include?(key) } }} response end
list_key_pairs(_options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_key_pairs.rb, line 16 def list_key_pairs(_options = {}) response = Excon::Response.new response.status = 200 response.headers = { "X-Compute-Request-Id" => "req-c373a42c-2825-4e60-8d34-99416ea850be", "Content-Type" => "application/json", "Content-Length" => "360", "Date" => Date.new } response.body = { "keypairs" => [{ "keypair" => { "public_key" => "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDCdAZLjln1tJbLVVkNHjWFSoKen2nZbk39ZfqhZJOMdeFdz02GWBS4rcuHboeGg/gozKRwsLu4N6NLPlYtbK/NapJIvgO/djBp+FG1QZNtLPsx7j4hVJac3yISGms+Xtu4cEv6j5sFDzAgTQbWz0Z1+9qOq9ngdaoW+YClfQ== vagrant@nova\n", "name" => "test_key", "fingerprint" => "97:86:f4:15:68:0c:7b:a7:e5:8f:f0:bd:1f:27:65:ad" } }] } response end
list_metadata(_collection_name, _parent_id)
click to toggle source
# File lib/fog/openstack/compute/requests/list_metadata.rb, line 15 def list_metadata(_collection_name, _parent_id) response = Excon::Response.new response.status = 200 response.body = {} response end
list_os_interfaces(server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/list_os_interfaces.rb, line 15 def list_os_interfaces(server_id) Excon::Response.new( :body => {'interfaceAttachments' => data[:os_interfaces]}, :status => 200 ) end
list_private_addresses(server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/list_private_addresses.rb, line 15 def list_private_addresses(server_id) response = Excon::Response.new server = list_servers_detail.body['servers'].find { |srv| srv['id'] == server_id } if server response.status = [200, 203][rand(2)] response.body = {'private' => server['addresses']['private']} response else raise Fog::OpenStack::Compute::NotFound end end
list_public_addresses(server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/list_public_addresses.rb, line 15 def list_public_addresses(server_id) response = Excon::Response.new server = list_servers_detail.body['servers'].find { |srv| srv['id'] == server_id } if server response.status = [200, 203][rand(2)] response.body = {'public' => server['addresses']['public']} response else raise Fog::OpenStack::Compute::NotFound end end
list_security_groups(options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_security_groups.rb, line 32 def list_security_groups(options = {}) server_id = if options.kind_of?(Hash) options.delete(:server_id) else options end 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_server_groups(_options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_server_groups.rb, line 16 def list_server_groups(_options = {}) groups = data[:server_groups].map do |id, group| group.merge('id' => id, 'project_id' => 'test-project', 'user_id' => 'test-user') end Excon::Response.new( :body => {'server_groups' => groups}, :status => 200 ) end
list_servers(_options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_servers.rb, line 22 def list_servers(_options = {}) response = Excon::Response.new data = list_servers_detail.body['servers'] servers = [] data.each do |server| servers << server.reject { |key, _value| !['id', 'name', 'links'].include?(key) } end response.status = [200, 203][rand(2)] response.body = {'servers' => servers} response end
list_servers_detail(_filters = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_servers_detail.rb, line 23 def list_servers_detail(_filters = {}) response = Excon::Response.new servers = data[:servers].values servers.each do |server| case server['status'] when 'BUILD' if Time.now - data[:last_modified][:servers][server['id']] > Fog::Mock.delay * 2 server['status'] = 'ACTIVE' end end end response.status = [200, 203][rand(2)] response.body = {'servers' => servers} response end
list_services(_parameters = nil)
click to toggle source
# File lib/fog/openstack/compute/requests/list_services.rb, line 16 def list_services(_parameters = nil) response = Excon::Response.new response.status = 200 response.body = { "services" => [{ "id" => 1, "binary" => "nova-scheduler", "host" => "host1", "state" => "up", "status" => "disabled", "updated_at" => "2012-10-29T13:42:02.000000", "zone" => "internal", "disabled_reason" => "test2" }, { "id" => 2, "binary" => "nova-compute", "host" => "host1", "state" => "up", "status" => "disabled", "updated_at" => "2012-10-29T13:42:05.000000", "zone" => "nova", "disabled_reason" => "test2" }, { "id" => 3, "binary" => "nova-scheduler", "host" => "host2", "state" => "down", "status" => "enabled", "updated_at" => "2012-09-19T06:55:34.000000", "zone" => "internal", "disabled_reason" => "nil" }, { "id" => 4, "binary" => "nova-compute", "host" => "host2", "state" => "down", "status" => "disabled", "updated_at" => "2012-09-18T08:03:38.000000", "zone" => "nova", "disabled_reason" => "test2" }] } response end
list_snapshots(_options = true)
click to toggle source
# File lib/fog/openstack/compute/requests/list_snapshots.rb, line 30 def list_snapshots(_options = true) response = Excon::Response.new response.status = 200 snapshots = data[:snapshots].values response.body = {'snapshots' => snapshots} response end
list_snapshots_detail(_options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_snapshots_detail.rb, line 16 def list_snapshots_detail(_options = {}) response = Excon::Response.new response.status = 200 snapshots = data[:snapshots].values response.body = {'snapshots' => snapshots} response end
list_tenants_with_flavor_access(flavor_ref)
click to toggle source
# File lib/fog/openstack/compute/requests/list_tenants_with_flavor_access.rb, line 15 def list_tenants_with_flavor_access(flavor_ref) response = Excon::Response.new response.status = 200 response.body = { "flavor_access" => [{"tenant_id" => Fog::Mock.random_hex(33), "flavor_id" => flavor_ref.to_s}] } response end
list_usages(_date_start = nil, _date_end = nil, _detailed = false)
click to toggle source
# File lib/fog/openstack/compute/requests/list_usages.rb, line 21 def list_usages(_date_start = nil, _date_end = nil, _detailed = false) response = Excon::Response.new response.status = 200 response.body = {"tenant_usages" => [{ "total_memory_mb_usage" => 0.00036124444444444445, "total_vcpus_usage" => 7.055555555555556e-07, "start" => "2012-03-06 05:05:56.349001", "tenant_id" => "b97c8abba0c44a0987c63b858a4823e5", "stop" => "2012-03-06 05:05:56.349255", "total_hours" => 7.055555555555556e-07, "total_local_gb_usage" => 0.0 }]} response end
list_volume_attachments(server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/list_volume_attachments.rb, line 15 def list_volume_attachments(server_id) Excon::Response.new( :body => { :volumeAttachments => [{ :device => '/dev/vdd', :serverId => server_id, :id => '24011ca7-9937-41e4-b19b-141307d1b656', :volumeId => '24011ca7-9937-41e4-b19b-141307d1b656' }] }, :status => 200 ) end
list_volumes(_options = true)
click to toggle source
# File lib/fog/openstack/compute/requests/list_volumes.rb, line 30 def list_volumes(_options = true) Excon::Response.new( :body => {'volumes' => data[:volumes].values}, :status => 200 ) end
list_volumes_detail(_options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_volumes_detail.rb, line 16 def list_volumes_detail(_options = {}) Excon::Response.new( :body => {'volumes' => data[:volumes].values}, :status => 200 ) end
list_zones(_options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_zones.rb, line 16 def list_zones(_options = {}) Excon::Response.new( :body => {"availabilityZoneInfo" => [ { "zoneState" => { "available" => true }, "hosts" => nil, "zoneName" => "nova" } ]}, :status => 200 ) end
list_zones_detailed(_options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/list_zones_detailed.rb, line 16 def list_zones_detailed(_options = {}) Excon::Response.new( :body => { "availabilityZoneInfo" => [ { "zoneState" => { "available" => true }, "hosts" => { "instack.localdomain" => { "nova-conductor" => { "available" => true, "active" => true, "updated_at" => "2015-07-22T07:40:08.000000" }, "nova-scheduler" => { "available" => true, "active" => true, "updated_at" => "2015-07-22T07:40:04.000000" }, "nova-consoleauth" => { "available" => true, "active" => true, "updated_at" => "2015-07-22T07:40:09.000000" } } }, "zoneName" => "internal" }, { "zoneState" => { "available" => true }, "hosts" => { "instack.localdomain" => { "nova-compute" => { "available" => true, "active" => true, "updated_at" => "2015-07-22T07:40:04.000000" } } }, "zoneName" => "nova" } ] }, :status => 200 ) end
live_migrate_server(_server_id, _host, _block_migration, _disk_over_commit)
click to toggle source
# File lib/fog/openstack/compute/requests/live_migrate_server.rb, line 18 def live_migrate_server(_server_id, _host, _block_migration, _disk_over_commit) response = Excon::Response.new response.status = 202 response end
migrate_server(_server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/migrate_server.rb, line 12 def migrate_server(_server_id) response = Excon::Response.new response.status = 202 response end
pause_server(_server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/pause_server.rb, line 18 def pause_server(_server_id) true end
reboot_server(_server_id, _type = 'SOFT')
click to toggle source
# File lib/fog/openstack/compute/requests/reboot_server.rb, line 12 def reboot_server(_server_id, _type = 'SOFT') response = Excon::Response.new response.status = 202 response end
rebuild_server(server_id, _image_ref, _name, _admin_pass = nil, _metadata = nil, _personality = nil)
click to toggle source
# File lib/fog/openstack/compute/requests/rebuild_server.rb, line 26 def rebuild_server(server_id, _image_ref, _name, _admin_pass = nil, _metadata = nil, _personality = nil) response = get_server_details(server_id) response.body['server']['status'] = "REBUILD" response end
release_address(_address_id)
click to toggle source
# File lib/fog/openstack/compute/requests/release_address.rb, line 15 def release_address(_address_id) 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
remote_consoles(_server_id, _protocol, _type)
click to toggle source
# File lib/fog/openstack/compute/requests/remote_consoles.rb, line 39 def remote_consoles(_server_id, _protocol, _type) response = Excon::Response.new response.status = 200 response.body = { "remote_console" => { "url" => "http://192.168.27.100:6080/vnc_auto.html?token=e629bcbf-6f9e-4276-9ea1-d6eb0e618da5", "type" => "novnc", "protocol" => "vnc" } } response end
remove_aggregate_host(_uuid, _host_uuid)
click to toggle source
# File lib/fog/openstack/compute/requests/remove_aggregate_host.rb, line 17 def remove_aggregate_host(_uuid, _host_uuid) response = Excon::Response.new response.status = 200 response.headers = { "Content-Type" => "text/html; charset=UTF-8", "Content-Length" => "0", "Date" => Date.new } response end
remove_fixed_ip(_server_id, _address)
click to toggle source
# File lib/fog/openstack/compute/requests/remove_fixed_ip.rb, line 23 def remove_fixed_ip(_server_id, _address) true end
remove_flavor_access(_flavor_ref, _tenant_id)
click to toggle source
# File lib/fog/openstack/compute/requests/remove_flavor_access.rb, line 18 def remove_flavor_access(_flavor_ref, _tenant_id) response = Excon::Response.new response.status = 200 response.body = { "flavor_access" => [] } response end
remove_security_group(_server_id, _group_name)
click to toggle source
# File lib/fog/openstack/compute/requests/remove_security_group.rb, line 12 def remove_security_group(_server_id, _group_name) response = Excon::Response.new response.status = 200 response end
rescue_server(_server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/rescue_server.rb, line 18 def rescue_server(_server_id) true end
reset_data()
click to toggle source
# File lib/fog/openstack/compute.rb, line 368 def reset_data self.class.data.delete("#{@openstack_username}-#{@current_tenant}") end
reset_server_state(server_id, status)
click to toggle source
# File lib/fog/openstack/compute/requests/reset_server_state.rb, line 12 def reset_server_state(server_id, status) response = get_server_details(server_id) response.body['server']['status'] = status.upcase response end
resize_server(_server_id, _flavor_ref)
click to toggle source
# File lib/fog/openstack/compute/requests/resize_server.rb, line 12 def resize_server(_server_id, _flavor_ref) response = Excon::Response.new response.status = 202 response end
resume_server(_server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/resume_server.rb, line 18 def resume_server(_server_id) true end
revert_resize_server(server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/revert_resize_server.rb, line 12 def revert_resize_server(server_id) response = Excon::Response.new response.status = 202 data[:servers][server_id]['flavorId'] = data[:servers][server_id]['old_flavorId'] data[:servers][server_id].delete('old_flavorId') data[:last_modified][:servers][server_id] = Time.now data[:servers][server_id]['status'] = 'ACTIVE' response end
server_actions(server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/server_actions.rb, line 21 def server_actions(server_id) response = Excon::Response.new response.status = 200 response.body = [{ 'instance_uuid' => server_id, 'user_id' => '7067d67a2b23435ca2366588680b66c3', 'start_time' => Time.now.iso8601, 'request_id' => "req-#{server_id}", 'action' => 'stop', 'message' => nil, 'project_id' => '9d5d0b877cf449fdae078659cfa12e86' }] response end
server_diagnostics(server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/server_diagnostics.rb, line 20 def server_diagnostics(server_id) end
set_metadata(collection_name, parent_id, metadata = {})
click to toggle source
# File lib/fog/openstack/compute/requests/set_metadata.rb, line 16 def set_metadata(collection_name, parent_id, metadata = {}) if collection_name == "images" unless list_images_detail.body['images'].find { |image| image['id'] == parent_id } raise Fog::OpenStack::Compute::NotFound end end if collection_name == "servers" unless list_servers_detail.body['servers'].find { |server| server['id'] == parent_id } raise Fog::OpenStack::Compute::NotFound end end response = Excon::Response.new response.body = {"metadata" => metadata} response.status = 200 response end
set_tenant(_tenant)
click to toggle source
# File lib/fog/openstack/compute/requests/set_tenant.rb, line 13 def set_tenant(_tenant) true end
shelve_offload_server(_server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/shelve_offload_server.rb, line 18 def shelve_offload_server(_server_id) true end
shelve_server(_server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/shelve_server.rb, line 18 def shelve_server(_server_id) true end
start_server(_server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/start_server.rb, line 18 def start_server(_server_id) true end
stop_server(_server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/stop_server.rb, line 18 def stop_server(_server_id) true end
suspend_server(_server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/suspend_server.rb, line 18 def suspend_server(_server_id) true end
unpause_server(_server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/unpause_server.rb, line 18 def unpause_server(_server_id) true end
unshelve_server(_server_id)
click to toggle source
# File lib/fog/openstack/compute/requests/unshelve_server.rb, line 18 def unshelve_server(_server_id) true end
update_aggregate(_uuid, _options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/update_aggregate.rb, line 23 def update_aggregate(_uuid, _options = {}) response = Excon::Response.new response.status = 200 response.headers = { "Content-Type" => "text/html; charset=UTF-8", "Content-Length" => "0", "Date" => Date.new } response.body = {'aggregate' => data[:aggregates].first} response end
update_aggregate_metadata(_uuid, _metadata = {})
click to toggle source
# File lib/fog/openstack/compute/requests/update_aggregate_metadata.rb, line 17 def update_aggregate_metadata(_uuid, _metadata = {}) response = Excon::Response.new response.status = 200 response.headers = { "Content-Type" => "text/html; charset=UTF-8", "Content-Length" => "0", "Date" => Date.new } response end
update_flavor_metadata(_flavor_ref, key, value)
click to toggle source
# File lib/fog/openstack/compute/requests/update_flavor_metadata.rb, line 18 def update_flavor_metadata(_flavor_ref, key, value) response = Excon::Response.new response.status = 200 response.headers = { "X-Compute-Request-Id" => "req-fdc6f99e-55a2-4ab1-8904-0892753828cf", "Content-Type" => "application/json", "Content-Length" => "356", "Date" => Date.new } response.body = {key => value} response end
update_meta(collection_name, parent_id, key, value)
click to toggle source
# File lib/fog/openstack/compute/requests/update_meta.rb, line 16 def update_meta(collection_name, parent_id, key, value) if collection_name == "images" unless list_images_detail.body['images'].find { |image| image['id'] == parent_id } raise Fog::OpenStack::Compute::NotFound end end if collection_name == "servers" unless list_servers_detail.body['servers'].find { |server| server['id'] == parent_id } raise Fog::OpenStack::Compute::NotFound end end # FIXME: join w/ existing metadata here response = Excon::Response.new response.body = {"metadata" => {key => value}} response.status = 200 response end
update_metadata(collection_name, parent_id, metadata = {})
click to toggle source
# File lib/fog/openstack/compute/requests/update_metadata.rb, line 16 def update_metadata(collection_name, parent_id, metadata = {}) if collection_name == "images" unless list_images_detail.body['images'].find { |image| image['id'] == parent_id } raise Fog::OpenStack::Compute::NotFound end end if collection_name == "servers" unless list_servers_detail.body['servers'].find { |server| server['id'] == parent_id } raise Fog::OpenStack::Compute::NotFound end end # FIXME: join w/ existing metadata here response = Excon::Response.new response.body = {"metadata" => metadata} response.status = 200 response end
update_quota(_tenant_id, options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/update_quota.rb, line 16 def update_quota(_tenant_id, options = {}) data[:quota_updated] = data[:quota].merge options response = Excon::Response.new response.status = 200 response.body = {'quota_set' => data[:quota_updated]} response end
update_server(server_id, options = {})
click to toggle source
# File lib/fog/openstack/compute/requests/update_server.rb, line 16 def update_server(server_id, options = {}) response = Excon::Response.new server = list_servers_detail.body['servers'].find { |srv| srv['id'] == server_id } if server if options['name'] server['name'] = options['name'] end response.status = 200 response else raise Fog::OpenStack::Compute::NotFound end end