From 963817d43914488a93bb99450f40b398d6f47fbc Mon Sep 17 00:00:00 2001 From: Sergio Rubio Date: Tue, 26 Mar 2013 19:49:10 +0100 Subject: [PATCH] [openstack|network] mock fixes in some OpenStack Network requests Updated mocks in some network request fixing some issues and keeping the mocking style used in other requests. --- .../requests/network/create_router.rb | 15 +++--- .../openstack/requests/network/get_router.rb | 13 +----- .../requests/network/list_routers.rb | 2 +- .../requests/network/update_router.rb | 46 +++++++++---------- 4 files changed, 33 insertions(+), 43 deletions(-) diff --git a/lib/fog/openstack/requests/network/create_router.rb b/lib/fog/openstack/requests/network/create_router.rb index 1b9a8dbdc..23af14b00 100644 --- a/lib/fog/openstack/requests/network/create_router.rb +++ b/lib/fog/openstack/requests/network/create_router.rb @@ -38,16 +38,15 @@ module Fog response.status = 201 data = { 'router' => { - 'status' => 'ACTIVE', - 'external_gateway_info' => nil, - 'name' => 'another_router', - 'admin_state_up' => true, - 'tenant_id' => '6b96ff0cb17a4b859e1e575d221683d3', - 'id' => '8604a0de-7f6b-409a-a47c-a1cc7bc77b2e' + 'id' => Fog::Mock.random_numbers(6).to_s, + 'status' => options[:status] || 'ACTIVE', + 'external_gateway_info' => options[:external_gateway_info], + 'name' => name, + 'admin_state_up' => options[:admin_state_up], + 'tenant_id' => '6b96ff0cb17a4b859e1e575d221683d3' } } - self.data['routers'] ||= [] - self.data['routers'] << data['router'] + self.data[:routers][data['router']['id']] = data['router'] response.body = data response end diff --git a/lib/fog/openstack/requests/network/get_router.rb b/lib/fog/openstack/requests/network/get_router.rb index 7e58a7514..b512606f6 100644 --- a/lib/fog/openstack/requests/network/get_router.rb +++ b/lib/fog/openstack/requests/network/get_router.rb @@ -15,19 +15,10 @@ module Fog class Mock def get_router(router_id) response = Excon::Response.new - if data = (self.data['routers'].find { |r| r['id'] == router_id }) + if data = (self.data[:routers].find { |id,value| id == router_id }) response.status = 200 response.body = { - 'router' => { - 'status' => 'ACTIVE', - 'external_gateway_info' => { - 'network_id' => '3c5bcddd-6af9-4e6b-9c3e-c153e521cab8' - }, - 'name' => 'router1', - 'admin_state_up' => true, - 'tenant_id' => '33a40233088643acb66ff6eb0ebea679', - 'id' => 'a9254bdb-2613-4a13-ac4c-adc581fba50d' - } + 'router' => data[1], } response else diff --git a/lib/fog/openstack/requests/network/list_routers.rb b/lib/fog/openstack/requests/network/list_routers.rb index 18172f81b..3f692c369 100644 --- a/lib/fog/openstack/requests/network/list_routers.rb +++ b/lib/fog/openstack/requests/network/list_routers.rb @@ -16,7 +16,7 @@ module Fog class Mock def list_routers(filters = {}) Excon::Response.new( - :body => { 'routers' => self.data['routers'] }, + :body => { 'routers' => self.data[:routers].values }, :status => 200 ) end diff --git a/lib/fog/openstack/requests/network/update_router.rb b/lib/fog/openstack/requests/network/update_router.rb index 19d5cda47..7d2b1d72e 100644 --- a/lib/fog/openstack/requests/network/update_router.rb +++ b/lib/fog/openstack/requests/network/update_router.rb @@ -53,30 +53,30 @@ module Fog class Mock def update_router(router_id, options = {}) - router = self.data['routers'].find { |r| r['id'] == router_id } - raise Fog::Network::OpenStack::NotFound unless router - data = { 'router' => router } - - vanilla_options = [:name, :admin_state_up] - - egi = options[:external_gateway_info] - if egi - if egi.is_a?(Fog::Network::OpenStack::Network) - data['router']['external_gateway_info'] = { 'network_id' => egi.id } - elsif egi.is_a?(Hash) and egi['network_id'] - data['router']['external_gateway_info'] = egi - else - raise ArgumentError.new('Invalid external_gateway_info attribute') - end - end - - vanilla_options.reject{ |o| options[o].nil? }.each do |key| - data['router'][key] = options[key] - end response = Excon::Response.new - response.status = 201 - response.body = data - response + router = list_routers.body['routers'].detect do |_| + _['id'] == router_id + end + if router + egi = options[:external_gateway_info] + if egi + if egi.is_a?(Fog::Network::OpenStack::Network) + router['external_gateway_info'] = { 'network_id' => egi.id } + elsif egi.is_a?(Hash) and egi['network_id'] + router['external_gateway_info'] = egi + else + raise ArgumentError.new('Invalid external_gateway_info attribute') + end + end + options.keys.each do |k| + router[k.to_s] = options[k] + end + response.body = { 'router' => router } + response.status = 200 + response + else + raise Fog::Network::OpenStack::NotFound + end end end