From 4d33ccb7a789c4a008382be48f957c5e719158bf Mon Sep 17 00:00:00 2001 From: Nelvin Driz Date: Tue, 28 Feb 2012 00:27:00 +0800 Subject: [PATCH] [openstack|compute] General Cleanup and Update - Focus on adding additional vm actions support - New request types are not fully tested --- lib/fog/openstack/compute.rb | 103 +++++++++++------- lib/fog/openstack/models/compute/metadata.rb | 10 +- .../models/compute/{meta.rb => metadatum.rb} | 2 +- lib/fog/openstack/models/compute/network.rb | 13 +++ lib/fog/openstack/models/compute/networks.rb | 29 +++++ lib/fog/openstack/models/compute/server.rb | 6 +- .../requests/compute/add_fixed_ip.rb | 29 +++++ ...rd_server.rb => change_server_password.rb} | 4 +- ...zed_server.rb => confirm_resize_server.rb} | 4 +- .../{delete_meta.rb => delete_metadata.rb} | 4 +- .../compute/{get_meta.rb => get_metadata.rb} | 4 +- .../requests/compute/get_vnc_console.rb | 40 +++++++ .../requests/compute/list_security_group.rb | 23 ---- .../requests/compute/pause_server.rb | 24 ++++ .../requests/compute/remove_fixed_ip.rb | 29 +++++ .../requests/compute/rescue_server.rb | 24 ++++ .../requests/compute/resume_server.rb | 24 ++++ ...ized_server.rb => revert_resize_server.rb} | 0 .../requests/compute/server_actions.rb | 27 +++++ .../requests/compute/server_diagnostics.rb | 25 +++++ .../requests/compute/suspend_server.rb | 24 ++++ .../requests/compute/unpause_server.rb | 24 ++++ .../openstack/requests/compute/update_meta.rb | 45 -------- .../requests/identity/create_role.rb | 4 +- .../requests/identity/create_user_role.rb | 6 +- .../requests/identity/delete_user_role.rb | 6 +- .../identity/list_roles_for_user_on_tenant.rb | 5 +- tests/openstack/models/identity/role_tests.rb | 7 +- .../openstack/models/identity/roles_tests.rb | 10 +- 29 files changed, 420 insertions(+), 135 deletions(-) rename lib/fog/openstack/models/compute/{meta.rb => metadatum.rb} (93%) create mode 100644 lib/fog/openstack/models/compute/network.rb create mode 100644 lib/fog/openstack/models/compute/networks.rb create mode 100644 lib/fog/openstack/requests/compute/add_fixed_ip.rb rename lib/fog/openstack/requests/compute/{change_password_server.rb => change_server_password.rb} (74%) rename lib/fog/openstack/requests/compute/{confirm_resized_server.rb => confirm_resize_server.rb} (78%) rename lib/fog/openstack/requests/compute/{delete_meta.rb => delete_metadata.rb} (77%) rename lib/fog/openstack/requests/compute/{get_meta.rb => get_metadata.rb} (79%) create mode 100644 lib/fog/openstack/requests/compute/get_vnc_console.rb delete mode 100644 lib/fog/openstack/requests/compute/list_security_group.rb create mode 100644 lib/fog/openstack/requests/compute/pause_server.rb create mode 100644 lib/fog/openstack/requests/compute/remove_fixed_ip.rb create mode 100644 lib/fog/openstack/requests/compute/rescue_server.rb create mode 100644 lib/fog/openstack/requests/compute/resume_server.rb rename lib/fog/openstack/requests/compute/{revert_resized_server.rb => revert_resize_server.rb} (100%) create mode 100644 lib/fog/openstack/requests/compute/server_actions.rb create mode 100644 lib/fog/openstack/requests/compute/server_diagnostics.rb create mode 100644 lib/fog/openstack/requests/compute/suspend_server.rb create mode 100644 lib/fog/openstack/requests/compute/unpause_server.rb delete mode 100644 lib/fog/openstack/requests/compute/update_meta.rb diff --git a/lib/fog/openstack/compute.rb b/lib/fog/openstack/compute.rb index a270e513e..d896b90bf 100644 --- a/lib/fog/openstack/compute.rb +++ b/lib/fog/openstack/compute.rb @@ -10,94 +10,119 @@ module Fog recognizes :openstack_auth_token, :openstack_management_url, :persistent, :openstack_compute_service_name, :openstack_tenant + ## MODELS + # model_path 'fog/openstack/models/compute' - model :address - collection :addresses - model :flavor - collection :flavors - model :image - collection :images model :server collection :servers - model :meta + model :image + collection :images + model :flavor + collection :flavors + model :metadatum collection :metadata - model :key_pair - collection :key_pairs + model :address + collection :addresses model :security_group collection :security_groups + model :key_pair + collection :key_pairs model :tenant collection :tenants model :volume collection :volumes + model :network + collection :networks - + ## REQUESTS + # request_path 'fog/openstack/requests/compute' - request :create_server - request :delete_image - request :delete_server - request :get_flavor_details - request :get_image_details - request :get_server_details - request :list_flavors - request :list_flavors_detail - request :list_images - request :list_images_detail + # Server CRUD request :list_servers request :list_servers_detail + request :create_server + request :get_server_details + request :update_server + request :delete_server + # Server Actions + request :server_actions request :server_action - request :change_password_server request :reboot_server request :rebuild_server request :resize_server - request :confirm_resized_server - request :revert_resized_server + request :confirm_resize_server + request :revert_resize_server + request :pause_server + request :unpause_server + request :rescue_server + request :change_server_password + request :add_fixed_ip + request :remove_fixed_ip + request :server_diagnostics + + # Server Extenstions + request :get_console_output + request :get_vnc_console + request :live_migrate_server + request :migrate_server + + # Image CRUD + request :list_images + request :list_images_detail request :create_image + request :get_image_details + request :delete_image - request :update_server + # Flavor + request :list_flavors + request :list_flavors_detail + request :get_flavor_details + # Metadata + request :list_metadata + request :get_metadata request :set_metadata request :update_metadata - request :list_metadata - - request :get_meta - request :update_meta - request :delete_meta + request :delete_metadata + # Address + request :list_addresses request :list_all_addresses request :list_private_addresses request :list_public_addresses + request :get_address request :allocate_address request :associate_address - request :disassociate_address - request :get_address - request :list_addresses request :release_address + request :disassociate_address + # Security Group + request :list_security_groups + request :get_security_group request :create_security_group request :create_security_group_rule request :delete_security_group request :delete_security_group_rule - request :list_security_groups - request :get_security_group + # Key Pair + request :list_key_pairs request :create_key_pair request :delete_key_pair - request :list_key_pairs + # Tenant request :list_tenants request :set_tenant + # Volume request :list_volumes - request :get_volume_details request :create_volume + request :get_volume_details request :delete_volume + # Usage request :list_usages - request :get_console_output - request :live_migrate_server - request :migrate_server class Mock diff --git a/lib/fog/openstack/models/compute/metadata.rb b/lib/fog/openstack/models/compute/metadata.rb index 7da2a3388..bb3c4c614 100644 --- a/lib/fog/openstack/models/compute/metadata.rb +++ b/lib/fog/openstack/models/compute/metadata.rb @@ -1,6 +1,6 @@ require 'fog/core/collection' require 'fog/openstack/models/meta_parent' -require 'fog/openstack/models/compute/meta' +require 'fog/openstack/models/compute/metadatum' require 'fog/openstack/models/compute/image' require 'fog/openstack/models/compute/server' @@ -10,7 +10,7 @@ module Fog class Metadata < Fog::Collection - model Fog::Compute::OpenStack::Meta + model Fog::Compute::OpenStack::Metadatum include Fog::Compute::OpenStack::MetaParent @@ -52,15 +52,15 @@ module Fog if data.nil? data={} self.each do |meta| - if meta.is_a?(Fog::Compute::OpenStack::Meta) then + if meta.is_a?(Fog::Compute::OpenStack::Metadatum) then data.store(meta.key, meta.value) else data.store(meta["key"], meta["value"]) end - end + end end data - end + end end diff --git a/lib/fog/openstack/models/compute/meta.rb b/lib/fog/openstack/models/compute/metadatum.rb similarity index 93% rename from lib/fog/openstack/models/compute/meta.rb rename to lib/fog/openstack/models/compute/metadatum.rb index 06d6a2692..8bd57678e 100644 --- a/lib/fog/openstack/models/compute/meta.rb +++ b/lib/fog/openstack/models/compute/metadatum.rb @@ -4,7 +4,7 @@ require 'fog/openstack/models/meta_parent' module Fog module Compute class OpenStack - class Meta < Fog::Model + class Metadatum < Fog::Model include Fog::Compute::OpenStack::MetaParent diff --git a/lib/fog/openstack/models/compute/network.rb b/lib/fog/openstack/models/compute/network.rb new file mode 100644 index 000000000..681a53c40 --- /dev/null +++ b/lib/fog/openstack/models/compute/network.rb @@ -0,0 +1,13 @@ +require 'fog/core/model' + +module Fog + module Compute + class OpenStack + class Network < Fog::Model + identity :id + attribute :name + attribute :addresses + end # class Network + end # class OpenStack + end # module Compute +end # module Fog diff --git a/lib/fog/openstack/models/compute/networks.rb b/lib/fog/openstack/models/compute/networks.rb new file mode 100644 index 000000000..8a95d84b4 --- /dev/null +++ b/lib/fog/openstack/models/compute/networks.rb @@ -0,0 +1,29 @@ +require 'fog/core/collection' +require 'fog/openstack/models/compute/network' + +module Fog + module Compute + class OpenStack + class Networks < Fog::Collection + model Fog::Compute::OpenStack::Network + + attribute :server + + def all + requires :server + + networks = Array.new + server.addresses.each_with_index do |address, index| + networks << { + :id => index + 1, + :name => address[0], + :addresses => address[1].map {|a| a['addr'] } + } + end + + load(networks) + end + end # class Networks + end # class OpenStack + end # module Compute +end # module Fog diff --git a/lib/fog/openstack/models/compute/server.rb b/lib/fog/openstack/models/compute/server.rb index 49b8611ab..1c0454045 100644 --- a/lib/fog/openstack/models/compute/server.rb +++ b/lib/fog/openstack/models/compute/server.rb @@ -178,7 +178,7 @@ module Fog def live_migrate(host, block_migration, disk_over_commit) requires :id connection.live_migrate_server(id, host, block_migration, disk_over_commit) - end + end def associate_address(floating_ip) requires :id @@ -198,6 +198,10 @@ module Fog @max_count = new_max_count end + def networks + connection.networks(:server => self) + end + # TODO: Implement /os-volumes-boot support with 'block_device_mapping' def save raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if identity diff --git a/lib/fog/openstack/requests/compute/add_fixed_ip.rb b/lib/fog/openstack/requests/compute/add_fixed_ip.rb new file mode 100644 index 000000000..e910e005a --- /dev/null +++ b/lib/fog/openstack/requests/compute/add_fixed_ip.rb @@ -0,0 +1,29 @@ +module Fog + module Compute + class OpenStack + class Real + # Add an IP address on a network. + # + # === Parameters + # * server_id <~String> - The ID of the server in which to add an IP to. + # * network_id <~String> - The ID of the network the IP should be on. + # === Returns + # * success <~Boolean> + def add_fixed_ip(server_id, network_id) + body = { + 'addFixedIp' => { + 'networkId' => network_id + } + } + server_action(server_id, body).status == 202 + end # def add_fixed_ip + end # class Real + + class Mock + def add_fixed_ip(server_id, network_id) + true + end # def add_fixed_ip + end # class Mock + end # class OpenStack + end # module Compute +end # module Fog diff --git a/lib/fog/openstack/requests/compute/change_password_server.rb b/lib/fog/openstack/requests/compute/change_server_password.rb similarity index 74% rename from lib/fog/openstack/requests/compute/change_password_server.rb rename to lib/fog/openstack/requests/compute/change_server_password.rb index c28cdaa28..f94e50dba 100644 --- a/lib/fog/openstack/requests/compute/change_password_server.rb +++ b/lib/fog/openstack/requests/compute/change_server_password.rb @@ -3,7 +3,7 @@ module Fog class OpenStack class Real - def change_password_server(server_id, admin_password) + def change_server_password(server_id, admin_password) body = { 'changePassword' => { 'adminPass' => admin_password }} server_action(server_id, body) end @@ -12,7 +12,7 @@ module Fog class Mock - def change_password_server(server_id, admin_password) + def change_server_password(server_id, admin_password) response = Excon::Response.new response.status = 202 response diff --git a/lib/fog/openstack/requests/compute/confirm_resized_server.rb b/lib/fog/openstack/requests/compute/confirm_resize_server.rb similarity index 78% rename from lib/fog/openstack/requests/compute/confirm_resized_server.rb rename to lib/fog/openstack/requests/compute/confirm_resize_server.rb index d931d92dc..be8853dd3 100644 --- a/lib/fog/openstack/requests/compute/confirm_resized_server.rb +++ b/lib/fog/openstack/requests/compute/confirm_resize_server.rb @@ -3,7 +3,7 @@ module Fog class OpenStack class Real - def confirm_resized_server(server_id) + def confirm_resize_server(server_id) body = { 'confirmResize' => nil } server_action(server_id, body, 204) end @@ -12,7 +12,7 @@ module Fog class Mock - def confirm_resized_server(server_id) + def confirm_resize_server(server_id) response = Excon::Response.new response.status = 204 response diff --git a/lib/fog/openstack/requests/compute/delete_meta.rb b/lib/fog/openstack/requests/compute/delete_metadata.rb similarity index 77% rename from lib/fog/openstack/requests/compute/delete_meta.rb rename to lib/fog/openstack/requests/compute/delete_metadata.rb index f69c4db7e..088943cb8 100644 --- a/lib/fog/openstack/requests/compute/delete_meta.rb +++ b/lib/fog/openstack/requests/compute/delete_metadata.rb @@ -3,7 +3,7 @@ module Fog class OpenStack class Real - def delete_meta(collection_name, parent_id, key) + def delete_metadata(collection_name, parent_id, key) request( :expects => 204, :method => 'DELETE', @@ -15,7 +15,7 @@ module Fog class Mock - def delete_meta(collection_name, parent_id, key) + def delete_metadata(collection_name, parent_id, key) response = Excon::Response.new response.status = 204 response diff --git a/lib/fog/openstack/requests/compute/get_meta.rb b/lib/fog/openstack/requests/compute/get_metadata.rb similarity index 79% rename from lib/fog/openstack/requests/compute/get_meta.rb rename to lib/fog/openstack/requests/compute/get_metadata.rb index 5d8332b2d..b85db3a02 100644 --- a/lib/fog/openstack/requests/compute/get_meta.rb +++ b/lib/fog/openstack/requests/compute/get_metadata.rb @@ -3,7 +3,7 @@ module Fog class OpenStack class Real - def get_meta(collection_name, parent_id, key) + def get_metadata(collection_name, parent_id, key) request( :expects => [200, 203], :method => 'GET', @@ -15,7 +15,7 @@ module Fog class Mock - def get_meta(collection_name, parent_id, key) + def get_metadata(collection_name, parent_id, key) response = Excon::Response.new response.status = 200 response.body = { 'meta' => {} } diff --git a/lib/fog/openstack/requests/compute/get_vnc_console.rb b/lib/fog/openstack/requests/compute/get_vnc_console.rb new file mode 100644 index 000000000..9cf54a765 --- /dev/null +++ b/lib/fog/openstack/requests/compute/get_vnc_console.rb @@ -0,0 +1,40 @@ +module Fog + module Compute + class OpenStack + class Real + # Get a vnc console for an instance. + # + # === Parameters + # * server_id <~String> - The ID of the server. + # * console_type <~String> - Type of vnc console to get ('novnc' or 'xvpvnc'). + # === Returns + # * response <~Excon::Response>: + # * body <~Hash>: + # * url <~String> + # * type <~String> + def get_vnc_console(server_id, console_type) + body = { + 'os-getVNCConsole' => { + 'type' => console_type + } + } + server_action(server_id, body) + end # def get_vnc_console + end # class Real + + class Mock + 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 # def get_vnc_console + end # class Mock + end # class OpenStack + end # module Compute +end # module Fog diff --git a/lib/fog/openstack/requests/compute/list_security_group.rb b/lib/fog/openstack/requests/compute/list_security_group.rb deleted file mode 100644 index fd6ce79b9..000000000 --- a/lib/fog/openstack/requests/compute/list_security_group.rb +++ /dev/null @@ -1,23 +0,0 @@ -module Fog - module Compute - class OpenStack - class Real - - def list_security_groups - request( - :expects => [200], - :method => 'GET', - :path => 'os-security-groups.json' - ) - end - - end - - class Mock - - - - end - end - end -end diff --git a/lib/fog/openstack/requests/compute/pause_server.rb b/lib/fog/openstack/requests/compute/pause_server.rb new file mode 100644 index 000000000..7e8211ef0 --- /dev/null +++ b/lib/fog/openstack/requests/compute/pause_server.rb @@ -0,0 +1,24 @@ +module Fog + module Compute + class OpenStack + class Real + # Pause the server. + # + # === Parameters + # * server_id <~String> - The ID of the server to pause. + # === Returns + # * success <~Boolean> + def pause_server(server_id) + body = { 'pause' => nil } + server_action(server_id, body) == 202 + end # def pause_server + end # class Real + + class Mock + def pause_server(server_id) + true + end # def pause_server + end # class Mock + end # class OpenStack + end # module Compute +end # module Fog diff --git a/lib/fog/openstack/requests/compute/remove_fixed_ip.rb b/lib/fog/openstack/requests/compute/remove_fixed_ip.rb new file mode 100644 index 000000000..7af1d3ad0 --- /dev/null +++ b/lib/fog/openstack/requests/compute/remove_fixed_ip.rb @@ -0,0 +1,29 @@ +module Fog + module Compute + class OpenStack + class Real + # Remove an IP address. + # + # === Parameters + # * server_id <~String> - The ID of the server in which to remove an IP from. + # * address <~String> - The IP address to be removed. + # === Returns + # * success <~Boolean> + def remove_fixed_ip(server_id, address) + body = { + 'removeFixedIp' => { + 'address' => address + } + } + server_action(server_id, body).status == 202 + end # def remove_fixed_ip + end # class Real + + class Mock + def remove_fixed_ip(server_id, network_id) + true + end # def remove_fixed_ip + end # class Mock + end # class OpenStack + end # module Compute +end # module Fog diff --git a/lib/fog/openstack/requests/compute/rescue_server.rb b/lib/fog/openstack/requests/compute/rescue_server.rb new file mode 100644 index 000000000..95f6ad00d --- /dev/null +++ b/lib/fog/openstack/requests/compute/rescue_server.rb @@ -0,0 +1,24 @@ +module Fog + module Compute + class OpenStack + class Real + # Rescue the server. + # + # === Parameters + # * server_id <~String> - The ID of the server to be rescued. + # === Returns + # * success <~Boolean> + def rescue_server(server_id) + body = { 'rescue' => nil } + server_action(server_id, body) == 202 + end # def rescue_server + end # class Real + + class Mock + def rescue_server(server_id) + true + end # def rescue_server + end # class Mock + end # class OpenStack + end # module Compute +end # module Fog diff --git a/lib/fog/openstack/requests/compute/resume_server.rb b/lib/fog/openstack/requests/compute/resume_server.rb new file mode 100644 index 000000000..ea8284abf --- /dev/null +++ b/lib/fog/openstack/requests/compute/resume_server.rb @@ -0,0 +1,24 @@ +module Fog + module Compute + class OpenStack + class Real + # Resume the server. + # + # === Parameters + # * server_id <~String> - The ID of the server to be resumed. + # === Returns + # * success <~Boolean> + def resume_server(server_id) + body = { 'resume' => nil } + server_action(server_id, body) == 202 + end # def resume_server + end # class Real + + class Mock + def resume_server(server_id) + true + end # def resume_server + end # class Mock + end # class OpenStack + end # module Compute +end # module Fog diff --git a/lib/fog/openstack/requests/compute/revert_resized_server.rb b/lib/fog/openstack/requests/compute/revert_resize_server.rb similarity index 100% rename from lib/fog/openstack/requests/compute/revert_resized_server.rb rename to lib/fog/openstack/requests/compute/revert_resize_server.rb diff --git a/lib/fog/openstack/requests/compute/server_actions.rb b/lib/fog/openstack/requests/compute/server_actions.rb new file mode 100644 index 000000000..c233c0ed8 --- /dev/null +++ b/lib/fog/openstack/requests/compute/server_actions.rb @@ -0,0 +1,27 @@ +module Fog + module Compute + class OpenStack + class Real + # Retrieve server actions. + # + # === Parameters + # * server_id <~String> - The ID of the server to query for available actions. + # === Returns + # * actions <~Array> + def server_actions(server_id) + request( + :expects => 200, + :method => 'GET', + :path => "servers/#{server_id}/actions" + ).body['actions'] + end # def server_actions + end # class Real + + class Mock + def server_actions(server_id) + Array.new + end # def server_actions + end # class Mock + end # class OpenStack + end # module Compute +end # moduel Fog diff --git a/lib/fog/openstack/requests/compute/server_diagnostics.rb b/lib/fog/openstack/requests/compute/server_diagnostics.rb new file mode 100644 index 000000000..a6f3c77d5 --- /dev/null +++ b/lib/fog/openstack/requests/compute/server_diagnostics.rb @@ -0,0 +1,25 @@ +module Fog + module Compute + class OpenStack + class Real + # Retrieve server diagnostics. + # + # === Parameters + # * server_id <~String> - The ID of the server to retrieve diagnostics. + # === Returns + # * actions <~Array> + def server_diagnostics(server_id) + request( + :method => 'GET', + :path => "servers/#{server_id}/diagnostics" + ) + end # def server_diagnostics + end # class Real + + class Mock + def server_diagnostics(server_id) + end # def server_diagnostics + end # class Real + end # class OpenStack + end # module Compute +end # module Fog diff --git a/lib/fog/openstack/requests/compute/suspend_server.rb b/lib/fog/openstack/requests/compute/suspend_server.rb new file mode 100644 index 000000000..71f3ca76b --- /dev/null +++ b/lib/fog/openstack/requests/compute/suspend_server.rb @@ -0,0 +1,24 @@ +module Fog + module Compute + class OpenStack + class Real + # Suspend the server. + # + # === Parameters + # * server_id <~String> - The ID of the server to suspend. + # === Returns + # * success <~Boolean> + def suspend_server(server_id) + body = { 'suspend' => nil } + server_action(server_id, body).status == 202 + end # def suspend_server + end # class Real + + class Mock + def suspend_server(server_id) + true + end # def suspend_server + end # class Mock + end # class OpenStack + end # module Compute +end # module Fog diff --git a/lib/fog/openstack/requests/compute/unpause_server.rb b/lib/fog/openstack/requests/compute/unpause_server.rb new file mode 100644 index 000000000..003882b7f --- /dev/null +++ b/lib/fog/openstack/requests/compute/unpause_server.rb @@ -0,0 +1,24 @@ +module Fog + module Compute + class OpenStack + class Real + # Unpause the server. + # + # === Parameters + # * server_id <~String> - The ID of the server to unpause. + # === Returns + # * success <~Boolean> + def unpause_server(server_id) + body = { 'unpause' => nil } + server_action(server_id, body).status == 202 + end # def unpause_server + end # class Real + + class Mock + def unpause_server(server_id) + true + end # def unpause_server + end # class Mock + end # class OpenStack + end # module Compute +end # module Fog diff --git a/lib/fog/openstack/requests/compute/update_meta.rb b/lib/fog/openstack/requests/compute/update_meta.rb deleted file mode 100644 index 2515fdb76..000000000 --- a/lib/fog/openstack/requests/compute/update_meta.rb +++ /dev/null @@ -1,45 +0,0 @@ -module Fog - module Compute - class OpenStack - - class Real - - def update_meta(collection_name, parent_id, key, value) - request( - :body => Fog::JSON.encode({ 'meta' => { key => value }}), - :expects => 200, - :method => 'PUT', - :path => "#{collection_name}/#{parent_id}/metadata/#{key}" - ) - end - - end - - class Mock - - def update_meta(collection_name, parent_id, key, value) - - if collection_name == "images" then - if not list_images_detail.body['images'].detect {|_| _['id'] == parent_id} - raise Fog::Compute::OpenStack::NotFound - end - end - - if collection_name == "servers" then - if not list_servers_detail.body['servers'].detect {|_| _['id'] == parent_id} - raise Fog::Compute::OpenStack::NotFound - end - end - - response = Excon::Response.new - response.body = { "meta" => { key => value } } - response.status = 200 - response - - end - - end - - end - end -end diff --git a/lib/fog/openstack/requests/identity/create_role.rb b/lib/fog/openstack/requests/identity/create_role.rb index aaa49634b..7c207818e 100644 --- a/lib/fog/openstack/requests/identity/create_role.rb +++ b/lib/fog/openstack/requests/identity/create_role.rb @@ -23,8 +23,8 @@ module Fog response = Excon::Response.new response.status = 202 data = { - 'id' => Fog::Mock.random_numbers(6).to_s, - 'name' => name + 'id' => Fog::Mock.random_numbers(6).to_s, + 'name' => name } self.data[:roles][data['id']] = data response.body = { 'role' => data } diff --git a/lib/fog/openstack/requests/identity/create_user_role.rb b/lib/fog/openstack/requests/identity/create_user_role.rb index 3f34bc58f..31d3fc52a 100644 --- a/lib/fog/openstack/requests/identity/create_user_role.rb +++ b/lib/fog/openstack/requests/identity/create_user_role.rb @@ -14,7 +14,11 @@ module Fog end class Mock - + def create_user_role(tenant_id, user_id, role_id) + response = Excon::Response.new + response.status = 200 + response + end end end end diff --git a/lib/fog/openstack/requests/identity/delete_user_role.rb b/lib/fog/openstack/requests/identity/delete_user_role.rb index f5f0455fe..3ece474eb 100644 --- a/lib/fog/openstack/requests/identity/delete_user_role.rb +++ b/lib/fog/openstack/requests/identity/delete_user_role.rb @@ -14,7 +14,11 @@ module Fog end class Mock - + def delete_user_role(tenant_id, user_id, role_id) + response = Excon::Response.new + response.status = 200 + response + end end end end diff --git a/lib/fog/openstack/requests/identity/list_roles_for_user_on_tenant.rb b/lib/fog/openstack/requests/identity/list_roles_for_user_on_tenant.rb index 78b8559e2..14a5ccd6c 100644 --- a/lib/fog/openstack/requests/identity/list_roles_for_user_on_tenant.rb +++ b/lib/fog/openstack/requests/identity/list_roles_for_user_on_tenant.rb @@ -16,10 +16,7 @@ module Fog response = Excon::Response.new response.status = 200 response.body = { - 'roles' => [ - {'id' => '1', - 'name' => 'admin'} - ] + 'roles' => self.data[:roles] } response end # def list_roles_for_user_on_tenant diff --git a/tests/openstack/models/identity/role_tests.rb b/tests/openstack/models/identity/role_tests.rb index b5be550ee..d9bd7b569 100644 --- a/tests/openstack/models/identity/role_tests.rb +++ b/tests/openstack/models/identity/role_tests.rb @@ -1,7 +1,7 @@ Shindo.tests("Fog::Identity[:openstack] | role", ['openstack']) do @instance = Fog::Identity[:openstack].roles.new({:name => 'Role Name', :user_id => 1, :role_id => 1}) - @user = Fog::Identity[:openstack].users.all.first - @tenant = Fog::Identity[:openstack].tenants.all.first + @tenant = Fog::Identity[:openstack].tenants.create(:name => 'test_user') + @user = Fog::Identity[:openstack].users.create(:name => 'test_user', :tenant_id => @tenant.id, :password => 'spoof') tests('success') do tests('#save').returns(true) do @@ -20,5 +20,8 @@ Shindo.tests("Fog::Identity[:openstack] | role", ['openstack']) do @instance.destroy end end + + @user.destroy + @tenant.destroy end diff --git a/tests/openstack/models/identity/roles_tests.rb b/tests/openstack/models/identity/roles_tests.rb index 54db9e0b5..1b42177a3 100644 --- a/tests/openstack/models/identity/roles_tests.rb +++ b/tests/openstack/models/identity/roles_tests.rb @@ -1,7 +1,8 @@ Shindo.tests("Fog::Identity[:openstack] | roles", ['openstack']) do - @user = Fog::Identity[:openstack].users.all.first - @tenant = Fog::Identity[:openstack].tenants.all.first - @roles = Fog::Identity[:openstack].roles(:user => @user, :tenant => @tenant) + @tenant = Fog::Identity[:openstack].tenants.create(:name => 'test_user') + @user = Fog::Identity[:openstack].users.create(:name => 'test_user', :tenant_id => @tenant.id, :password => 'spoof') + @role = Fog::Identity[:openstack].roles(:user => @user, :tenant => @tenant).create(:name => 'test_role') + @roles = Fog::Identity[:openstack].roles(:user => @user, :tenant => @tenant) tests('success') do tests('#all').succeeds do @@ -12,4 +13,7 @@ Shindo.tests("Fog::Identity[:openstack] | roles", ['openstack']) do @roles.get @roles.first.id end end + + @user.destroy + @tenant.destroy end