Network delete.
authorFrantišek Dvořák <valtri@civ.zcu.cz>
Tue, 13 Sep 2016 18:10:01 +0000 (20:10 +0200)
committerFrantišek Dvořák <valtri@civ.zcu.cz>
Tue, 13 Sep 2016 18:10:17 +0000 (20:10 +0200)
README.md
lib/api.rb
lib/nebula.rb
swagger.yaml

index 316694d..5be8fb9 100644 (file)
--- 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
 
index da91ffa..a142a81 100644 (file)
@@ -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
index 3cbe1a7..c956e9d 100644 (file)
@@ -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)
index 9bc798c..861ebf1 100644 (file)
@@ -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"