mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
67 lines
No EOL
2.5 KiB
Ruby
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 |