implement cache data for zvm inspector

CacheData class is used in zvm inspector to cache instance data
when getting instance performance info.

Change-Id: Icc3422d8322d7246840841fbde7bb3abb6ce7213
This commit is contained in:
Huang Rui 2015-09-16 18:54:40 +08:00
parent fdc488f33f
commit 907ecc0a53
2 changed files with 49 additions and 0 deletions

View File

@ -33,6 +33,25 @@ class ZVMException(inspector.InspectorException):
pass
class CacheData(object):
def __init__(self):
self.cache = {}
def set(self, inst_stat):
self.cache[inst_stat['nodename']] = inst_stat
def get(self, inst_name):
return self.cache.get(inst_name, None)
def delete(self, inst_name):
if inst_name in self.cache:
del self.cache[inst_name]
def clear(self):
self.cache = {}
class XCATUrl(object):
"""To return xCAT url for invoking xCAT REST API."""
def __init__(self):

View File

@ -116,3 +116,33 @@ class TestZVMUtils(base.BaseTestCase):
xcat_req.assert_any_call('PUT',
'/xcatws/nodes/node/dsh?userName=user&password=pwd&format=json',
['command=cmds'])
class TestCacheData(base.BaseTestCase):
def setUp(self):
super(TestCacheData, self).setUp()
self.cache_data = zvmutils.CacheData()
def tearDown(self):
self.cache_data.clear()
super(TestCacheData, self).tearDown()
def test_set(self):
self.cache_data.set({'nodename': 'node'})
self.assertEqual({'nodename': 'node'}, self.cache_data.cache['node'])
def test_get(self):
self.cache_data.set({'nodename': 'node'})
self.assertEqual({'nodename': 'node'}, self.cache_data.get('node'))
def test_delete(self):
self.cache_data.set({'nodename': 'node'})
self.cache_data.delete('node')
self.assertEqual(None, self.cache_data.get('node'))
def test_clear(self):
self.cache_data.set({'nodename': 'node1'})
self.cache_data.set({'nodename': 'node2'})
self.cache_data.clear()
self.assertEqual({}, self.cache_data.cache)