# File lib/fog/hp/compute.rb, line 130 def self.data @data ||= Hash.new do |hash, key| hash[key] = { :last_modified => { :images => {}, :key_pairs => {}, :security_groups => {}, :servers => {}, :addresses => {} }, :images => {}, :key_pairs => {}, :security_groups => {}, :servers => {}, :addresses => {} } end end
# File lib/fog/hp/compute.rb, line 153 def initialize(options={}) # deprecate hp_account_id if options[:hp_account_id] Fog::Logger.deprecation(":hp_account_id is deprecated, please use :hp_access_key instead.") @hp_access_key = options.delete(:hp_account_id) end @hp_access_key = options[:hp_access_key] unless @hp_access_key raise ArgumentError.new("Missing required arguments: hp_access_key. :hp_account_id is deprecated, please use :hp_access_key instead.") end end
# File lib/fog/hp/requests/compute/allocate_address.rb, line 30 def allocate_address response = Excon::Response.new response.status = 200 data = { 'instance_id' => Fog::HP::Mock.instance_id.to_i, 'ip' => Fog::HP::Mock.ip_address, 'fixed_ip' => Fog::HP::Mock.ip_address, 'id' => Fog::Mock.random_numbers(3).to_i } self.data[:last_modified][:addresses][data['id']] = Time.now self.data[:addresses][data['id']] = data response.body = { 'floating_ip' => data } response end
# File lib/fog/hp/requests/compute/associate_address.rb, line 21 def associate_address(server_id, ip_address) response = Excon::Response.new if server = self.data[:servers][server_id] data = {"version"=>4, "addr"=>"#{ip_address}"} if server['addresses']['private'] server['addresses']['private'] << data else server['addresses']['private'] = data end response.status = 202 else #raise Fog::Compute::HP::NotFound response.status = 500 raise(Excon::Errors.status_error({:expects => 200}, response)) end response end
# File lib/fog/hp/requests/compute/change_password_server.rb, line 15 def change_password_server(server_id, admin_password) response = Excon::Response.new if list_servers_detail.body['servers'].detect {|_| _['id'] == server_id} if admin_password response.body = { 'changePassword' => { 'adminPass' => admin_password }} end response.status = 202 else #raise Fog::Compute::HP::NotFound response.status = 500 raise(Excon::Errors.status_error({:expects => 200}, response)) end response end
# File lib/fog/hp/requests/compute/confirm_resized_server.rb, line 20 def confirm_resized_server(server_id) response = Excon::Response.new response.status = 204 self.data[:servers][server_id].delete('old_flavorId') self.data[:last_modified][:servers][server_id] = Time.now self.data[:servers][server_id]['status'] = 'ACTIVE' response end
# File lib/fog/hp/requests/compute/create_image.rb, line 31 def create_image(server_id, name, metadata = {}) response = Excon::Response.new response.status = 202 image_id = Fog::Mock.random_numbers(6).to_s data = { 'id' => image_id, 'server' => {"id"=>server_id, "links"=>[{"href"=>"http://nova1:8774/v1.1/servers/#{server_id}", "rel"=>"bookmark"}]}, 'links' => [{"href"=>"http://nova1:8774/v1.1/tenantid/images/#{image_id}", "rel"=>"self"}, {"href"=>"http://nova1:8774/tenantid/images/#{image_id}", "rel"=>"bookmark"}], 'metadata' => metadata || {}, 'name' => name || "image_#{rand(999)}", 'progress' => 0, 'status' => 'SAVING', 'updated' => "2012-01-01T13:32:20Z", 'created' => "2012-01-01T13:32:20Z" } self.data[:last_modified][:images][data['id']] = Time.now self.data[:images][data['id']] = data response.headers = {'Content-Length' => '0', 'Content-Type' => 'text/html; charset=UTF-8', 'Date' => Time.now, 'Location' => "http://nova1:8774/v1.1/images/#{image_id}"} response.body = "" # { 'image' => data } no data is sent response end
# File lib/fog/hp/requests/compute/create_key_pair.rb, line 51 def create_key_pair(key_name, public_key = nil) response = Excon::Response.new unless self.data[:key_pairs][key_name] response.status = 200 private_key, new_public_key = Fog::HP::Mock.key_material new_public_key = public_key if public_key # if public key was passed in data = { 'public_key' => new_public_key, 'fingerprint' => Fog::HP::Mock.key_fingerprint, 'name' => key_name } self.data[:last_modified][:key_pairs][key_name] = Time.now self.data[:key_pairs][key_name] = { 'keypair' => data } if public_key response.body = { 'keypair' => data.merge({'user_id' => Fog::HP::Mock.user_id,}) } else response.body = { 'keypair' => data.merge({'private_key' => private_key, 'user_id' => Fog::HP::Mock.user_id,}) } end else #raise Fog::Compute::HP::NotFound response.status = 400 raise(Excon::Errors.status_error({:expects => 200}, response)) end response end
# File lib/fog/hp/requests/compute/create_persistent_server.rb, line 121 def create_persistent_server(name, flavor_id, block_device_mapping = [], options = {}) response = Excon::Response.new if block_device_mapping && !block_device_mapping.empty? if options['security_groups'] sec_group_name = options['security_groups'][0] else sec_group_name = "default" end data = { 'addresses' => { "private"=>[{"version"=>4, "addr"=>Fog::HP::Mock.ip_address}] }, 'flavor' => {"id"=>"#{flavor_id}", "links"=>[{"href"=>"http://nova1:8774/admin/flavors/#{flavor_id}", "rel"=>"bookmark"}]}, 'id' => Fog::Mock.random_numbers(6).to_i, '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-01-01T13:32:20Z", 'updated' => "2012-01-01T13:32:20Z", 'user_id' => Fog::HP::Mock.user_id.to_s, 'tenant_id' => Fog::HP::Mock.user_id.to_s, 'uuid' => "95253a45-9ead-43c6-90b3-65da2ef048b3", 'config_drive' => "", 'security_groups' => [{"name"=>"#{sec_group_name}", "links"=>[{"href"=>"http://nova1:8774/v1.1/admin//os-security-groups/111", "rel"=>"bookmark"}], "id"=>111}], 'key_name' => options['key_name'] || "" } self.data[:last_modified][:servers][data['id']] = Time.now self.data[:servers][data['id']] = data response.body = { 'server' => data.merge({'adminPass' => 'password'}) } response.status = 200 response else response.status = 400 raise(Excon::Errors::BadRequest, "No boot volume or boot image specified") end end
# File lib/fog/hp/requests/compute/create_security_group.rb, line 52 def create_security_group(name, description) # all spaces are removed name = name.strip description = description.strip response = Excon::Response.new if self.data[:security_groups].detect {|_,v| v['name'] == name} response.status = 400 response.body = { "badRequest" => {"message" => "Security group #{name} already exists", "code" => 400}} raise(Excon::Errors.status_error({:expects => 200}, response)) else response.status = 200 data = { 'rules' => [], 'id' => Fog::Mock.random_numbers(3).to_i, 'tenant_id' => Fog::HP::Mock.user_id.to_s, 'name' => name, 'description' => description } self.data[:last_modified][:security_groups][data['id']] = Time.now self.data[:security_groups][data['id']] = data response.body = { 'security_group' => data } end response end
# File lib/fog/hp/requests/compute/create_security_group_rule.rb, line 45 def create_security_group_rule(parent_group_id, ip_protocol, from_port, to_port, cidr, group_id=nil) response = Excon::Response.new group = self.data[:security_groups][parent_group_id] if group group['rules'] ||= [] response.status = 200 data = { 'from_port' => from_port.to_i, 'group' => {}, 'ip_protocol' => ip_protocol, 'to_port' => to_port.to_i, 'parent_group_id' => parent_group_id, 'ip_range' => { 'cidr' => cidr }, 'id' => Fog::Mock.random_numbers(3).to_i } group['rules'][data['id']] = data response.body = { 'security_group_rule' => data } response else raise Fog::Compute::HP::NotFound end end
# File lib/fog/hp/requests/compute/create_server.rb, line 106 def create_server(name, flavor_id, image_id, options = {}) response = Excon::Response.new response.status = 202 if options['security_groups'] sec_group_name = options['security_groups'][0] else sec_group_name = "default" end data = { 'addresses' => { "private"=>[{"version"=>4, "addr"=>Fog::HP::Mock.ip_address}] }, 'flavor' => {"id"=>"#{flavor_id}", "links"=>[{"href"=>"http://nova1:8774/admin/flavors/#{flavor_id}", "rel"=>"bookmark"}]}, 'id' => Fog::Mock.random_numbers(6).to_i, 'image' => {"id"=>"#{image_id}", "links"=>[{"href"=>"http://nova1:8774/admin/images/#{image_id}", "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-01-01T13:32:20Z", 'updated' => "2012-01-01T13:32:20Z", 'user_id' => Fog::HP::Mock.user_id.to_s, 'tenant_id' => Fog::HP::Mock.user_id.to_s, 'uuid' => "95253a45-9ead-43c6-90b3-65da2ef048b3", 'config_drive' => "", 'security_groups' => [{"name"=>"#{sec_group_name}", "links"=>[{"href"=>"http://nova1:8774/v1.1/admin//os-security-groups/111", "rel"=>"bookmark"}], "id"=>111}], 'key_name' => options['key_name'] || "" } self.data[:last_modified][:servers][data['id']] = Time.now self.data[:servers][data['id']] = data response.body = { 'server' => data.merge({'adminPass' => 'password'}) } response end
# File lib/fog/hp/compute.rb, line 165 def data self.class.data[@hp_access_key] end
# File lib/fog/hp/requests/compute/delete_image.rb, line 23 def delete_image(image_id) response = Excon::Response.new if image = list_images_detail.body['images'].detect {|_| _['id'] == image_id} if image['status'] == 'SAVING' response.status = 409 raise(Excon::Errors.status_error({:expects => 202}, response)) else self.data[:last_modified][:images].delete(image_id) self.data[:images].delete(image_id) response.status = 202 end response else response.status = 500 raise(Excon::Errors.status_error({:expects => 202}, response)) end end
# File lib/fog/hp/requests/compute/delete_key_pair.rb, line 23 def delete_key_pair(key_name) response = Excon::Response.new if self.data[:key_pairs][key_name] self.data[:last_modified][:key_pairs].delete(key_name) self.data[:key_pairs].delete(key_name) response.status = 202 response.body = "202 Accepted\n\nThe request is accepted for processing.\n\n " response else raise Fog::Compute::HP::NotFound end end
# File lib/fog/hp/requests/compute/delete_meta.rb, line 29 def delete_meta(collection_name, parent_id, key) if collection_name == "images" then if get_image_details(parent_id) self.data[:images][parent_id]['metadata'].delete(key) else raise Fog::Compute::HP::NotFound end end if collection_name == "servers" then if get_server_details(parent_id) self.data[:servers][parent_id]['metadata'].delete(key) else raise Fog::Compute::HP::NotFound end end response = Excon::Response.new response.status = 204 response end
# File lib/fog/hp/requests/compute/delete_security_group.rb, line 25 def delete_security_group(security_group_id) response = Excon::Response.new if self.data[:security_groups][security_group_id] self.data[:last_modified][:security_groups].delete(security_group_id) self.data[:security_groups].delete(security_group_id) response.status = 202 response.body = "202 Accepted\n\nThe request is accepted for processing.\n\n " response else raise Fog::Compute::HP::NotFound end end
# File lib/fog/hp/requests/compute/delete_security_group_rule.rb, line 24 def delete_security_group_rule(security_group_rule_id) response = Excon::Response.new sg_rule = nil self.data[:security_groups].each do |_, sgv| if sgv['rules'] sg_rule = sgv['rules'].delete_if { |r| !r.nil? && r['id'] == security_group_rule_id } break if sg_rule end end if sg_rule && !sg_rule.empty? response.status = 202 response.body = "202 Accepted\n\nThe request is accepted for processing.\n\n " response else raise Fog::Compute::HP::NotFound end end
# File lib/fog/hp/requests/compute/delete_server.rb, line 23 def delete_server(server_id) response = Excon::Response.new if server = list_servers_detail.body['servers'].detect {|_| _['id'] == server_id} if server['status'] == 'BUILD' response.status = 409 raise(Excon::Errors.status_error({:expects => 202}, response)) else self.data[:last_modified][:servers].delete(server_id) self.data[:servers].delete(server_id) response.status = 204 end response else raise Fog::Compute::HP::NotFound end end
# File lib/fog/hp/requests/compute/disassociate_address.rb, line 21 def disassociate_address(server_id, ip_address) response = Excon::Response.new if server = self.data[:servers][server_id] data = server['addresses']['private'].reject {|a| a['addr'] == ip_address} self.data[:servers][server_id]['addresses']['private'] = data response.status = 202 else #raise Fog::Compute::HP::NotFound response.status = 500 raise(Excon::Errors.status_error({:expects => 200}, response)) end response end
# File lib/fog/hp/requests/compute/get_address.rb, line 31 def get_address(address_id) response = Excon::Response.new if address = self.data[:addresses][address_id] response.status = 200 response.body = { 'floating_ip' => address } response else raise Fog::Compute::HP::NotFound end end
# File lib/fog/hp/requests/compute/get_console_output.rb, line 27 def get_console_output(server_id, num_lines) output = "" response = Excon::Response.new if list_servers_detail.body['servers'].detect {|_| _['id'] == server_id} (1..num_lines).each {|i| output += "Console Output Line #{i} \r\n"} response.body = { 'output' => output } response.status = 200 else raise Fog::Compute::HP::NotFound end response end
# File lib/fog/hp/requests/compute/get_flavor_details.rb, line 27 def get_flavor_details(flavor_id) response = Excon::Response.new flavor = { 1 => { 'name' => 'standard.xsmall', 'ram' => 1024, 'disk' => 30, 'id' => 1, 'rxtx_quota' => 0, 'vcpus' => 1, 'rxtx_cap' => 0, 'swap' => 0, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/1", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/1", "rel"=>"bookmark"}] }, 2 => { 'name' => 'standard.small', 'ram' => 2048, 'disk' => 60, 'id' => 2, 'rxtx_quota' => 0, 'vcpus' => 2, 'rxtx_cap' => 0, 'swap' => 0, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/2", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/2", "rel"=>"bookmark"}] }, 3 => { 'name' => 'standard.medium', 'ram' => 4096, 'disk' => 120, 'id' => 3, 'rxtx_quota' => 0, 'vcpus' => 2, 'rxtx_cap' => 0, 'swap' => 0, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/3", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/3", "rel"=>"bookmark"}] }, 4 => { 'name' => 'standard.large', 'ram' => 8192, 'disk' => 240, 'id' => 4, 'rxtx_quota' => 0, 'vcpus' => 4, 'rxtx_cap' => 0, 'swap' => 0, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/4", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/4", "rel"=>"bookmark"}] }, 5 => { 'name' => 'standard.xlarge', 'ram' => 16384, 'disk' => 480, 'id' => 5, 'rxtx_quota' => 0, 'vcpus' => 4, 'rxtx_cap' => 0, 'swap' => 0, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/5", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/5", "rel"=>"bookmark"}] }, 6 => { 'name' => 'standard.2xlarge', 'ram' => 32768, 'disk' => 960, 'id' => 6, 'rxtx_quota' => 0, 'vcpus' => 8, 'rxtx_cap' => 0, 'swap' => 0, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/6", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/6", "rel"=>"bookmark"}] } }[flavor_id] if flavor response.status = 200 response.body = { 'flavor' => flavor } response else raise Fog::Compute::HP::NotFound end end
# File lib/fog/hp/requests/compute/get_image_details.rb, line 28 def get_image_details(image_id) response = Excon::Response.new if image = list_images_detail.body['images'].detect {|_| _['id'] == image_id} response.status = [200, 203][rand(1)] response.body = { 'image' => image } response else raise Fog::Compute::HP::NotFound end end
# File lib/fog/hp/requests/compute/get_meta.rb, line 30 def get_meta(collection_name, parent_id, key) if collection_name == "images" then if get_image_details(parent_id) raise Fog::Compute::HP::NotFound unless midata = self.data[:images][parent_id]['metadata'].fetch(key, nil) else raise Fog::Compute::HP::NotFound end end if collection_name == "servers" then if get_server_details(parent_id) raise Fog::Compute::HP::NotFound unless midata = self.data[:servers][parent_id]['metadata'].fetch(key, nil) else raise Fog::Compute::HP::NotFound end end response = Excon::Response.new response.status = 200 response.body = { 'meta' => { key => midata } } response end
# File lib/fog/hp/requests/compute/get_security_group.rb, line 43 def get_security_group(security_group_id) response = Excon::Response.new if sec_group = self.data[:security_groups][security_group_id] response.status = 200 response.body = { 'security_group' => sec_group } response else raise Fog::Compute::HP::NotFound end end
# File lib/fog/hp/requests/compute/get_server_details.rb, line 38 def get_server_details(server_id) response = Excon::Response.new if server = list_servers_detail.body['servers'].detect {|_| _['id'] == server_id} response.status = [200, 203][rand(1)] response.body = { 'server' => server } response else raise Fog::Compute::HP::NotFound end end
# File lib/fog/hp/requests/compute/get_windows_password.rb, line 25 def get_windows_password(server_id) # need to mock out the private key as well private_key = OpenSSL::PKey::RSA.generate(1024) public_key = private_key.public_key ### The original password is Passw0rd encoded_password = encrypt_using_public_key("Passw0rd", public_key) if list_servers_detail.body['servers'].detect {|_| _['id'] == server_id} # mock output for this call get_console_output(server_id, 400).body['output'] log_output = "start junk [cloud-init] Encrypt random password\n-----BEGIN BASE64-ENCODED ENCRYPTED PASSWORD-----\n#{encoded_password}-----END BASE64-ENCODED ENCRYPTED PASSWORD-----\nend junk [cloud-init] Done\n" encrypted_password = extract_password_from_log(log_output) else raise Fog::Compute::HP::NotFound end end
# File lib/fog/hp/requests/compute/list_addresses.rb, line 28 def list_addresses response = Excon::Response.new addresses = [] addresses = self.data[:addresses].values unless self.data[:addresses].nil? response.status = 200 response.body = { 'floating_ips' => addresses } response end
# File lib/fog/hp/requests/compute/list_flavors.rb, line 25 def list_flavors response = Excon::Response.new response.status = 200 response.body = { 'flavors' => [ { 'name' => 'standard.xsmall', 'id' => 1, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/1", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/1", "rel"=>"bookmark"}] }, { 'name' => 'standard.small', 'id' => 2, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/2", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/2", "rel"=>"bookmark"}] }, { 'name' => 'standard.medium', 'id' => 3, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/3", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/3", "rel"=>"bookmark"}] }, { 'name' => 'standard.large', 'id' => 4, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/4", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/4", "rel"=>"bookmark"}] }, { 'name' => 'standard.xlarge', 'id' => 5, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/5", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/5", "rel"=>"bookmark"}] }, { 'name' => 'standard.2xlarge', 'id' => 6, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/6", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/6", "rel"=>"bookmark"}] } ] } response end
# File lib/fog/hp/requests/compute/list_flavors_detail.rb, line 27 def list_flavors_detail response = Excon::Response.new response.status = 200 response.body = { 'flavors' => [ { 'name' => 'standard.xsmall', 'ram' => 1024, 'disk' => 30, 'id' => 1, 'rxtx_quota' => 0, 'vcpus' => 1, 'rxtx_cap' => 0, 'swap' => 0, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/1", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/1", "rel"=>"bookmark"}] }, { 'name' => 'standard.small', 'ram' => 2048, 'disk' => 60, 'id' => 2, 'rxtx_quota' => 0, 'vcpus' => 2, 'rxtx_cap' => 0, 'swap' => 0, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/2", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/2", "rel"=>"bookmark"}] }, { 'name' => 'standard.medium', 'ram' => 4096, 'disk' => 120, 'id' => 3, 'rxtx_quota' => 0, 'vcpus' => 2, 'rxtx_cap' => 0, 'swap' => 0, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/3", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/3", "rel"=>"bookmark"}] }, { 'name' => 'standard.large', 'ram' => 8192, 'disk' => 240, 'id' => 4, 'rxtx_quota' => 0, 'vcpus' => 4, 'rxtx_cap' => 0, 'swap' => 0, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/4", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/4", "rel"=>"bookmark"}] }, { 'name' => 'standard.xlarge', 'ram' => 16384, 'disk' => 480, 'id' => 5, 'rxtx_quota' => 0, 'vcpus' => 4, 'rxtx_cap' => 0, 'swap' => 0, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/5", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/5", "rel"=>"bookmark"}] }, { 'name' => 'standard.2xlarge', 'ram' => 32768, 'disk' => 960, 'id' => 6, 'rxtx_quota' => 0, 'vcpus' => 8, 'rxtx_cap' => 0, 'swap' => 0, 'links' => [{"href"=>"http://nova1:8774/v1.1/admin/flavors/6", "rel"=>"self"}, {"href"=>"http://nova1:8774admin/flavors/6", "rel"=>"bookmark"}] } ] } response end
# File lib/fog/hp/requests/compute/list_images.rb, line 25 def list_images response = Excon::Response.new data = list_images_detail.body['images'] images = [] for image in data images << image.reject { |key, value| !['id', 'name'].include?(key) } end response.status = [200, 203][rand(1)] response.body = { 'images' => images } response end
# File lib/fog/hp/requests/compute/list_images_detail.rb, line 28 def list_images_detail response = Excon::Response.new images = self.data[:images].values for image in images case image['status'] when 'SAVING' if Time.now - self.data[:last_modified][:images][image['id']] >= Fog::Mock.delay image['status'] = 'ACTIVE' end end end response.status = [200, 203][rand(1)] response.body = { 'images' => images.map {|image| image.reject {|key, value| !['id', 'name', 'links', 'metadata', 'progress' ,'status', 'created', 'updated'].include?(key)}} } response end
# File lib/fog/hp/requests/compute/list_key_pairs.rb, line 30 def list_key_pairs response = Excon::Response.new key_pairs = [] key_pairs = self.data[:key_pairs].values unless self.data[:key_pairs].nil? response.status = [200, 203][rand(1)] response.body = { 'keypairs' => key_pairs } response end
# File lib/fog/hp/requests/compute/list_metadata.rb, line 29 def list_metadata(collection_name, parent_id) mdata = {} if collection_name == "images" then if get_image_details(parent_id) mdata = self.data[:images][parent_id]['metadata'] else raise Fog::Compute::HP::NotFound end end if collection_name == "servers" then if get_server_details(parent_id) mdata = self.data[:servers][parent_id]['metadata'] else raise Fog::Compute::HP::NotFound end end response = Excon::Response.new response.status = 200 response.body = {'metadata' => mdata} response end
# File lib/fog/hp/requests/compute/list_security_groups.rb, line 40 def list_security_groups response = Excon::Response.new sec_groups = [] sec_groups = self.data[:security_groups].values unless self.data[:security_groups].nil? response.status = 200 response.body = { 'security_groups' => sec_groups } response end
# File lib/fog/hp/requests/compute/list_server_addresses.rb, line 28 def list_server_addresses(server_id) response = Excon::Response.new if server = list_servers_detail.body['servers'].detect {|_| _['id'] == server_id} response.status = 200 response.body = { 'addresses' => server['addresses'] } response else raise Fog::Compute::HP::NotFound end end
# File lib/fog/hp/requests/compute/list_server_private_addresses.rb, line 37 def list_server_private_addresses(server_id, network_name) response = Excon::Response.new if server = list_servers_detail.body['servers'].detect {|_| _['id'] == server_id} private_address = [] data = nil data = server['addresses']["#{network_name}"][0] if server['addresses']["#{network_name}"] if data private_address << data end response.status = 200 response.body = { 'private' => private_address } response else raise Fog::Compute::HP::NotFound end end
# File lib/fog/hp/requests/compute/list_server_public_addresses.rb, line 37 def list_server_public_addresses(server_id, network_name) response = Excon::Response.new if server = list_servers_detail.body['servers'].detect {|_| _['id'] == server_id} # return everything except the first address data = server['addresses']["#{network_name}"] if data data.delete_at(0) public_address = data end response.status = 200 response.body = { 'public' => public_address } response else raise Fog::Compute::HP::NotFound end end
# File lib/fog/hp/requests/compute/list_servers.rb, line 26 def list_servers response = Excon::Response.new data = list_servers_detail.body['servers'] servers = [] for server in data servers << server.reject { |key, value| !['id', 'name', 'links', 'uuid'].include?(key) } end response.status = [200, 203][rand(1)] response.body = { 'servers' => servers } response end
# File lib/fog/hp/requests/compute/list_servers_detail.rb, line 35 def list_servers_detail response = Excon::Response.new servers = self.data[:servers].values for server in servers case server['status'] when 'BUILD' if Time.now - self.data[:last_modified][:servers][server['id']] > Fog::Mock.delay * 2 server['status'] = 'ACTIVE' end end end response.status = [200, 203][rand(1)] response.body = { 'servers' => servers } response end
# File lib/fog/hp/requests/compute/reboot_server.rb, line 21 def reboot_server(server_id, type = 'SOFT') response = Excon::Response.new if list_servers_detail.body['servers'].detect {|_| _['id'] == server_id} response.status = 202 response else raise Fog::Compute::HP::NotFound end end
# File lib/fog/hp/requests/compute/rebuild_server.rb, line 22 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.status = 202 response end
# File lib/fog/hp/requests/compute/release_address.rb, line 23 def release_address(address_id) response = Excon::Response.new if self.data[:addresses][address_id] self.data[:last_modified][:addresses].delete(address_id) self.data[:addresses].delete(address_id) response.status = 202 response.body = "202 Accepted\n\nThe request is accepted for processing.\n\n " else raise Fog::Compute::HP::NotFound end response end
# File lib/fog/hp/compute.rb, line 169 def reset_data self.class.data.delete(@hp_access_key) end
FIXME: should probably transition instead of skipping to VERIFY_RESIZE
# File lib/fog/hp/requests/compute/resize_server.rb, line 22 def resize_server(server_id, flavor_id) response = Excon::Response.new response.status = 202 # keep track of this for reverts self.data[:servers][server_id]['old_flavorId'] = self.data[:servers][server_id]['flavorId'] self.data[:servers][server_id]['flavorId'] = flavor_id self.data[:last_modified][:servers][server_id] = Time.now self.data[:servers][server_id]['status'] = 'VERIFY_RESIZE' response end
# File lib/fog/hp/requests/compute/revert_resized_server.rb, line 20 def revert_resized_server(server_id) response = Excon::Response.new response.status = 202 self.data[:servers][server_id]['flavorId'] = self.data[:servers][server_id]['old_flavorId'] self.data[:servers][server_id].delete('old_flavorId') self.data[:last_modified][:servers][server_id] = Time.now self.data[:servers][server_id]['status'] = 'ACTIVE' response end
# File lib/fog/hp/requests/compute/set_metadata.rb, line 31 def set_metadata(collection_name, parent_id, metadata = {}) if collection_name == "images" then if get_image_details(parent_id) self.data[:images][parent_id]['metadata'] = metadata else raise Fog::Compute::HP::NotFound end end if collection_name == "servers" then if get_server_details(parent_id) self.data[:servers][parent_id]['metadata'] = metadata else raise Fog::Compute::HP::NotFound end end response = Excon::Response.new response.body = { "metadata" => metadata } response.status = 200 response end
# File lib/fog/hp/requests/compute/update_meta.rb, line 32 def update_meta(collection_name, parent_id, key, value) if collection_name == "images" then if get_image_details(parent_id) self.data[:images][parent_id]['metadata'][key] = value else raise Fog::Compute::HP::NotFound end end if collection_name == "servers" then if get_server_details(parent_id) self.data[:servers][parent_id]['metadata'][key] = value else raise Fog::Compute::HP::NotFound end end response = Excon::Response.new response.body = { "meta" => { key => value } } response.status = 200 response end
# File lib/fog/hp/requests/compute/update_metadata.rb, line 31 def update_metadata(collection_name, parent_id, metadata = {}) if collection_name == "images" then if get_image_details(parent_id) newmetadata = self.data[:images][parent_id]['metadata'].merge!(metadata) else raise Fog::Compute::HP::NotFound end end if collection_name == "servers" then if get_server_details(parent_id) newmetadata = self.data[:servers][parent_id]['metadata'].merge!(metadata) else raise Fog::Compute::HP::NotFound end end response = Excon::Response.new response.body = { "metadata" => newmetadata } response.status = 200 response end
# File lib/fog/hp/requests/compute/update_server.rb, line 26 def update_server(server_id, options) response = Excon::Response.new if server = list_servers_detail.body['servers'].detect {|_| _['id'] == server_id} if options['name'] server['name'] = options['name'] end response.status = 200 response else raise Fog::Compute::HP::NotFound end end
Generated with the Darkfish Rdoc Generator 2.