From 52ba7d322d875a4d20c4651479bc7f608846e4f8 Mon Sep 17 00:00:00 2001 From: Haibin Huang Date: Mon, 28 Jan 2019 15:08:19 +0800 Subject: [PATCH] Add openoapi for starlingx Change-Id: Ifd5395ec49e1eb56d349270dbc13efc963fe7e67 Issue-ID: MULTICLOUD-428 Signed-off-by: Haibin Huang --- starlingx/starlingx/requests/__init__.py | 13 +++++++ starlingx/starlingx/requests/urls.py | 49 ++++++++++++++++++++++++++ starlingx/starlingx/requests/urlsV1.py | 49 ++++++++++++++++++++++++++ starlingx/starlingx/requests/views/__init__.py | 13 +++++++ starlingx/starlingx/urls.py | 9 +++++ 5 files changed, 133 insertions(+) create mode 100644 starlingx/starlingx/requests/__init__.py create mode 100644 starlingx/starlingx/requests/urls.py create mode 100644 starlingx/starlingx/requests/urlsV1.py create mode 100644 starlingx/starlingx/requests/views/__init__.py diff --git a/starlingx/starlingx/requests/__init__.py b/starlingx/starlingx/requests/__init__.py new file mode 100644 index 00000000..81362a2b --- /dev/null +++ b/starlingx/starlingx/requests/__init__.py @@ -0,0 +1,13 @@ +# Copyright (c) 2019 Intel Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/starlingx/starlingx/requests/urls.py b/starlingx/starlingx/requests/urls.py new file mode 100644 index 00000000..fbd088e3 --- /dev/null +++ b/starlingx/starlingx/requests/urls.py @@ -0,0 +1,49 @@ +# Copyright (c) 2019 Intel Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from django.conf.urls import url +from rest_framework.urlpatterns import format_suffix_patterns + +from newton_base.openoapi import network +from newton_base.openoapi import subnet +from newton_base.openoapi import image +from newton_base.openoapi import volume +from newton_base.openoapi import server +from newton_base.openoapi import vport +from newton_base.openoapi import limits +from newton_base.openoapi import hosts +from newton_base.openoapi import flavor + +urlpatterns = [ + url(r'^networks(/(?P[0-9a-zA-Z_-]+))?', + network.Networks.as_view()), + url(r'^subnets(/(?P[0-9a-zA-Z_-]+))?', + subnet.Subnets.as_view()), + url(r'^images(/(?P[0-9a-zA-Z_-]+))?', + image.Images.as_view()), + url(r'^volumes(/(?P[0-9a-zA-Z_-]+))?', + volume.Volumes.as_view()), + url(r'^servers(/(?P[0-9a-zA-Z_-]+))/action/?$', + server.ServerAction.as_view()), + url(r'^servers(/(?P[0-9a-zA-Z_-]+))?', + server.Servers.as_view()), + url(r'^ports(/(?P[0-9a-zA-Z_-]+))?', + vport.Vports.as_view()), + url(r'^flavors(/(?P[0-9a-zA-Z_-]+))?', + flavor.Flavors.as_view()), + url(r'^limits$', limits.Limits.as_view()), + url(r'^hosts(/(?P[0-9a-zA-Z_-]+))?', hosts.Hosts.as_view()), +] + +urlpatterns = format_suffix_patterns(urlpatterns) diff --git a/starlingx/starlingx/requests/urlsV1.py b/starlingx/starlingx/requests/urlsV1.py new file mode 100644 index 00000000..1318e82b --- /dev/null +++ b/starlingx/starlingx/requests/urlsV1.py @@ -0,0 +1,49 @@ +# Copyright (c) 2019 Intel Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from django.conf.urls import url +from rest_framework.urlpatterns import format_suffix_patterns + +from newton_base.openoapi import network +from newton_base.openoapi import subnet +from newton_base.openoapi import image +from newton_base.openoapi import volume +from newton_base.openoapi import server +from newton_base.openoapi import vport +from newton_base.openoapi import limits +from newton_base.openoapi import hosts +from newton_base.openoapi import flavor + +urlpatterns = [ + url(r'^networks(/(?P[0-9a-zA-Z_-]+))?', + network.APIv1Networks.as_view()), + url(r'^subnets(/(?P[0-9a-zA-Z_-]+))?', + subnet.APIv1Subnets.as_view()), + url(r'^images(/(?P[0-9a-zA-Z_-]+))?', + image.APIv1Images.as_view()), + url(r'^volumes(/(?P[0-9a-zA-Z_-]+))?', + volume.APIv1Volumes.as_view()), + url(r'^servers(/(?P[0-9a-zA-Z_-]+))/action/?$', + server.APIv1ServerAction.as_view()), + url(r'^servers(/(?P[0-9a-zA-Z_-]+))?', + server.APIv1Servers.as_view()), + url(r'^ports(/(?P[0-9a-zA-Z_-]+))?', + vport.APIv1Vports.as_view()), + url(r'^flavors(/(?P[0-9a-zA-Z_-]+))?', + flavor.APIv1Flavors.as_view()), + url(r'^limits$', limits.APIv1Limits.as_view()), + url(r'^hosts(/(?P[0-9a-zA-Z_-]+))?', hosts.APIv1Hosts.as_view()), +] + +urlpatterns = format_suffix_patterns(urlpatterns) diff --git a/starlingx/starlingx/requests/views/__init__.py b/starlingx/starlingx/requests/views/__init__.py new file mode 100644 index 00000000..81362a2b --- /dev/null +++ b/starlingx/starlingx/requests/views/__init__.py @@ -0,0 +1,13 @@ +# Copyright (c) 2019 Intel Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/starlingx/starlingx/urls.py b/starlingx/starlingx/urls.py index 2795f324..d2a7c57f 100644 --- a/starlingx/starlingx/urls.py +++ b/starlingx/starlingx/urls.py @@ -14,6 +14,7 @@ from django.conf.urls import include, url from starlingx_base.registration import registration +from newton_base.openoapi import tenants urlpatterns = [ url(r'^', include('starlingx.swagger.urls')), @@ -26,6 +27,10 @@ urlpatterns = [ registration.Registry.as_view()), url(r'^api/multicloud-starlingx/v0/(?P[0-9a-zA-Z_-]+)/', include('starlingx.proxy.urls')), + url(r'^api/multicloud-starlingx/v0/(?P[0-9a-zA-Z_-]+)/tenants/?$', + tenants.Tenants.as_view()), + url(r'^api/multicloud-starlingx/v0/(?P[0-9a-zA-Z_-]+)/' + '(?P[0-9a-zA-Z_-]{20,})/', include('starlingx.requests.urls')), # API v1, depreciated due to MULTICLOUD-335 url(r'^api/multicloud-starlingx/v1/(?P[0-9a-zA-Z_-]+)/(?P[0-9a-zA-Z_-]+)/registry/?$', @@ -34,4 +39,8 @@ urlpatterns = [ registration.APIv1Registry.as_view()), url(r'^api/multicloud-starlingx/v1/(?P[0-9a-zA-Z_-]+)/(?P[0-9a-zA-Z_-]+)/', include('starlingx.proxy.urlsV1')), + url(r'^api/multicloud-starlingx/v1/(?P[0-9a-zA-Z_-]+)/(?P[0-9a-zA-Z_-]+)/tenants/?$', + tenants.APIv1Tenants.as_view()), + url(r'^api/multicloud-starlingx/v1/(?P[0-9a-zA-Z_-]+)/(?P[0-9a-zA-Z_-]+)/' + '(?P[0-9a-zA-Z_-]{20,})/', include('starlingx.requests.urlsV1')), ] -- 2.16.6