-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvalidator.py
37 lines (27 loc) · 1.25 KB
/
validator.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# -*- coding: utf-8 -*-
# File @ validator.py
# Create @ 2017/8/10 14:24
# Author @ [email protected]
import const
class PyEurekaValidationError(Exception):
pass
class PyEurekaInternalValidationError(Exception):
pass
def validate_instance_definition(instance_definition):
for needed in const.EUREKA_INSTANCE_DEFINITION['needed']:
if needed not in instance_definition:
raise PyEurekaValidationError("{} is necessary".format(needed))
for part in const.EUREKA_INSTANCE_DEFINITION['needed-with-default']:
if part[0] not in instance_definition:
if part[1] == const.EUREKA_DEFAULT_SAME_AS:
instance_definition[part[0]] = instance_definition[part[2]]
elif part[1] == const.EUREKA_DEFAULT_VALUE:
instance_definition[part[0]] = part[2]
else:
raise PyEurekaInternalValidationError(
"on {} - unknown symbol {}".format(part[0], part[1]))
for part in const.EUREKA_INSTANCE_DEFINITION['transformations']:
if part[0] in instance_definition and part[1](instance_definition[part[0]]):
instance_definition[part[0]] = part[2](
instance_definition[part[0]])
return {'instance': instance_definition}