new tests
This commit is contained in:
@@ -25,34 +25,37 @@ FLAGS = flags.FLAGS
|
|||||||
LOG = logging.getLogger('nova.scheduler.api')
|
LOG = logging.getLogger('nova.scheduler.api')
|
||||||
|
|
||||||
|
|
||||||
|
def _call_scheduler(method, context, params=None):
|
||||||
|
"""Generic handler for RPC calls to the scheduler.
|
||||||
|
|
||||||
|
:param params: Optional dictionary of arguments to be passed to the
|
||||||
|
scheduler worker
|
||||||
|
|
||||||
|
:retval: Result returned by scheduler worker
|
||||||
|
"""
|
||||||
|
if not params:
|
||||||
|
params = {}
|
||||||
|
queue = FLAGS.scheduler_topic
|
||||||
|
kwargs = {'method': method, 'args': params}
|
||||||
|
return rpc.call(context, queue, kwargs)
|
||||||
|
|
||||||
|
|
||||||
class API:
|
class API:
|
||||||
"""API for interacting with the scheduler."""
|
"""API for interacting with the scheduler."""
|
||||||
|
|
||||||
def _call_scheduler(self, method, context, params=None):
|
@classmethod
|
||||||
"""Generic handler for RPC calls to the scheduler.
|
def get_zone_list(cls, context):
|
||||||
|
|
||||||
:param params: Optional dictionary of arguments to be passed to the
|
|
||||||
scheduler worker
|
|
||||||
|
|
||||||
:retval: Result returned by scheduler worker
|
|
||||||
"""
|
|
||||||
if not params:
|
|
||||||
params = {}
|
|
||||||
queue = FLAGS.scheduler_topic
|
|
||||||
kwargs = {'method': method, 'args': params}
|
|
||||||
return rpc.call(context, queue, kwargs)
|
|
||||||
|
|
||||||
def get_zone_list(self, context):
|
|
||||||
"""Return a list of zones assoicated with this zone."""
|
"""Return a list of zones assoicated with this zone."""
|
||||||
items = self._call_scheduler('get_zone_list', context)
|
items = _call_scheduler('get_zone_list', context)
|
||||||
for item in items:
|
for item in items:
|
||||||
item['api_url'] = item['api_url'].replace('\\/', '/')
|
item['api_url'] = item['api_url'].replace('\\/', '/')
|
||||||
return items
|
return items
|
||||||
|
|
||||||
def get_zone_capabilities(self, context, service=None):
|
@classmethod
|
||||||
|
def get_zone_capabilities(cls, context, service=None):
|
||||||
"""Returns a dict of key, value capabilities for this zone,
|
"""Returns a dict of key, value capabilities for this zone,
|
||||||
or for a particular class of services running in this zone."""
|
or for a particular class of services running in this zone."""
|
||||||
return self._call_scheduler('get_zone_capabilities', context=context,
|
return _call_scheduler('get_zone_capabilities', context=context,
|
||||||
params=dict(service=service))
|
params=dict(service=service))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@@ -118,8 +118,7 @@ class ZoneManager(object):
|
|||||||
<cap>_min and <cap>_max values."""
|
<cap>_min and <cap>_max values."""
|
||||||
service_dict = self.service_states
|
service_dict = self.service_states
|
||||||
if service:
|
if service:
|
||||||
service_dict = dict(service_name=service,
|
service_dict = {service: self.service_states.get(service, {})}
|
||||||
hosts=self.service_states.get(service, {}))
|
|
||||||
|
|
||||||
# TODO(sandy) - be smarter about fabricating this structure.
|
# TODO(sandy) - be smarter about fabricating this structure.
|
||||||
# But it's likely to change once we understand what the Best-Match
|
# But it's likely to change once we understand what the Best-Match
|
||||||
|
@@ -104,6 +104,12 @@ class ZoneManagerTestCase(test.TestCase):
|
|||||||
svc1_c=(5, 5), svc10_a=(99, 99),
|
svc1_c=(5, 5), svc10_a=(99, 99),
|
||||||
svc10_b=(99, 99)))
|
svc10_b=(99, 99)))
|
||||||
|
|
||||||
|
caps = zm.get_zone_capabilities(self, 'svc1')
|
||||||
|
self.assertEquals(caps, dict(svc1_a=(2, 20), svc1_b=(3, 30),
|
||||||
|
svc1_c=(5, 5)))
|
||||||
|
caps = zm.get_zone_capabilities(self, 'svc10')
|
||||||
|
self.assertEquals(caps, dict(svc10_a=(99, 99), svc10_b=(99, 99)))
|
||||||
|
|
||||||
def test_refresh_from_db_replace_existing(self):
|
def test_refresh_from_db_replace_existing(self):
|
||||||
zm = zone_manager.ZoneManager()
|
zm = zone_manager.ZoneManager()
|
||||||
zone_state = zone_manager.ZoneState()
|
zone_state = zone_manager.ZoneState()
|
||||||
|
Reference in New Issue
Block a user