Deprecate Baremetal and fping API
This patch deprecates Baremetal and fping API. All of those APIs will return 404 after new Microversion. The deprecated API endpoints are '/os-fping' '/os-baremetal-nodes' This patch doesn't bump the max api version, due to the patch separation. The max api version will bump in the last patch. Partially implements blueprint deprecate-api-proxies Change-Id: I92064cbcb5f6414da0c9d294f912a860428af698
This commit is contained in:
parent
83bd45bbcf
commit
b6f2d8310d
@ -19,6 +19,8 @@
|
|||||||
from oslo_utils import importutils
|
from oslo_utils import importutils
|
||||||
import webob
|
import webob
|
||||||
|
|
||||||
|
from nova.api.openstack.api_version_request \
|
||||||
|
import MAX_PROXY_API_SUPPORT_VERSION
|
||||||
from nova.api.openstack import common
|
from nova.api.openstack import common
|
||||||
from nova.api.openstack import extensions
|
from nova.api.openstack import extensions
|
||||||
from nova.api.openstack import wsgi
|
from nova.api.openstack import wsgi
|
||||||
@ -80,6 +82,7 @@ class BareMetalNodeController(wsgi.Controller):
|
|||||||
d[f] = node_ref.get(f)
|
d[f] = node_ref.get(f)
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
@wsgi.Controller.api_version("2.1", MAX_PROXY_API_SUPPORT_VERSION)
|
||||||
@extensions.expected_errors((404, 501))
|
@extensions.expected_errors((404, 501))
|
||||||
def index(self, req):
|
def index(self, req):
|
||||||
context = req.environ['nova.context']
|
context = req.environ['nova.context']
|
||||||
@ -100,6 +103,7 @@ class BareMetalNodeController(wsgi.Controller):
|
|||||||
nodes.append(node)
|
nodes.append(node)
|
||||||
return {'nodes': nodes}
|
return {'nodes': nodes}
|
||||||
|
|
||||||
|
@wsgi.Controller.api_version("2.1", MAX_PROXY_API_SUPPORT_VERSION)
|
||||||
@extensions.expected_errors((404, 501))
|
@extensions.expected_errors((404, 501))
|
||||||
def show(self, req, id):
|
def show(self, req, id):
|
||||||
context = req.environ['nova.context']
|
context = req.environ['nova.context']
|
||||||
@ -125,19 +129,23 @@ class BareMetalNodeController(wsgi.Controller):
|
|||||||
node['interfaces'].append({'address': port.address})
|
node['interfaces'].append({'address': port.address})
|
||||||
return {'node': node}
|
return {'node': node}
|
||||||
|
|
||||||
|
@wsgi.Controller.api_version("2.1", MAX_PROXY_API_SUPPORT_VERSION)
|
||||||
@extensions.expected_errors(400)
|
@extensions.expected_errors(400)
|
||||||
def create(self, req, body):
|
def create(self, req, body):
|
||||||
_no_ironic_proxy("node-create")
|
_no_ironic_proxy("node-create")
|
||||||
|
|
||||||
|
@wsgi.Controller.api_version("2.1", MAX_PROXY_API_SUPPORT_VERSION)
|
||||||
@extensions.expected_errors(400)
|
@extensions.expected_errors(400)
|
||||||
def delete(self, req, id):
|
def delete(self, req, id):
|
||||||
_no_ironic_proxy("node-delete")
|
_no_ironic_proxy("node-delete")
|
||||||
|
|
||||||
|
@wsgi.Controller.api_version("2.1", MAX_PROXY_API_SUPPORT_VERSION)
|
||||||
@wsgi.action('add_interface')
|
@wsgi.action('add_interface')
|
||||||
@extensions.expected_errors(400)
|
@extensions.expected_errors(400)
|
||||||
def _add_interface(self, req, id, body):
|
def _add_interface(self, req, id, body):
|
||||||
_no_ironic_proxy("port-create")
|
_no_ironic_proxy("port-create")
|
||||||
|
|
||||||
|
@wsgi.Controller.api_version("2.1", MAX_PROXY_API_SUPPORT_VERSION)
|
||||||
@wsgi.action('remove_interface')
|
@wsgi.action('remove_interface')
|
||||||
@extensions.expected_errors(400)
|
@extensions.expected_errors(400)
|
||||||
def _remove_interface(self, req, id, body):
|
def _remove_interface(self, req, id, body):
|
||||||
|
@ -20,6 +20,8 @@ import os
|
|||||||
import six
|
import six
|
||||||
from webob import exc
|
from webob import exc
|
||||||
|
|
||||||
|
from nova.api.openstack.api_version_request \
|
||||||
|
import MAX_PROXY_API_SUPPORT_VERSION
|
||||||
from nova.api.openstack import common
|
from nova.api.openstack import common
|
||||||
from nova.api.openstack import extensions
|
from nova.api.openstack import extensions
|
||||||
from nova.api.openstack import wsgi
|
from nova.api.openstack import wsgi
|
||||||
@ -67,6 +69,7 @@ class FpingController(wsgi.Controller):
|
|||||||
ret += [ip["address"] for ip in all_ips]
|
ret += [ip["address"] for ip in all_ips]
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
@wsgi.Controller.api_version("2.1", MAX_PROXY_API_SUPPORT_VERSION)
|
||||||
@extensions.expected_errors(503)
|
@extensions.expected_errors(503)
|
||||||
def index(self, req):
|
def index(self, req):
|
||||||
context = req.environ["nova.context"]
|
context = req.environ["nova.context"]
|
||||||
@ -117,6 +120,7 @@ class FpingController(wsgi.Controller):
|
|||||||
})
|
})
|
||||||
return {"servers": res}
|
return {"servers": res}
|
||||||
|
|
||||||
|
@wsgi.Controller.api_version("2.1", MAX_PROXY_API_SUPPORT_VERSION)
|
||||||
@extensions.expected_errors((404, 503))
|
@extensions.expected_errors((404, 503))
|
||||||
def show(self, req, id):
|
def show(self, req, id):
|
||||||
context = req.environ["nova.context"]
|
context = req.environ["nova.context"]
|
||||||
|
@ -22,16 +22,12 @@ from webob import exc
|
|||||||
from nova.api.openstack.compute import baremetal_nodes \
|
from nova.api.openstack.compute import baremetal_nodes \
|
||||||
as b_nodes_v21
|
as b_nodes_v21
|
||||||
from nova import context
|
from nova import context
|
||||||
|
from nova import exception
|
||||||
from nova import test
|
from nova import test
|
||||||
|
from nova.tests.unit.api.openstack import fakes
|
||||||
from nova.tests.unit.virt.ironic import utils as ironic_utils
|
from nova.tests.unit.virt.ironic import utils as ironic_utils
|
||||||
|
|
||||||
|
|
||||||
class FakeRequest(object):
|
|
||||||
|
|
||||||
def __init__(self, context):
|
|
||||||
self.environ = {"nova.context": context}
|
|
||||||
|
|
||||||
|
|
||||||
def fake_node(**updates):
|
def fake_node(**updates):
|
||||||
node = {
|
node = {
|
||||||
'id': 1,
|
'id': 1,
|
||||||
@ -74,7 +70,7 @@ class BareMetalNodesTestV21(test.NoDBTestCase):
|
|||||||
|
|
||||||
self._setup()
|
self._setup()
|
||||||
self.context = context.get_admin_context()
|
self.context = context.get_admin_context()
|
||||||
self.request = FakeRequest(self.context)
|
self.request = fakes.HTTPRequest.blank('', use_admin_context=True)
|
||||||
|
|
||||||
def _setup(self):
|
def _setup(self):
|
||||||
self.controller = b_nodes_v21.BareMetalNodeController()
|
self.controller = b_nodes_v21.BareMetalNodeController()
|
||||||
@ -213,3 +209,25 @@ class BareMetalNodesTestV21(test.NoDBTestCase):
|
|||||||
self.assertRaises(exc.HTTPBadRequest,
|
self.assertRaises(exc.HTTPBadRequest,
|
||||||
self.controller._remove_interface,
|
self.controller._remove_interface,
|
||||||
self.request, 'fake-id', 'fake-body')
|
self.request, 'fake-id', 'fake-body')
|
||||||
|
|
||||||
|
|
||||||
|
class BareMetalNodesTestDeprecation(test.NoDBTestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(BareMetalNodesTestDeprecation, self).setUp()
|
||||||
|
self.controller = b_nodes_v21.BareMetalNodeController()
|
||||||
|
self.req = fakes.HTTPRequest.blank('', version='2.36')
|
||||||
|
|
||||||
|
def test_all_apis_return_not_found(self):
|
||||||
|
self.assertRaises(exception.VersionNotFoundForAPIMethod,
|
||||||
|
self.controller.show, self.req, fakes.FAKE_UUID)
|
||||||
|
self.assertRaises(exception.VersionNotFoundForAPIMethod,
|
||||||
|
self.controller.index, self.req)
|
||||||
|
self.assertRaises(exception.VersionNotFoundForAPIMethod,
|
||||||
|
self.controller.create, self.req, {})
|
||||||
|
self.assertRaises(exception.VersionNotFoundForAPIMethod,
|
||||||
|
self.controller.delete, self.req, fakes.FAKE_UUID)
|
||||||
|
self.assertRaises(exception.VersionNotFoundForAPIMethod,
|
||||||
|
self.controller._add_interface, self.req, fakes.FAKE_UUID, {})
|
||||||
|
self.assertRaises(exception.VersionNotFoundForAPIMethod,
|
||||||
|
self.controller._remove_interface, self.req, fakes.FAKE_UUID, {})
|
||||||
|
@ -138,3 +138,17 @@ class FpingPolicyEnforcementV21(test.NoDBTestCase):
|
|||||||
rule = {"os_compute_api:os-fping": "project:non_fake"}
|
rule = {"os_compute_api:os-fping": "project:non_fake"}
|
||||||
self.common_policy_check(
|
self.common_policy_check(
|
||||||
rule, self.controller.show, self.req, FAKE_UUID)
|
rule, self.controller.show, self.req, FAKE_UUID)
|
||||||
|
|
||||||
|
|
||||||
|
class FpingTestDeprecation(test.NoDBTestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(FpingTestDeprecation, self).setUp()
|
||||||
|
self.controller = fping_v21.FpingController()
|
||||||
|
self.req = fakes.HTTPRequest.blank('', version='2.36')
|
||||||
|
|
||||||
|
def test_all_apis_return_not_found(self):
|
||||||
|
self.assertRaises(exception.VersionNotFoundForAPIMethod,
|
||||||
|
self.controller.show, self.req, fakes.FAKE_UUID)
|
||||||
|
self.assertRaises(exception.VersionNotFoundForAPIMethod,
|
||||||
|
self.controller.index, self.req)
|
||||||
|
Loading…
Reference in New Issue
Block a user