r"""
Copyright &copy; 2026 NetApp Inc.
All rights reserved.

This file has been automatically generated based on the ONTAP REST API documentation.

"""
from marshmallow import EXCLUDE, fields as marshmallow_fields  # type: ignore
from netapp_ontap.resource import Resource, ResourceSchema, ResourceSchemaMeta, ImpreciseDateTime, Size, lazy_import_schema


__all__ = ["CifsTarget", "CifsTargetSchema"]
__pdoc__ = {
    "CifsTargetSchema.resource": False,
    "CifsTargetSchema.opts": False,
    "CifsTarget": False,
}

class CifsTargetSchema(ResourceSchema, metaclass=ResourceSchemaMeta):
    """The fields of the CifsTarget object"""

    home_directory = marshmallow_fields.Boolean(data_key="home_directory", allow_none=True)
    r""" Specify if the destination share is a home directory. """

    locality = marshmallow_fields.Str(data_key="locality", allow_none=True)
    r""" Specifies whether the CIFS symbolic link is a local link or wide link.
The following values are supported:

* local - Local symbolic link maps only to the same CIFS share.
* widelink - Wide symbolic link maps to any CIFS share on the network.


Valid choices:

* local
* widelink """

    path = marshmallow_fields.Str(data_key="path", allow_none=True)
    r""" Specifies the CIFS path on the destination to which the symbolic link maps. The final path is generated by concatenating the CIFS server name, the share name, the cifs-path and the remaining path in the symbolic link left after the prefix match. This value is specified by using a UNIX-style path name. The trailing forward slash is required for the full path name to be properly interpreted.

Example: /dir1/dir2/ """

    server = marshmallow_fields.Str(data_key="server", allow_none=True)
    r""" Specifies the destination CIFS server where the
UNIX symbolic link is pointing. This field is mandatory if the
locality of the symbolic link is 'widelink'.
You can specify the value in any of the following formats:

  * DNS name of the CIFS server.
  * IP address of the CIFS server.
  * NetBIOS name of the CIFS server.


Example: ENGCIFS """

    share = marshmallow_fields.Str(data_key="share", allow_none=True)
    r""" Specifies the CIFS share name on the destination CIFS server to which the UNIX symbolic link is pointing.

Example: ENG_SHARE """

    @property
    def resource(self):
        return CifsTarget

    gettable_fields = [
        "home_directory",
        "locality",
        "path",
        "server",
        "share",
    ]
    """home_directory,locality,path,server,share,"""

    patchable_fields = [
        "home_directory",
        "locality",
        "path",
        "server",
        "share",
    ]
    """home_directory,locality,path,server,share,"""

    postable_fields = [
        "home_directory",
        "locality",
        "path",
        "server",
        "share",
    ]
    """home_directory,locality,path,server,share,"""


class CifsTarget(Resource):

    _schema = CifsTargetSchema
