1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/hp/requests/network/remove_router_interface.rb

67 lines
No EOL
2.5 KiB
Ruby

module Fog
module HP
class Network
class Real
# Remove an internal router interface, thus detaching a subnet or a port from an existing router
#
# ==== Parameters
# * 'router_id'<~String>: - UUId for the router
# * 'subnet_id'<~String>: - UUId for the subnet (Either a subnet or a port can be passed, not both)
# * 'port_id'<~String>: - UUId for the port (Either a subnet or a port can be passed, not both)
#
# ==== Returns
# * response<~Excon::Response>:
# * body<~Hash>:
# * 'subnet_id'<~String>: - UUId for the subnet
# * 'port_id'<~String>: - UUId for the port
def remove_router_interface(router_id, subnet_id=nil, port_id=nil, options = {})
# Either a subnet or a port can be passed, not both
if (subnet_id && port_id) || (subnet_id.nil? && port_id.nil?)
raise ArgumentError.new('Bad router request: Cannot specify both subnet-id and port-id')
end
if subnet_id
data = { 'subnet_id' => subnet_id }
elsif port_id
data = { 'port_id' => port_id }
end
request(
:body => Fog::JSON.encode(data),
:expects => 200,
:method => 'PUT',
:path => "routers/#{router_id}/remove_router_interface"
)
end
end
class Mock
def remove_router_interface(router_id, subnet_id=nil, port_id=nil, options = {})
response = Excon::Response.new
if list_routers.body['routers'].detect {|_| _['id'] == router_id}
# Either a subnet or a port can be passed, not both
if (subnet_id && port_id) || (subnet_id.nil? && port_id.nil?)
raise ArgumentError.new('Either a subnet or a port can be passed, not both')
end
# delete the port
if port_id
delete_port(port_id)
elsif subnet_id
ports = self.data[:ports].select {|p| self.data[:ports]["#{p}"]['device_id'] == router_id }
#&& self.data[:ports]["#{p}"]['network_id'] == self.data[:subnets][subnet_id]['network_id']}
ports.each do |key, _|
delete_port(key)
end
end
response.status = 200
response
else
raise Fog::HP::Network::NotFound
end
end
end
end
end
end