From d2dc42173bdb9e199fea3c106aef6a5decf6f54c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Franti=C5=A1ek=20Dvo=C5=99=C3=A1k?= Date: Tue, 13 Sep 2016 20:10:01 +0200 Subject: [PATCH] Network delete. --- README.md | 7 +++++-- lib/api.rb | 11 +++++++++++ lib/nebula.rb | 9 ++++++++- swagger.yaml | 21 +++++++++++++++++++++ 4 files changed, 45 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 316694d..5be8fb9 100644 --- a/README.md +++ b/README.md @@ -25,14 +25,17 @@ Launch NOW: ## Usage -List networks example: +List networks: *curl http://now.example.com:9292/network?user=myuser* -Create the network: +Create network: *curl -i -X POST -d '{ "title": "example1", "description": "Example network", "range": { "address": "fc00::0001::/64", "allocation": "dynamic" }, "vlan": 1}' http://now.example.com:9292/network?user=myuser* +Delete network: + + *curl -i -X DELETE http://now.example.com:9292/network/1?user=myuser* ## Development diff --git a/lib/api.rb b/lib/api.rb index da91ffa..a142a81 100644 --- a/lib/api.rb +++ b/lib/api.rb @@ -86,5 +86,16 @@ module Now halt e.code, e.message end end + + delete '/network/:id' do + cross_origin + begin + switch_user(params['user']) + nebula.delete_network(params['id']) + rescue NowError => e + logger.error "[HTTP #{e.code}] #{e.message}" + halt e.code, e.message + end + end end end diff --git a/lib/nebula.rb b/lib/nebula.rb index 3cbe1a7..c956e9d 100644 --- a/lib/nebula.rb +++ b/lib/nebula.rb @@ -105,11 +105,18 @@ module Now check(vn.allocate(template)) id = vn.id.to_s - logger.debug "[create_network] created network: #{id}" + logger.info "[create_network] created network: #{id}" return id end + def delete_network(network_id) + vn_generic = OpenNebula::VirtualNetwork.build_xml(network_id) + vn = OpenNebula::VirtualNetwork.new(vn_generic, @ctx) + check(vn.delete) + logger.info "[delete_network] deleted network: #{network_id}" + end + private def error_one2http(errno) diff --git a/swagger.yaml b/swagger.yaml index 9bc798c..861ebf1 100644 --- a/swagger.yaml +++ b/swagger.yaml @@ -85,6 +85,27 @@ paths: description: "KO" schema: type: "string" + delete: + summary: "Delete network" + parameters: + - in: "path" + name: "id" + description: "Network ID" + required: true + type: "integer" + format: "int64" + - in: "query" + name: "user" + description: "OpenNebula user identity" + required: false + type: "string" + responses: + 200: + description: "Network deleted" + default: + description: "KO" + schema: + type: "string" definitions: Range: description: "Address range" -- 1.8.2.3