Merge "Validate required fields in meter definition"
This commit is contained in:
commit
0c279d885b
@ -57,13 +57,17 @@ class MeterDefinition(object):
|
|||||||
|
|
||||||
JSONPATH_RW_PARSER = parser.ExtentedJsonPathParser()
|
JSONPATH_RW_PARSER = parser.ExtentedJsonPathParser()
|
||||||
|
|
||||||
|
REQUIRED_FIELDS = ['name', 'type', 'event_type', 'unit', 'volume',
|
||||||
|
'resource_id']
|
||||||
|
|
||||||
def __init__(self, definition_cfg):
|
def __init__(self, definition_cfg):
|
||||||
self.cfg = definition_cfg
|
self.cfg = definition_cfg
|
||||||
|
missing = [field for field in self.REQUIRED_FIELDS
|
||||||
self._event_type = self.cfg.get('event_type')
|
if not self.cfg.get(field)]
|
||||||
if not self._event_type:
|
if missing:
|
||||||
raise MeterDefinitionException(
|
raise MeterDefinitionException(
|
||||||
_LE("Required field event_type not specified"), self.cfg)
|
_LE("Required fields %s not specified") % missing, self.cfg)
|
||||||
|
self._event_type = self.cfg.get('event_type')
|
||||||
if isinstance(self._event_type, six.string_types):
|
if isinstance(self._event_type, six.string_types):
|
||||||
self._event_type = [self._event_type]
|
self._event_type = [self._event_type]
|
||||||
|
|
||||||
|
@ -231,16 +231,19 @@ class TestMeterDefinition(test.BaseTestCase):
|
|||||||
self.assertEqual("30be1fc9a03c4e94ab05c403a8a377f2",
|
self.assertEqual("30be1fc9a03c4e94ab05c403a8a377f2",
|
||||||
handler.parse_fields("project_id", NOTIFICATION))
|
handler.parse_fields("project_id", NOTIFICATION))
|
||||||
|
|
||||||
def test_config_missing_fields(self):
|
def test_config_required_missing_fields(self):
|
||||||
cfg = dict(name="test", type="delta")
|
cfg = dict()
|
||||||
try:
|
try:
|
||||||
notifications.MeterDefinition(cfg)
|
notifications.MeterDefinition(cfg)
|
||||||
except notifications.MeterDefinitionException as e:
|
except notifications.MeterDefinitionException as e:
|
||||||
self.assertEqual("Required field event_type not specified",
|
self.assertEqual("Required fields ['name', 'type', 'event_type',"
|
||||||
e.message)
|
" 'unit', 'volume', 'resource_id']"
|
||||||
|
" not specified", e.message)
|
||||||
|
|
||||||
def test_bad_type_cfg_definition(self):
|
def test_bad_type_cfg_definition(self):
|
||||||
cfg = dict(name="test", type="foo", event_type="bar.create")
|
cfg = dict(name="test", type="foo", event_type="bar.create",
|
||||||
|
unit="foo", volume="bar",
|
||||||
|
resource_id="bea70e51c7340cb9d555b15cbfcaec23")
|
||||||
try:
|
try:
|
||||||
notifications.MeterDefinition(cfg)
|
notifications.MeterDefinition(cfg)
|
||||||
except notifications.MeterDefinitionException as e:
|
except notifications.MeterDefinitionException as e:
|
||||||
|
Loading…
Reference in New Issue
Block a user