From 1902d287618626d054cbb0e05329a259e6e64796 Mon Sep 17 00:00:00 2001 From: Chris Yeoh Date: Thu, 1 Nov 2012 10:49:53 +1030 Subject: [PATCH] Adds API for bulk creation/deletion of floating IPs This adds an extension that provides a REST API for the bulk creation, deletion and listing of floating IPs. The interface is accessed via /v2/{tenant_id}/os-floating-ips-bulk This forms part of the work to provide APIs for functionality currently implemented by nova-manage that needs direct db access so nova-manage can eventually be removed Implements: blueprint apis-for-nova-manage DocImpact Change-Id: I621e2b070a896f7230cdf3f26f78ded85e72cf16 --- .../floating-ips-bulk-create-req.json | 8 ++++++ .../floating-ips-bulk-create-req.xml | 6 +++++ .../floating-ips-bulk-create-resp.json | 7 ++++++ .../floating-ips-bulk-create-resp.xml | 6 +++++ .../floating-ips-bulk-delete-req.json | 3 +++ .../floating-ips-bulk-delete-req.xml | 2 ++ .../floating-ips-bulk-delete-resp.json | 3 +++ .../floating-ips-bulk-delete-resp.xml | 2 ++ .../floating-ips-bulk-list-by-host-resp.json | 11 ++++++++ .../floating-ips-bulk-list-by-host-resp.xml | 10 ++++++++ .../floating-ips-bulk-list-resp.json | 25 +++++++++++++++++++ .../floating-ips-bulk-list-resp.xml | 24 ++++++++++++++++++ nova/tests/policy.json | 1 + 13 files changed, 108 insertions(+) create mode 100644 doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.json create mode 100644 doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.xml create mode 100644 doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.json create mode 100644 doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.xml create mode 100644 doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.json create mode 100644 doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.xml create mode 100644 doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.json create mode 100644 doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.xml create mode 100644 doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-resp.json create mode 100644 doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-resp.xml create mode 100644 doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.json create mode 100644 doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.xml diff --git a/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.json b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.json new file mode 100644 index 000000000..d174bad5a --- /dev/null +++ b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.json @@ -0,0 +1,8 @@ +{ + "floating_ips_bulk_create" : + { + "ip_range": "192.168.1.0/24", + "pool": "nova", + "interface": "eth0" + } +} \ No newline at end of file diff --git a/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.xml b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.xml new file mode 100644 index 000000000..1fc730509 --- /dev/null +++ b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-req.xml @@ -0,0 +1,6 @@ + + +192.168.1.0/24 +nova +eth0 + \ No newline at end of file diff --git a/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.json b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.json new file mode 100644 index 000000000..ef1cbfb17 --- /dev/null +++ b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.json @@ -0,0 +1,7 @@ +{ + "floating_ips_bulk_create": { + "interface": "eth0", + "ip_range": "192.168.1.0/24", + "pool": "nova" + } +} \ No newline at end of file diff --git a/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.xml b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.xml new file mode 100644 index 000000000..db80bbfc1 --- /dev/null +++ b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-create-resp.xml @@ -0,0 +1,6 @@ + + + eth0 + 192.168.1.0/24 + nova + \ No newline at end of file diff --git a/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.json b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.json new file mode 100644 index 000000000..df59c1a73 --- /dev/null +++ b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.json @@ -0,0 +1,3 @@ +{ + "ip_range": "192.168.1.0/24" +} \ No newline at end of file diff --git a/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.xml b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.xml new file mode 100644 index 000000000..c40f28dc3 --- /dev/null +++ b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-req.xml @@ -0,0 +1,2 @@ + +192.168.1.0/24 \ No newline at end of file diff --git a/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.json b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.json new file mode 100644 index 000000000..166984b24 --- /dev/null +++ b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.json @@ -0,0 +1,3 @@ +{ + "floating_ips_bulk_delete": "192.168.1.0/24" +} \ No newline at end of file diff --git a/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.xml b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.xml new file mode 100644 index 000000000..3d77af334 --- /dev/null +++ b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-delete-resp.xml @@ -0,0 +1,2 @@ + +192.168.1.0/24 \ No newline at end of file diff --git a/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-resp.json b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-resp.json new file mode 100644 index 000000000..0eaaf75ae --- /dev/null +++ b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-resp.json @@ -0,0 +1,11 @@ +{ + "floating_ip_info": [ + { + "address": "10.10.10.3", + "instance_uuid": null, + "interface": "eth0", + "pool": "nova", + "project_id": null + } + ] +} \ No newline at end of file diff --git a/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-resp.xml b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-resp.xml new file mode 100644 index 000000000..4c3c8cd9c --- /dev/null +++ b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-by-host-resp.xml @@ -0,0 +1,10 @@ + + + + eth0 + None + None + nova +
10.10.10.3
+
+
\ No newline at end of file diff --git a/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.json b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.json new file mode 100644 index 000000000..de1e622bb --- /dev/null +++ b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.json @@ -0,0 +1,25 @@ +{ + "floating_ip_info": [ + { + "address": "10.10.10.1", + "instance_uuid": null, + "interface": "eth0", + "pool": "nova", + "project_id": null + }, + { + "address": "10.10.10.2", + "instance_uuid": null, + "interface": "eth0", + "pool": "nova", + "project_id": null + }, + { + "address": "10.10.10.3", + "instance_uuid": null, + "interface": "eth0", + "pool": "nova", + "project_id": null + } + ] +} \ No newline at end of file diff --git a/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.xml b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.xml new file mode 100644 index 000000000..6ef85bd87 --- /dev/null +++ b/doc/api_samples/os-floating-ips-bulk/floating-ips-bulk-list-resp.xml @@ -0,0 +1,24 @@ + + + + eth0 + None + None + nova +
10.10.10.1
+
+ + eth0 + None + None + nova +
10.10.10.2
+
+ + eth0 + None + None + nova +
10.10.10.3
+
+
\ No newline at end of file diff --git a/nova/tests/policy.json b/nova/tests/policy.json index b08e89baa..33c5c96f2 100644 --- a/nova/tests/policy.json +++ b/nova/tests/policy.json @@ -105,6 +105,7 @@ "compute_extension:floating_ip_dns": "", "compute_extension:floating_ip_pools": "", "compute_extension:floating_ips": "", + "compute_extension:floating_ips_bulk": "", "compute_extension:fping": "", "compute_extension:fping:all_tenants": "is_admin:True", "compute_extension:hosts": "",