def _validate_params(params): """ Validate backend_service params. This function calls _validate_backend_params to verify the backend-specific parameters. :param params: Ansible dictionary containing configuration. :type params: ``dict`` :return: True or raises ValueError :rtype: ``bool`` or `class:ValueError` """ fields = [ { 'name': 'timeout', 'type': int, 'min': 1, 'max': 86400 }, ] try: check_params(params, fields) _validate_backend_params(params['backends']) except Exception: raise return (True, '')
def _validate_params(params): """ Validate url_map params. This function calls _validate_host_rules_params to verify the host_rules-specific parameters. This function calls _validate_path_matchers_params to verify the path_matchers-specific parameters. :param params: Ansible dictionary containing configuration. :type params: ``dict`` :return: True or raises ValueError :rtype: ``bool`` or `class:ValueError` """ fields = [ {'name': 'default_service', 'type': str, 'required': True}, {'name': 'host_rules', 'type': list}, {'name': 'path_matchers', 'type': list}, ] try: check_params(params, fields) if 'path_matchers' in params and params['path_matchers'] is not None: _validate_path_matcher_params(params['path_matchers']) if 'host_rules' in params and params['host_rules'] is not None: _validate_host_rules_params(params['host_rules']) except Exception: raise return (True, '')
def _validate_backend_params(backends): """ Validate configuration for backends. :param backends: Ansible dictionary containing backends configuration (only). :type backends: ``dict`` :return: True or raises ValueError :rtype: ``bool`` or `class:ValueError` """ fields = [ {'name': 'balancing_mode', 'type': str, 'values': ['UTILIZATION', 'RATE', 'CONNECTION']}, {'name': 'max_utilization', 'type': float}, {'name': 'max_connections', 'type': int}, {'name': 'max_rate', 'type': int}, {'name': 'max_rate_per_instance', 'type': float}, ] if not backends: raise ValueError('backends should be a list.') for backend in backends: try: check_params(backend, fields) except Exception: raise if 'max_rate' in backend and 'max_rate_per_instance' in backend: raise ValueError('Both maxRate or maxRatePerInstance cannot be set.') return (True, '')
def _validate_host_rules_params(host_rules): """ Validate configuration for host_rules. :param host_rules: Ansible dictionary containing host_rules configuration (only). :type host_rules ``dict`` :return: True or raises ValueError :rtype: ``bool`` or `class:ValueError` """ fields = [ { 'name': 'path_matcher', 'type': str, 'required': True }, ] if not host_rules: raise ValueError('host_rules should be a list.') for hr in host_rules: try: check_params(hr, fields) for host in hr['hosts']: if not isinstance(host, string_types): raise ValueError("host in hostrules must be a string") elif '*' in host: if host.index('*') != 0: raise ValueError( "wildcard must be first char in host, %s" % (host)) else: if host[1] not in [ '.', '-', ]: raise ValueError( "wildcard be followed by a '.' or '-', %s" % (host)) except Exception: raise return (True, '')
def _validate_path_matcher_params(path_matchers): """ Validate configuration for path_matchers. :param path_matchers: Ansible dictionary containing path_matchers configuration (only). :type path_matchers: ``dict`` :return: True or raises ValueError :rtype: ``bool`` or `class:ValueError` """ fields = [ {'name': 'name', 'type': str, 'required': True}, {'name': 'default_service', 'type': str, 'required': True}, {'name': 'path_rules', 'type': list, 'required': True}, {'name': 'max_rate', 'type': int}, {'name': 'max_rate_per_instance', 'type': float}, ] pr_fields = [ {'name': 'service', 'type': str, 'required': True}, {'name': 'paths', 'type': list, 'required': True}, ] if not path_matchers: raise ValueError(('path_matchers should be a list. %s (%s) provided' % (path_matchers, type(path_matchers)))) for pm in path_matchers: try: check_params(pm, fields) for pr in pm['path_rules']: check_params(pr, pr_fields) for path in pr['paths']: if not path.startswith('/'): raise ValueError("path for %s must start with /" % ( pm['name'])) except Exception: raise return (True, '')