# Source code for azure.mgmt.managementgroups.models.check_name_availability_result_py3

    # coding=utf-8
    # --------------------------------------------------------------------------
    # Copyright (c) Microsoft Corporation. All rights reserved.
    # Licensed under the MIT License. See License.txt in the project root for
    # license information.
    #
    # Code generated by Microsoft (R) AutoRest Code Generator.
    # Changes may cause incorrect behavior and will be lost if the code is
    # regenerated.
    # --------------------------------------------------------------------------

    from msrest.serialization import Model

    class CheckNameAvailabilityResult(Model):
        """Describes the result of the request to check management group name
        availability.

        Variables are only populated by the server, and will be ignored when
        sending a request.

        :ivar name_available: Required. True indicates name is valid and
         available. False indicates the name is invalid, unavailable, or both.
        :vartype name_available: bool
        :ivar reason: Required if nameAvailable == false. Invalid indicates the
         name provided does not match the resource provider's naming requirements
         (incorrect length, unsupported characters, etc.) AlreadyExists indicates
         that the name is already in use and is therefore unavailable. Possible
         values include: 'Invalid', 'AlreadyExists'
        :vartype reason: str or ~azure.mgmt.managementgroups.models.Reason
        :ivar message: Required if nameAvailable == false. Localized. If reason ==
         invalid, provide the user with the reason why the given name is invalid,
         and provide the resource naming requirements so that the user can select a
         valid name. If reason == AlreadyExists, explain that is already in use,
         and direct them to select a different name.
        :vartype message: str
        """

        _validation = {
            'name_available': {'readonly': True},
            'reason': {'readonly': True},
            'message': {'readonly': True},
        }

        _attribute_map = {
            'name_available': {'key': 'nameAvailable', 'type': 'bool'},
            'reason': {'key': 'reason', 'type': 'Reason'},
            'message': {'key': 'message', 'type': 'str'},
        }

        def __init__(self, **kwargs) -> None:
            super(CheckNameAvailabilityResult, self).__init__(**kwargs)
            self.name_available = None
            self.reason = None
            self.message = None