X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=juju%2Fconstraints.py;h=998862d02508499dd28d0f20983e1f5858498213;hb=5db9c4c5f0c88c73f06ac285294f9ab688e5bc97;hp=43c048ae4fb87cc0e1434540b0725a22d31c1da1;hpb=d703653028e7ea25da20f205b9ff341c75694e33;p=osm%2FN2VC.git diff --git a/juju/constraints.py b/juju/constraints.py index 43c048a..998862d 100644 --- a/juju/constraints.py +++ b/juju/constraints.py @@ -21,6 +21,7 @@ import re MEM = re.compile('^[1-9][0-9]*[MGTP]$') # Multiplication factors to get Megabytes +# https://github.com/juju/juju/blob/master/constraints/constraints.go#L666 FACTORS = { "M": 1, "G": 1024, @@ -28,13 +29,17 @@ FACTORS = { "P": 1024 * 1024 * 1024 } +SNAKE1 = re.compile(r'(.)([A-Z][a-z]+)') +SNAKE2 = re.compile('([a-z0-9])([A-Z])') + + def parse(constraints): """ Constraints must be expressed as a string containing only spaces and key value pairs joined by an '='. """ - if constraints is None: + if not constraints: return None if type(constraints) is dict: @@ -52,6 +57,11 @@ def normalize_key(key): key = key.strip() key = key.replace("-", "_") # Our _client lib wants "_" in place of "-" + + # Convert camelCase to snake_case + key = SNAKE1.sub(r'\1_\2', key) + key = SNAKE2.sub(r'\1_\2', key).lower() + return key @@ -68,4 +78,7 @@ def normalize_value(value): values = [normalize_value(v) for v in values] return values + if value.isdigit(): + return int(value) + return value