Merge "Add list() to Chassis, Node, Port objects"
This commit is contained in:
commit
a020a8c9ee
|
@ -156,9 +156,9 @@ class ChassisController(rest.RestController):
|
|||
if marker:
|
||||
marker_obj = objects.Chassis.get_by_uuid(pecan.request.context,
|
||||
marker)
|
||||
chassis = pecan.request.dbapi.get_chassis_list(limit, marker_obj,
|
||||
sort_key=sort_key,
|
||||
sort_dir=sort_dir)
|
||||
chassis = objects.Chassis.list(pecan.request.context, limit,
|
||||
marker_obj, sort_key=sort_key,
|
||||
sort_dir=sort_dir)
|
||||
return ChassisCollection.convert_with_links(chassis, limit,
|
||||
url=resource_url,
|
||||
expand=expand,
|
||||
|
|
|
@ -610,10 +610,9 @@ class NodesController(rest.RestController):
|
|||
if maintenance is not None:
|
||||
filters['maintenance'] = maintenance
|
||||
|
||||
nodes = pecan.request.dbapi.get_node_list(filters, limit,
|
||||
marker_obj,
|
||||
sort_key=sort_key,
|
||||
sort_dir=sort_dir)
|
||||
nodes = objects.Node.list(pecan.request.context, limit, marker_obj,
|
||||
sort_key=sort_key, sort_dir=sort_dir,
|
||||
filters=filters)
|
||||
|
||||
parameters = {'sort_key': sort_key, 'sort_dir': sort_dir}
|
||||
if associated:
|
||||
|
|
|
@ -201,9 +201,9 @@ class PortsController(rest.RestController):
|
|||
elif address:
|
||||
ports = self._get_ports_by_address(address)
|
||||
else:
|
||||
ports = pecan.request.dbapi.get_port_list(limit, marker_obj,
|
||||
sort_key=sort_key,
|
||||
sort_dir=sort_dir)
|
||||
ports = objects.Port.list(pecan.request.context, limit,
|
||||
marker_obj, sort_key=sort_key,
|
||||
sort_dir=sort_dir)
|
||||
|
||||
return PortCollection.convert_with_links(ports, limit,
|
||||
url=resource_url,
|
||||
|
|
|
@ -205,7 +205,6 @@ class Connection(api.Connection):
|
|||
return _paginate_query(models.Node, limit, marker,
|
||||
sort_key, sort_dir, query)
|
||||
|
||||
@objects.objectify(objects.Node)
|
||||
def get_node_list(self, filters=None, limit=None, marker=None,
|
||||
sort_key=None, sort_dir=None):
|
||||
query = model_query(models.Node)
|
||||
|
@ -383,7 +382,6 @@ class Connection(api.Connection):
|
|||
def get_port_by_vif(self, vif):
|
||||
pass
|
||||
|
||||
@objects.objectify(objects.Port)
|
||||
def get_port_list(self, limit=None, marker=None,
|
||||
sort_key=None, sort_dir=None):
|
||||
return _paginate_query(models.Port, limit, marker,
|
||||
|
@ -458,7 +456,6 @@ class Connection(api.Connection):
|
|||
except NoResultFound:
|
||||
raise exception.ChassisNotFound(chassis=chassis_uuid)
|
||||
|
||||
@objects.objectify(objects.Chassis)
|
||||
def get_chassis_list(self, limit=None, marker=None,
|
||||
sort_key=None, sort_dir=None):
|
||||
return _paginate_query(models.Chassis, limit, marker,
|
||||
|
|
|
@ -25,7 +25,8 @@ class Chassis(base.IronicObject):
|
|||
# Version 1.1: Add get() and get_by_id() and make get_by_uuid()
|
||||
# only work with a uuid
|
||||
# Version 1.2: Add create() and destroy()
|
||||
VERSION = '1.2'
|
||||
# Version 1.3: Add list()
|
||||
VERSION = '1.3'
|
||||
|
||||
dbapi = dbapi.get_instance()
|
||||
|
||||
|
@ -93,6 +94,32 @@ class Chassis(base.IronicObject):
|
|||
chassis._context = context
|
||||
return chassis
|
||||
|
||||
@base.remotable_classmethod
|
||||
def list(cls, context, limit=None, marker=None,
|
||||
sort_key=None, sort_dir=None):
|
||||
"""Return a list of Chassis objects.
|
||||
|
||||
:param context: Security context.
|
||||
:param limit: maximum number of resources to return in a single result.
|
||||
:param marker: pagination marker for large data sets.
|
||||
:param sort_key: column to sort results by.
|
||||
:param sort_dir: direction to sort. "asc" or "desc".
|
||||
:returns: a list of :class:`Chassis` object.
|
||||
|
||||
"""
|
||||
chassis_list = []
|
||||
db_chassis = cls.dbapi.get_chassis_list(limit=limit,
|
||||
marker=marker,
|
||||
sort_key=sort_key,
|
||||
sort_dir=sort_dir)
|
||||
for obj in db_chassis:
|
||||
chassis = Chassis._from_db_object(cls(), obj)
|
||||
# FIXME(comstud): Setting of the context should be moved to
|
||||
# _from_db_object().
|
||||
chassis._context = context
|
||||
chassis_list.append(chassis)
|
||||
return chassis_list
|
||||
|
||||
@base.remotable
|
||||
def create(self, context=None):
|
||||
"""Create a Chassis record in the DB.
|
||||
|
|
|
@ -27,7 +27,8 @@ class Node(base.IronicObject):
|
|||
# only work with a uuid
|
||||
# Version 1.3: Add create() and destroy()
|
||||
# Version 1.4: Add get_by_instance_uuid()
|
||||
VERSION = '1.4'
|
||||
# Version 1.5: Add list()
|
||||
VERSION = '1.5'
|
||||
|
||||
dbapi = db_api.get_instance()
|
||||
|
||||
|
@ -131,6 +132,32 @@ class Node(base.IronicObject):
|
|||
node._context = context
|
||||
return node
|
||||
|
||||
@base.remotable_classmethod
|
||||
def list(cls, context, limit=None, marker=None, sort_key=None,
|
||||
sort_dir=None, filters=None):
|
||||
"""Return a list of Node objects.
|
||||
|
||||
:param context: Security context.
|
||||
:param limit: maximum number of resources to return in a single result.
|
||||
:param marker: pagination marker for large data sets.
|
||||
:param sort_key: column to sort results by.
|
||||
:param sort_dir: direction to sort. "asc" or "desc".
|
||||
:param filters: Filters to apply.
|
||||
:returns: a list of :class:`Node` object.
|
||||
|
||||
"""
|
||||
node_list = []
|
||||
db_nodes = cls.dbapi.get_node_list(filters=filters, limit=limit,
|
||||
marker=marker, sort_key=sort_key,
|
||||
sort_dir=sort_dir)
|
||||
for obj in db_nodes:
|
||||
node = Node._from_db_object(cls(), obj)
|
||||
# FIXME(comstud): Setting of the context should be moved to
|
||||
# _from_db_object().
|
||||
node._context = context
|
||||
node_list.append(node)
|
||||
return node_list
|
||||
|
||||
@base.remotable
|
||||
def create(self, context=None):
|
||||
"""Create a Node record in the DB.
|
||||
|
|
|
@ -25,7 +25,8 @@ class Port(base.IronicObject):
|
|||
# Version 1.1: Add get() and get_by_id() and get_by_address() and
|
||||
# make get_by_uuid() only work with a uuid
|
||||
# Version 1.2: Add create() and destroy()
|
||||
VERSION = '1.2'
|
||||
# Version 1.3: Add list()
|
||||
VERSION = '1.3'
|
||||
|
||||
dbapi = dbapi.get_instance()
|
||||
|
||||
|
@ -106,6 +107,32 @@ class Port(base.IronicObject):
|
|||
port._context = context
|
||||
return port
|
||||
|
||||
@base.remotable_classmethod
|
||||
def list(cls, context, limit=None, marker=None,
|
||||
sort_key=None, sort_dir=None):
|
||||
"""Return a list of Port objects.
|
||||
|
||||
:param context: Security context.
|
||||
:param limit: maximum number of resources to return in a single result.
|
||||
:param marker: pagination marker for large data sets.
|
||||
:param sort_key: column to sort results by.
|
||||
:param sort_dir: direction to sort. "asc" or "desc".
|
||||
:returns: a list of :class:`Port` object.
|
||||
|
||||
"""
|
||||
port_list = []
|
||||
db_ports = cls.dbapi.get_port_list(limit=limit,
|
||||
marker=marker,
|
||||
sort_key=sort_key,
|
||||
sort_dir=sort_dir)
|
||||
for obj in db_ports:
|
||||
port = Port._from_db_object(cls(), obj)
|
||||
# FIXME(comstud): Setting of the context should be moved to
|
||||
# _from_db_object().
|
||||
port._context = context
|
||||
port_list.append(port)
|
||||
return port_list
|
||||
|
||||
@base.remotable
|
||||
def create(self, context=None):
|
||||
"""Create a Port record in the DB.
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
# under the License.
|
||||
|
||||
import mock
|
||||
from testtools.matchers import HasLength
|
||||
|
||||
from ironic.common import exception
|
||||
from ironic.common import utils as ironic_utils
|
||||
|
@ -117,3 +118,11 @@ class TestChassisObject(base.DbTestCase):
|
|||
self.assertIsInstance(c, models.Chassis)
|
||||
for c in _convert_many_db_chassis():
|
||||
self.assertIsInstance(c, objects.Chassis)
|
||||
|
||||
def test_list(self):
|
||||
with mock.patch.object(self.dbapi, 'get_chassis_list',
|
||||
autospec=True) as mock_get_list:
|
||||
mock_get_list.return_value = [self.fake_chassis]
|
||||
chassis = objects.Chassis.list(self.context)
|
||||
self.assertThat(chassis, HasLength(1))
|
||||
self.assertIsInstance(chassis[0], objects.Chassis)
|
||||
|
|
|
@ -17,6 +17,7 @@ import datetime
|
|||
|
||||
import mock
|
||||
from oslo.utils import timeutils
|
||||
from testtools.matchers import HasLength
|
||||
|
||||
from ironic.common import exception
|
||||
from ironic.db import api as db_api
|
||||
|
@ -133,3 +134,11 @@ class TestNodeObject(base.DbTestCase):
|
|||
self.assertIsInstance(n, models.Node)
|
||||
for n in _convert_db_nodes():
|
||||
self.assertIsInstance(n, objects.Node)
|
||||
|
||||
def test_list(self):
|
||||
with mock.patch.object(self.dbapi, 'get_node_list',
|
||||
autospec=True) as mock_get_list:
|
||||
mock_get_list.return_value = [self.fake_node]
|
||||
nodes = objects.Node.list(self.context)
|
||||
self.assertThat(nodes, HasLength(1))
|
||||
self.assertIsInstance(nodes[0], objects.Node)
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
# under the License.
|
||||
|
||||
import mock
|
||||
from testtools.matchers import HasLength
|
||||
|
||||
from ironic.common import exception
|
||||
from ironic.db import api as db_api
|
||||
|
@ -124,3 +125,11 @@ class TestPortObject(base.DbTestCase):
|
|||
self.assertIsInstance(p, models.Port)
|
||||
for p in _convert_db_nodes():
|
||||
self.assertIsInstance(p, objects.Port)
|
||||
|
||||
def test_list(self):
|
||||
with mock.patch.object(self.dbapi, 'get_port_list',
|
||||
autospec=True) as mock_get_list:
|
||||
mock_get_list.return_value = [self.fake_port]
|
||||
ports = objects.Port.list(self.context)
|
||||
self.assertThat(ports, HasLength(1))
|
||||
self.assertIsInstance(ports[0], objects.Port)
|
||||
|
|
Loading…
Reference in New Issue