require a valid duration suffix for interval and ttl values

This commit is contained in:
Steve Gargan 2015-03-03 20:03:46 +00:00
parent a8584ade95
commit 0c6d426c40

View file

@ -375,21 +375,21 @@ class ConsulCheck():
if check_id: if check_id:
self.check_id = check_id self.check_id = check_id
self.script = script self.script = script
self.interval = str(interval) self.interval = self.validate_duration('interval', interval)
self.ttl = self.validate_duration('ttl', ttl)
if not self.interval.endswith('m') or self.interval.endswith('s'):
self.interval += 'm'
self.ttl = ttl
self.notes = notes self.notes = notes
self.node = node self.node = node
self.host = host self.host = host
if interval and interval <= 0:
raise Error('check interval must be positive')
if ttl and ttl <= 0:
raise Error('check ttl value must be positive') def validate_duration(self, name, duration):
if duration:
duration_units = ['ns', 'us', 'ms', 's', 'm', 'h']
if not any((duration.endswith(suffix) for suffix in duration_units)):
raise Exception('Invalid %s %s you must specify units (%s)' %
(name, duration, ', '.join(duration_units)))
return duration
def register(self, consul_api): def register(self, consul_api):
consul_api.agent.check.register(self.name, check_id=self.check_id, consul_api.agent.check.register(self.name, check_id=self.check_id,
@ -434,7 +434,8 @@ def main():
check_id=dict(required=False), check_id=dict(required=False),
check_name=dict(required=False), check_name=dict(required=False),
host=dict(default='localhost'), host=dict(default='localhost'),
interval=dict(required=False, default='1m'), interval=dict(required=False, type='str'),
ttl=dict(required=False, type='str'),
check_node=dict(required=False), check_node=dict(required=False),
check_host=dict(required=False), check_host=dict(required=False),
notes=dict(required=False), notes=dict(required=False),