# coding: utf-8

"""
    FlashBlade REST API

    A lightweight client for FlashBlade REST API 2.2, developed by Pure Storage, Inc. (http://www.purestorage.com/).

    OpenAPI spec version: 2.2
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re

import six
import typing

from ....properties import Property
if typing.TYPE_CHECKING:
    from pypureclient.flashblade.FB_2_2 import models

class ArrayNfsSpecificPerformance(object):
    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'name': 'str',
        'id': 'str',
        'accesses_per_sec': 'float',
        'aggregate_file_metadata_creates_per_sec': 'float',
        'aggregate_file_metadata_modifies_per_sec': 'float',
        'aggregate_file_metadata_reads_per_sec': 'float',
        'aggregate_other_per_sec': 'float',
        'aggregate_share_metadata_reads_per_sec': 'float',
        'aggregate_usec_per_file_metadata_create_op': 'float',
        'aggregate_usec_per_file_metadata_modify_op': 'float',
        'aggregate_usec_per_file_metadata_read_op': 'float',
        'aggregate_usec_per_other_op': 'float',
        'aggregate_usec_per_share_metadata_read_op': 'float',
        'creates_per_sec': 'float',
        'fsinfos_per_sec': 'float',
        'fsstats_per_sec': 'float',
        'getattrs_per_sec': 'float',
        'links_per_sec': 'float',
        'lookups_per_sec': 'float',
        'mkdirs_per_sec': 'float',
        'pathconfs_per_sec': 'float',
        'reads_per_sec': 'float',
        'readdirs_per_sec': 'float',
        'readdirpluses_per_sec': 'float',
        'readlinks_per_sec': 'float',
        'removes_per_sec': 'float',
        'renames_per_sec': 'float',
        'rmdirs_per_sec': 'float',
        'setattrs_per_sec': 'float',
        'symlinks_per_sec': 'float',
        'time': 'int',
        'writes_per_sec': 'float',
        'usec_per_access_op': 'float',
        'usec_per_create_op': 'float',
        'usec_per_fsinfo_op': 'float',
        'usec_per_fsstat_op': 'float',
        'usec_per_getattr_op': 'float',
        'usec_per_link_op': 'float',
        'usec_per_lookup_op': 'float',
        'usec_per_mkdir_op': 'float',
        'usec_per_pathconf_op': 'float',
        'usec_per_read_op': 'float',
        'usec_per_readdir_op': 'float',
        'usec_per_readdirplus_op': 'float',
        'usec_per_readlink_op': 'float',
        'usec_per_remove_op': 'float',
        'usec_per_rename_op': 'float',
        'usec_per_rmdir_op': 'float',
        'usec_per_setattr_op': 'float',
        'usec_per_symlink_op': 'float',
        'usec_per_write_op': 'float'
    }

    attribute_map = {
        'name': 'name',
        'id': 'id',
        'accesses_per_sec': 'accesses_per_sec',
        'aggregate_file_metadata_creates_per_sec': 'aggregate_file_metadata_creates_per_sec',
        'aggregate_file_metadata_modifies_per_sec': 'aggregate_file_metadata_modifies_per_sec',
        'aggregate_file_metadata_reads_per_sec': 'aggregate_file_metadata_reads_per_sec',
        'aggregate_other_per_sec': 'aggregate_other_per_sec',
        'aggregate_share_metadata_reads_per_sec': 'aggregate_share_metadata_reads_per_sec',
        'aggregate_usec_per_file_metadata_create_op': 'aggregate_usec_per_file_metadata_create_op',
        'aggregate_usec_per_file_metadata_modify_op': 'aggregate_usec_per_file_metadata_modify_op',
        'aggregate_usec_per_file_metadata_read_op': 'aggregate_usec_per_file_metadata_read_op',
        'aggregate_usec_per_other_op': 'aggregate_usec_per_other_op',
        'aggregate_usec_per_share_metadata_read_op': 'aggregate_usec_per_share_metadata_read_op',
        'creates_per_sec': 'creates_per_sec',
        'fsinfos_per_sec': 'fsinfos_per_sec',
        'fsstats_per_sec': 'fsstats_per_sec',
        'getattrs_per_sec': 'getattrs_per_sec',
        'links_per_sec': 'links_per_sec',
        'lookups_per_sec': 'lookups_per_sec',
        'mkdirs_per_sec': 'mkdirs_per_sec',
        'pathconfs_per_sec': 'pathconfs_per_sec',
        'reads_per_sec': 'reads_per_sec',
        'readdirs_per_sec': 'readdirs_per_sec',
        'readdirpluses_per_sec': 'readdirpluses_per_sec',
        'readlinks_per_sec': 'readlinks_per_sec',
        'removes_per_sec': 'removes_per_sec',
        'renames_per_sec': 'renames_per_sec',
        'rmdirs_per_sec': 'rmdirs_per_sec',
        'setattrs_per_sec': 'setattrs_per_sec',
        'symlinks_per_sec': 'symlinks_per_sec',
        'time': 'time',
        'writes_per_sec': 'writes_per_sec',
        'usec_per_access_op': 'usec_per_access_op',
        'usec_per_create_op': 'usec_per_create_op',
        'usec_per_fsinfo_op': 'usec_per_fsinfo_op',
        'usec_per_fsstat_op': 'usec_per_fsstat_op',
        'usec_per_getattr_op': 'usec_per_getattr_op',
        'usec_per_link_op': 'usec_per_link_op',
        'usec_per_lookup_op': 'usec_per_lookup_op',
        'usec_per_mkdir_op': 'usec_per_mkdir_op',
        'usec_per_pathconf_op': 'usec_per_pathconf_op',
        'usec_per_read_op': 'usec_per_read_op',
        'usec_per_readdir_op': 'usec_per_readdir_op',
        'usec_per_readdirplus_op': 'usec_per_readdirplus_op',
        'usec_per_readlink_op': 'usec_per_readlink_op',
        'usec_per_remove_op': 'usec_per_remove_op',
        'usec_per_rename_op': 'usec_per_rename_op',
        'usec_per_rmdir_op': 'usec_per_rmdir_op',
        'usec_per_setattr_op': 'usec_per_setattr_op',
        'usec_per_symlink_op': 'usec_per_symlink_op',
        'usec_per_write_op': 'usec_per_write_op'
    }

    required_args = {
    }

    def __init__(
        self,
        name=None,  # type: str
        id=None,  # type: str
        accesses_per_sec=None,  # type: float
        aggregate_file_metadata_creates_per_sec=None,  # type: float
        aggregate_file_metadata_modifies_per_sec=None,  # type: float
        aggregate_file_metadata_reads_per_sec=None,  # type: float
        aggregate_other_per_sec=None,  # type: float
        aggregate_share_metadata_reads_per_sec=None,  # type: float
        aggregate_usec_per_file_metadata_create_op=None,  # type: float
        aggregate_usec_per_file_metadata_modify_op=None,  # type: float
        aggregate_usec_per_file_metadata_read_op=None,  # type: float
        aggregate_usec_per_other_op=None,  # type: float
        aggregate_usec_per_share_metadata_read_op=None,  # type: float
        creates_per_sec=None,  # type: float
        fsinfos_per_sec=None,  # type: float
        fsstats_per_sec=None,  # type: float
        getattrs_per_sec=None,  # type: float
        links_per_sec=None,  # type: float
        lookups_per_sec=None,  # type: float
        mkdirs_per_sec=None,  # type: float
        pathconfs_per_sec=None,  # type: float
        reads_per_sec=None,  # type: float
        readdirs_per_sec=None,  # type: float
        readdirpluses_per_sec=None,  # type: float
        readlinks_per_sec=None,  # type: float
        removes_per_sec=None,  # type: float
        renames_per_sec=None,  # type: float
        rmdirs_per_sec=None,  # type: float
        setattrs_per_sec=None,  # type: float
        symlinks_per_sec=None,  # type: float
        time=None,  # type: int
        writes_per_sec=None,  # type: float
        usec_per_access_op=None,  # type: float
        usec_per_create_op=None,  # type: float
        usec_per_fsinfo_op=None,  # type: float
        usec_per_fsstat_op=None,  # type: float
        usec_per_getattr_op=None,  # type: float
        usec_per_link_op=None,  # type: float
        usec_per_lookup_op=None,  # type: float
        usec_per_mkdir_op=None,  # type: float
        usec_per_pathconf_op=None,  # type: float
        usec_per_read_op=None,  # type: float
        usec_per_readdir_op=None,  # type: float
        usec_per_readdirplus_op=None,  # type: float
        usec_per_readlink_op=None,  # type: float
        usec_per_remove_op=None,  # type: float
        usec_per_rename_op=None,  # type: float
        usec_per_rmdir_op=None,  # type: float
        usec_per_setattr_op=None,  # type: float
        usec_per_symlink_op=None,  # type: float
        usec_per_write_op=None,  # type: float
    ):
        """
        Keyword args:
            name (str): Name of the object (e.g., a file system or snapshot).
            id (str): A non-modifiable, globally unique ID chosen by the system.
            accesses_per_sec (float): ACCESS requests processed per second.
            aggregate_file_metadata_creates_per_sec (float): Sum of file-level or directory-level create-like metadata requests per second. Includes CREATE, LINK, MKDIR, and SYMLINK.
            aggregate_file_metadata_modifies_per_sec (float): Sum of file-level or directory-level modify-like and delete-like metadata requests per second. Includes REMOVE, RENAME, RMDIR, and SETATTR.
            aggregate_file_metadata_reads_per_sec (float): Sum of file-level or directory-level read-like metadata requests per second. Includes GETATTR, LOOKUP, PATHCONF, READDIR, READDIRPLUS, and READLINK.
            aggregate_other_per_sec (float): Sum of all other requests processed per second. This includes COMMIT, MKNOD, NULL, NLM operations, and operations which are supported for NFSv4.1 but not NFSv3.
            aggregate_share_metadata_reads_per_sec (float): Sum of share-level read-like metadata requests per second. Includes ACCESS, FSINFO, and FSSTAT.
            aggregate_usec_per_file_metadata_create_op (float): Average time, measured in microseconds, it takes the array to process a file-level or directory-level create-like metadata request. Includes CREATE, LINK, MKDIR, and SYMLINK.
            aggregate_usec_per_file_metadata_modify_op (float): Average time, measured in microseconds, it takes the array to process a file-level or directory-level modify-like or delete-like metadata request. Includes REMOVE, RENAME, RMDIR, and SETATTR.
            aggregate_usec_per_file_metadata_read_op (float): Average time, measured in microseconds, it takes the array to process a file-level or directory-level read-like metadata request. Includes GETATTR, LOOKUP, PATHCONF, READDIR, READDIRPLUS, and READLINK.
            aggregate_usec_per_other_op (float): Average time, measured in microseconds, it takes the array to process all other requests. This includes COMMIT, MKNOD, NULL, NLM operations, and operations which are supported for NFSv4.1 but not NFSv3.
            aggregate_usec_per_share_metadata_read_op (float): Average time, measured in microseconds, it takes the array to process a share-level read-like metadata request. Includes ACCESS, FSINFO, and FSSTAT.
            creates_per_sec (float): CREATE requests processed per second.
            fsinfos_per_sec (float): FSINFO requests processed per second.
            fsstats_per_sec (float): FSSTAT requests processed per second.
            getattrs_per_sec (float): GETATTR requests processed per second.
            links_per_sec (float): LINK requests processed per second.
            lookups_per_sec (float): LOOKUP requests processed per second.
            mkdirs_per_sec (float): MKDIR requests processed per second.
            pathconfs_per_sec (float): PATHCONF requests processed per second.
            reads_per_sec (float): READ requests processed per second.
            readdirs_per_sec (float): READDIR requests processed per second.
            readdirpluses_per_sec (float): READDIRPLUS requests processed per second.
            readlinks_per_sec (float): READLINK requests processed per second.
            removes_per_sec (float): REMOVE requests processed per second.
            renames_per_sec (float): RENAME requests processed per second.
            rmdirs_per_sec (float): RMDIR requests processed per second.
            setattrs_per_sec (float): SETATTR requests processed per second.
            symlinks_per_sec (float): SYMLINK requests processed per second.
            time (int): Sample time in milliseconds since UNIX epoch.
            writes_per_sec (float): WRITE requests processed per second.
            usec_per_access_op (float): Average time, measured in microseconds, it takes the array to process an ACCESS request.
            usec_per_create_op (float): Average time, measured in microseconds, it takes the array to process a CREATE request.
            usec_per_fsinfo_op (float): Average time, measured in microseconds, it takes the array to process an FSINFO request.
            usec_per_fsstat_op (float): Average time, measured in microseconds, it takes the array to process an FSSTAT request.
            usec_per_getattr_op (float): Average time, measured in microseconds, it takes the array to process a GETATTR request.
            usec_per_link_op (float): Average time, measured in microseconds, it takes the array to process a LINK request.
            usec_per_lookup_op (float): Average time, measured in microseconds, it takes the array to process a LOOKUP request.
            usec_per_mkdir_op (float): Average time, measured in microseconds, it takes the array to process a MKDIR request.
            usec_per_pathconf_op (float): Average time, measured in microseconds, it takes the array to process a PATHCONF request.
            usec_per_read_op (float): Average time, measured in microseconds, it takes the array to process a READ request.
            usec_per_readdir_op (float): Average time, measured in microseconds, it takes the array to process a READDIR request.
            usec_per_readdirplus_op (float): Average time, measured in microseconds, it takes the array to process a READDIRPLUS request.
            usec_per_readlink_op (float): Average time, measured in microseconds, it takes the array to process a READLINK request.
            usec_per_remove_op (float): Average time, measured in microseconds, it takes the array to process a REMOVE request.
            usec_per_rename_op (float): Average time, measured in microseconds, it takes the array to process a RENAME request.
            usec_per_rmdir_op (float): Average time, measured in microseconds, it takes the array to process an RMDIR request.
            usec_per_setattr_op (float): Average time, measured in microseconds, it takes the array to process a SETATTR request.
            usec_per_symlink_op (float): Average time, measured in microseconds, it takes the array to process a SYMLINK request.
            usec_per_write_op (float): Average time, measured in microseconds, it takes the array to process a WRITE request.
        """
        if name is not None:
            self.name = name
        if id is not None:
            self.id = id
        if accesses_per_sec is not None:
            self.accesses_per_sec = accesses_per_sec
        if aggregate_file_metadata_creates_per_sec is not None:
            self.aggregate_file_metadata_creates_per_sec = aggregate_file_metadata_creates_per_sec
        if aggregate_file_metadata_modifies_per_sec is not None:
            self.aggregate_file_metadata_modifies_per_sec = aggregate_file_metadata_modifies_per_sec
        if aggregate_file_metadata_reads_per_sec is not None:
            self.aggregate_file_metadata_reads_per_sec = aggregate_file_metadata_reads_per_sec
        if aggregate_other_per_sec is not None:
            self.aggregate_other_per_sec = aggregate_other_per_sec
        if aggregate_share_metadata_reads_per_sec is not None:
            self.aggregate_share_metadata_reads_per_sec = aggregate_share_metadata_reads_per_sec
        if aggregate_usec_per_file_metadata_create_op is not None:
            self.aggregate_usec_per_file_metadata_create_op = aggregate_usec_per_file_metadata_create_op
        if aggregate_usec_per_file_metadata_modify_op is not None:
            self.aggregate_usec_per_file_metadata_modify_op = aggregate_usec_per_file_metadata_modify_op
        if aggregate_usec_per_file_metadata_read_op is not None:
            self.aggregate_usec_per_file_metadata_read_op = aggregate_usec_per_file_metadata_read_op
        if aggregate_usec_per_other_op is not None:
            self.aggregate_usec_per_other_op = aggregate_usec_per_other_op
        if aggregate_usec_per_share_metadata_read_op is not None:
            self.aggregate_usec_per_share_metadata_read_op = aggregate_usec_per_share_metadata_read_op
        if creates_per_sec is not None:
            self.creates_per_sec = creates_per_sec
        if fsinfos_per_sec is not None:
            self.fsinfos_per_sec = fsinfos_per_sec
        if fsstats_per_sec is not None:
            self.fsstats_per_sec = fsstats_per_sec
        if getattrs_per_sec is not None:
            self.getattrs_per_sec = getattrs_per_sec
        if links_per_sec is not None:
            self.links_per_sec = links_per_sec
        if lookups_per_sec is not None:
            self.lookups_per_sec = lookups_per_sec
        if mkdirs_per_sec is not None:
            self.mkdirs_per_sec = mkdirs_per_sec
        if pathconfs_per_sec is not None:
            self.pathconfs_per_sec = pathconfs_per_sec
        if reads_per_sec is not None:
            self.reads_per_sec = reads_per_sec
        if readdirs_per_sec is not None:
            self.readdirs_per_sec = readdirs_per_sec
        if readdirpluses_per_sec is not None:
            self.readdirpluses_per_sec = readdirpluses_per_sec
        if readlinks_per_sec is not None:
            self.readlinks_per_sec = readlinks_per_sec
        if removes_per_sec is not None:
            self.removes_per_sec = removes_per_sec
        if renames_per_sec is not None:
            self.renames_per_sec = renames_per_sec
        if rmdirs_per_sec is not None:
            self.rmdirs_per_sec = rmdirs_per_sec
        if setattrs_per_sec is not None:
            self.setattrs_per_sec = setattrs_per_sec
        if symlinks_per_sec is not None:
            self.symlinks_per_sec = symlinks_per_sec
        if time is not None:
            self.time = time
        if writes_per_sec is not None:
            self.writes_per_sec = writes_per_sec
        if usec_per_access_op is not None:
            self.usec_per_access_op = usec_per_access_op
        if usec_per_create_op is not None:
            self.usec_per_create_op = usec_per_create_op
        if usec_per_fsinfo_op is not None:
            self.usec_per_fsinfo_op = usec_per_fsinfo_op
        if usec_per_fsstat_op is not None:
            self.usec_per_fsstat_op = usec_per_fsstat_op
        if usec_per_getattr_op is not None:
            self.usec_per_getattr_op = usec_per_getattr_op
        if usec_per_link_op is not None:
            self.usec_per_link_op = usec_per_link_op
        if usec_per_lookup_op is not None:
            self.usec_per_lookup_op = usec_per_lookup_op
        if usec_per_mkdir_op is not None:
            self.usec_per_mkdir_op = usec_per_mkdir_op
        if usec_per_pathconf_op is not None:
            self.usec_per_pathconf_op = usec_per_pathconf_op
        if usec_per_read_op is not None:
            self.usec_per_read_op = usec_per_read_op
        if usec_per_readdir_op is not None:
            self.usec_per_readdir_op = usec_per_readdir_op
        if usec_per_readdirplus_op is not None:
            self.usec_per_readdirplus_op = usec_per_readdirplus_op
        if usec_per_readlink_op is not None:
            self.usec_per_readlink_op = usec_per_readlink_op
        if usec_per_remove_op is not None:
            self.usec_per_remove_op = usec_per_remove_op
        if usec_per_rename_op is not None:
            self.usec_per_rename_op = usec_per_rename_op
        if usec_per_rmdir_op is not None:
            self.usec_per_rmdir_op = usec_per_rmdir_op
        if usec_per_setattr_op is not None:
            self.usec_per_setattr_op = usec_per_setattr_op
        if usec_per_symlink_op is not None:
            self.usec_per_symlink_op = usec_per_symlink_op
        if usec_per_write_op is not None:
            self.usec_per_write_op = usec_per_write_op

    def __setattr__(self, key, value):
        if key not in self.attribute_map:
            raise KeyError("Invalid key `{}` for `ArrayNfsSpecificPerformance`".format(key))
        if key == "accesses_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `accesses_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "aggregate_file_metadata_creates_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `aggregate_file_metadata_creates_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "aggregate_file_metadata_modifies_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `aggregate_file_metadata_modifies_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "aggregate_file_metadata_reads_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `aggregate_file_metadata_reads_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "aggregate_other_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `aggregate_other_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "aggregate_share_metadata_reads_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `aggregate_share_metadata_reads_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "aggregate_usec_per_file_metadata_create_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `aggregate_usec_per_file_metadata_create_op`, must be a value greater than or equal to `0.0`")
        if key == "aggregate_usec_per_file_metadata_modify_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `aggregate_usec_per_file_metadata_modify_op`, must be a value greater than or equal to `0.0`")
        if key == "aggregate_usec_per_file_metadata_read_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `aggregate_usec_per_file_metadata_read_op`, must be a value greater than or equal to `0.0`")
        if key == "aggregate_usec_per_other_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `aggregate_usec_per_other_op`, must be a value greater than or equal to `0.0`")
        if key == "aggregate_usec_per_share_metadata_read_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `aggregate_usec_per_share_metadata_read_op`, must be a value greater than or equal to `0.0`")
        if key == "creates_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `creates_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "fsinfos_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `fsinfos_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "fsstats_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `fsstats_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "getattrs_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `getattrs_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "links_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `links_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "lookups_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `lookups_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "mkdirs_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `mkdirs_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "pathconfs_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `pathconfs_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "reads_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `reads_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "readdirs_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `readdirs_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "readdirpluses_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `readdirpluses_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "readlinks_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `readlinks_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "removes_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `removes_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "renames_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `renames_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "rmdirs_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `rmdirs_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "setattrs_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `setattrs_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "symlinks_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `symlinks_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "writes_per_sec" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `writes_per_sec`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_access_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_access_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_create_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_create_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_fsinfo_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_fsinfo_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_fsstat_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_fsstat_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_getattr_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_getattr_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_link_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_link_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_lookup_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_lookup_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_mkdir_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_mkdir_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_pathconf_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_pathconf_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_read_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_read_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_readdir_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_readdir_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_readdirplus_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_readdirplus_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_readlink_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_readlink_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_remove_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_remove_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_rename_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_rename_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_rmdir_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_rmdir_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_setattr_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_setattr_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_symlink_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_symlink_op`, must be a value greater than or equal to `0.0`")
        if key == "usec_per_write_op" and value is not None:
            if value < 0.0:
                raise ValueError("Invalid value for `usec_per_write_op`, must be a value greater than or equal to `0.0`")
        self.__dict__[key] = value

    def __getattribute__(self, item):
        value = object.__getattribute__(self, item)
        if isinstance(value, Property):
            return None
        else:
            return value

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            if hasattr(self, attr):
                value = getattr(self, attr)
                if isinstance(value, list):
                    result[attr] = list(map(
                        lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                        value
                    ))
                elif hasattr(value, "to_dict"):
                    result[attr] = value.to_dict()
                elif isinstance(value, dict):
                    result[attr] = dict(map(
                        lambda item: (item[0], item[1].to_dict())
                        if hasattr(item[1], "to_dict") else item,
                        value.items()
                    ))
                else:
                    result[attr] = value
        if issubclass(ArrayNfsSpecificPerformance, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, ArrayNfsSpecificPerformance):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
