Skip to content

Instantly share code, notes, and snippets.

@rubiojr
Last active December 14, 2015 11:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rubiojr/5082430 to your computer and use it in GitHub Desktop.
Save rubiojr/5082430 to your computer and use it in GitHub Desktop.
diff --git a/lib/fog/openstack/requests/network/update_router.rb b/lib/fog/openstack/requests/network/update_router.rb
index af25c77..1012030 100644
--- a/lib/fog/openstack/requests/network/update_router.rb
+++ b/lib/fog/openstack/requests/network/update_router.rb
@@ -53,20 +53,30 @@ module Fog
class Mock
def update_router(router_id, options = {})
- raise Fog::Network::OpenStack::NotFound if router_id == 0
+ 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
- data = {
- 'status' => 'ACTIVE',
- 'external_gateway_info' => {
- 'network_id' => '8ca37218-28ff-41cb-9b10-039601ea7e6b'
- },
- 'name' => 'another_router',
- 'admin_state_up' => true,
- 'tenant_id' => '6b96ff0cb17a4b859e1e575d221683d3',
- 'id' => '8604a0de-7f6b-409a-a47c-a1cc7bc77b2e'
- }
- response.body = { 'router' => data }
+ response.body = data
response
end
end
diff --git a/tests/openstack/models/network/router_tests.rb b/tests/openstack/models/network/router_tests.rb
index faad48a..9390fe8 100644
--- a/tests/openstack/models/network/router_tests.rb
+++ b/tests/openstack/models/network/router_tests.rb
@@ -5,7 +5,7 @@ Shindo.tests("Fog::Network[:openstack] | router", ['openstack']) do
tests('#create').succeeds do
@instance = Fog::Network[:openstack].routers.create(
:name => 'router_name',
- :admin_state_up => true,
+ :admin_state_up => true
)
!@instance.id.nil?
end
diff --git a/tests/openstack/models/network/routers_tests.rb b/tests/openstack/models/network/routers_tests.rb
index 9aca47d..f21014a 100644
--- a/tests/openstack/models/network/routers_tests.rb
+++ b/tests/openstack/models/network/routers_tests.rb
@@ -1,7 +1,7 @@
Shindo.tests("Fog::Network[:openstack] | routers", ['openstack']) do
@router = Fog::Network[:openstack].routers.create(
:name => 'router_name',
- :admin_state_up => true,
+ :admin_state_up => true
)
@routers = Fog::Network[:openstack].routers
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment