Module: Ropenstack::Networking::Version2::Extensions::L3

Included in:
Ropenstack::Networking
Defined in:
lib/ropenstack/networking/v2/extensions/l3.rb

Instance Method Summary collapse

Instance Method Details

#add_router_gateway(router, network_id) ⇒ Object

Enable external connectivity through this router by connecting it to an “external network”



66
67
68
69
# File 'lib/ropenstack/networking/v2/extensions/l3.rb', line 66

def add_router_gateway(router, network_id)
  data = { 'router' => {'external_gateway_info' => { 'network_id' => network_id }}}
  return put_request(address("routers/"+router), data, @token)
end

#add_router_interface(router, subnet) ⇒ Object

Connect a router to a subnet, given router id and subnet id.



40
41
42
43
# File 'lib/ropenstack/networking/v2/extensions/l3.rb', line 40

def add_router_interface(router, subnet)
  data = { 'subnet_id' => subnet } 
  return put_request(address("routers/"+router+"/add_router_interface"), data, @token)
end

#create_floating_ip(network, port = nil) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
# File 'lib/ropenstack/networking/v2/extensions/l3.rb', line 86

def create_floating_ip(network, port = nil)
  data = {
    'floatingip' => {
      'floating_network_id' => network
    }
  }
  unless port.nil?
    data['floatingip']['port_id'] = port
  end
  return post_request(address('floatingips'), data, @token)
end

#create_router(name, admin_state_up = true) ⇒ Object

Create a new router with a given name.



20
21
22
23
24
25
26
27
28
# File 'lib/ropenstack/networking/v2/extensions/l3.rb', line 20

def create_router(name, admin_state_up = true)
  data = {
    'router' =>{
      'name' => name,
      'admin_state_up' => admin_state_up,
    }   
  }
  return post_request(address("routers"), data, @token)
end

#delete_floating_ip(id) ⇒ Object



98
99
100
# File 'lib/ropenstack/networking/v2/extensions/l3.rb', line 98

def delete_floating_ip(id)
  return delete_request(address("floatingips/#{id}"), @token)
end

#delete_router(router) ⇒ Object

Delete a router given a routers id.



33
34
35
# File 'lib/ropenstack/networking/v2/extensions/l3.rb', line 33

def delete_router(router)
  return delete_request(address("routers/" + router), @token)
end

#delete_router_gateway(router) ⇒ Object

Clear a routers external gateway information given a router id.



74
75
76
77
# File 'lib/ropenstack/networking/v2/extensions/l3.rb', line 74

def delete_router_gateway(router)
  data = { 'router' => {'external_gateway_info' => nil}}
  return put_request(address('routers/' + router), data, @token)
end

#delete_router_interface(router, id, type) ⇒ Object

Delete a connection between a subnet and router given either port or subnet ids.

:call-seq:

delete_router_interface(router_id, subnet_id, "subnet")
delete_router_interface(router_id, port_id, "port")


53
54
55
56
57
58
59
60
# File 'lib/ropenstack/networking/v2/extensions/l3.rb', line 53

def delete_router_interface(router, id, type)
  data = case type
    when 'port' then { 'port_id' => id }
    when 'subnet' then { 'subnet_id' => id } 
    else raise "Invalid Interface Type"  
    end
  return put_request(address("routers/" + router + "/remove_router_interface"), data, @token)
end

#floating_ipsObject

Get a full list of floating ips for the tenant



82
83
84
# File 'lib/ropenstack/networking/v2/extensions/l3.rb', line 82

def floating_ips
  return get_request(address("floatingips"), @token)
end

#routers(id = nil) ⇒ Object

Get a list of a tenants routers

:call-seq:

routers(id) => A single router with the id matching the parameter
routers => All routers visible to the tenant making the request


10
11
12
13
14
15
16
# File 'lib/ropenstack/networking/v2/extensions/l3.rb', line 10

def routers(id = nil)
  endpoint = "routers"
  unless id.nil?
    endpoint = endpoint + "/" + id
  end
  return get_request(address(endpoint), @token)
end

#update_floating_ip(id, port) ⇒ Object



102
103
104
105
106
107
108
109
# File 'lib/ropenstack/networking/v2/extensions/l3.rb', line 102

def update_floating_ip(id, port)
  data = {
    'floatingip' => {
      'port_id' => port
    }
  }
  return put_request(address("floatingips/#{id}"), data, @token)
end