def test_validate_plugin_update(self): def validate(plugin_name, values, validator, lh): validator.validate(values) lh.validate_plugin_update(plugin_name, values) values = {'plugin_labels': {'enabled': {'status': False}}} self.override_config('plugins', ['fake']) lh = base.PluginManager() validator = api_validator.ApiValidator( lh.get_plugin_update_validation_jsonschema()) validate('fake', values, validator, lh) values = {'plugin_labels': {'not_exists': {'status': False}}} with testtools.ExpectedException(json_exc.ValidationError): validate('fake', values, validator, lh) values = {'plugin_labels': {'enabled': {'status': 'False'}}} with testtools.ExpectedException(json_exc.ValidationError): validate('fake', values, validator, lh) values = {'field': {'blala': 'blalalalalala'}} with testtools.ExpectedException(json_exc.ValidationError): validate('fake', values, validator, lh) values = {'version_labels': {'0.1': {'enabled': {'status': False}}}} validate('fake', values, validator, lh) values = {'version_labels': {'0.1': {'hidden': {'status': True}}}} with testtools.ExpectedException(ex.InvalidDataException): validate('fake', values, validator, lh)
def _test(self, schema, path, formatter): validator = api_validator.ApiValidator(schema) for filename in self._files_in_path(path): file_path = '/'.join((path, filename)) with open(file_path, 'r') as payload: payload = payload.read() % formatter payload = json.loads(payload) validator.validate(payload)
def handler(*args, **kwargs): request_data = u.request_data() try: if schema: validator = api_validator.ApiValidator(schema) errors = validator.iter_errors(request_data) error = _generate_error(errors) if error: return u.bad_request(error) if validators: for validator in validators: validator(**kwargs) except ex.SaharaException as e: return u.bad_request(e) except Exception as e: return u.internal_error(500, "Error occurred during validation", e) return func(*args, **kwargs)
def handler(*args, **kwargs): request_data = u.request_data() try: if schema: validator = api_validator.ApiValidator(schema) validator.validate(request_data) if validators: for validator in validators: validator(**kwargs) except jsonschema.ValidationError as e: e.code = "VALIDATION_ERROR" return u.bad_request(e) except ex.SaharaException as e: return u.bad_request(e) except Exception as e: return u.internal_error(500, "Error occurred during validation", e) return func(*args, **kwargs)
def _validate(schema, data): validator = api_validator.ApiValidator(schema) validator.validate(data)
CONF = None # This is broken out to support testability def set_logger(log): global LOG LOG = log # This is broken out to support testability def set_conf(conf): global CONF CONF = conf ng_validator = api_validator.ApiValidator(ngt.NODE_GROUP_TEMPLATE_SCHEMA) ct_validator = api_validator.ApiValidator(clt.CLUSTER_TEMPLATE_SCHEMA) # Options that we allow to be replaced in a node group template node_group_template_opts = [ cfg.StrOpt('image_id', help='Image id field for a node group template.'), cfg.StrOpt('flavor_id', help='Flavor id field for a node group template.'), cfg.StrOpt('floating_ip_pool', help='Floating ip pool field for a node group template.'), cfg.BoolOpt('auto_security_group', default=False, help='Auto security group field for node group template.'), cfg.ListOpt('security_groups', default=[], help='Security group field for node group template.') ]