1# -*- coding: utf-8 -*- 2# Copyright (c) 2021 Ansible Project 3# Simplified BSD License (see licenses/simplified_bsd.txt or https://opensource.org/licenses/BSD-2-Clause) 4 5from __future__ import absolute_import, division, print_function 6__metaclass__ = type 7 8 9class AnsibleFallbackNotFound(Exception): 10 """Fallback validator was not found""" 11 12 13class AnsibleValidationError(Exception): 14 """Single argument spec validation error""" 15 16 def __init__(self, message): 17 super(AnsibleValidationError, self).__init__(message) 18 self.error_message = message 19 """The error message passed in when the exception was raised.""" 20 21 @property 22 def msg(self): 23 """The error message passed in when the exception was raised.""" 24 return self.args[0] 25 26 27class AnsibleValidationErrorMultiple(AnsibleValidationError): 28 """Multiple argument spec validation errors""" 29 30 def __init__(self, errors=None): 31 self.errors = errors[:] if errors else [] 32 """:class:`list` of :class:`AnsibleValidationError` objects""" 33 34 def __getitem__(self, key): 35 return self.errors[key] 36 37 def __setitem__(self, key, value): 38 self.errors[key] = value 39 40 def __delitem__(self, key): 41 del self.errors[key] 42 43 @property 44 def msg(self): 45 """The first message from the first error in ``errors``.""" 46 return self.errors[0].args[0] 47 48 @property 49 def messages(self): 50 """:class:`list` of each error message in ``errors``.""" 51 return [err.msg for err in self.errors] 52 53 def append(self, error): 54 """Append a new error to ``self.errors``. 55 56 Only :class:`AnsibleValidationError` should be added. 57 """ 58 59 self.errors.append(error) 60 61 def extend(self, errors): 62 """Append each item in ``errors`` to ``self.errors``. Only :class:`AnsibleValidationError` should be added.""" 63 self.errors.extend(errors) 64 65 66class AliasError(AnsibleValidationError): 67 """Error handling aliases""" 68 69 70class ArgumentTypeError(AnsibleValidationError): 71 """Error with parameter type""" 72 73 74class ArgumentValueError(AnsibleValidationError): 75 """Error with parameter value""" 76 77 78class ElementError(AnsibleValidationError): 79 """Error when validating elements""" 80 81 82class MutuallyExclusiveError(AnsibleValidationError): 83 """Mutually exclusive parameters were supplied""" 84 85 86class NoLogError(AnsibleValidationError): 87 """Error converting no_log values""" 88 89 90class RequiredByError(AnsibleValidationError): 91 """Error with parameters that are required by other parameters""" 92 93 94class RequiredDefaultError(AnsibleValidationError): 95 """A required parameter was assigned a default value""" 96 97 98class RequiredError(AnsibleValidationError): 99 """Missing a required parameter""" 100 101 102class RequiredIfError(AnsibleValidationError): 103 """Error with conditionally required parameters""" 104 105 106class RequiredOneOfError(AnsibleValidationError): 107 """Error with parameters where at least one is required""" 108 109 110class RequiredTogetherError(AnsibleValidationError): 111 """Error with parameters that are required together""" 112 113 114class SubParameterTypeError(AnsibleValidationError): 115 """Incorrect type for subparameter""" 116 117 118class UnsupportedError(AnsibleValidationError): 119 """Unsupported parameters were supplied""" 120