<?xml version="1.0" encoding="UTF-8"?>
<!--
  TR-140 StorageService: 1.3 Service Object definition [COMMON]

  Copyright (c) 2017-2019, Broadband Forum

  The undersigned members have elected to grant the copyright to
  their contributed material used in this software:
    Copyright (c) 2017-2018 ARRIS Enterprises, LLC.

  Redistribution and use in source and binary forms, with or
  without modification, are permitted provided that the following
  conditions are met:

  1. Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.

  2. Redistributions in binary form must reproduce the above
     copyright notice, this list of conditions and the following
     disclaimer in the documentation and/or other materials
     provided with the distribution.

  3. Neither the name of the copyright holder nor the names of its
     contributors may be used to endorse or promote products
     derived from this software without specific prior written
     permission.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

  The above license is used as a license under copyright only.
  Please reference the Forum IPR Policy for patent licensing terms
  <https://www.broadband-forum.org/ipr-policy>.

  Any moral rights which are necessary to exercise under the above
  license grant are also deemed granted under this license.

  Summary:
    TR-140 StorageService: 1.3 Service Object update.

  Editor:
    * John Blackford, CommScope

  Broadband User Services Work Area Directors:
    * Jason Walls, QA Cafe
    * John Blackford, CommScope

  Issue History (Filename: Approval Date: Publication Date: Changes):
    * tr-140-1-0-2.xml: April 2010: April 2010:
       - corresponds to TR-140 Issue 1, Corrigendum 2
    * tr-140-1-1-0.xml: April 2010: April 2010:
       - corresponds to TR-140 Issue 1, Amendment 1
    * tr-140-1-2-0.xml: July 2011: July 2011:
       - corresponds to TR-140 Issue 1, Amendment 2
    * tr-140-1-3-0.xml: 8 May 2017: 9 June 2017:
       - corresponds to TR-140 Amendment 3.
    * Version 1.3.1: 13 September 2019: 13 September 2019:
       - Flattened datamodel to tr-140-1-common.xml
-->

<dm:document xmlns:dm="urn:broadband-forum-org:cwmp:datamodel-1-7"
             xmlns:dmr="urn:broadband-forum-org:cwmp:datamodel-report-0-1"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	     xsi:schemaLocation="urn:broadband-forum-org:cwmp:datamodel-1-7
                 https://www.broadband-forum.org/cwmp/cwmp-datamodel-1-7.xsd
                                 urn:broadband-forum-org:cwmp:datamodel-report-0-1
                 https://www.broadband-forum.org/cwmp/cwmp-datamodel-report.xsd"
             spec="urn:broadband-forum-org:tr-140-1-3-1" file="tr-140-1-3-1-common.xml">
  <description>
    {{docname|StorageService:1.3 Service Object Definition}}
    {{appdate|September 2019}}
    {{trname|TR-140a3}}
    May 2017: {{xmlref|tr-140-1-3-0|Original}}
    * Update file system and connection enumerations
    * Added SMART data model
    September 2019: {{xmlref|tr-139-1-3-1-common|Corrigendum 1}}
    * Added USP support (split XML into common, CWMP and USP files)
  </description>

  <import file="tr-069-biblio.xml" spec="urn:broadband-forum-org:tr-069"/>

  <import file="tr-106-types.xml" spec="urn:broadband-forum-org:tr-106">
    <dataType name="Alias" ref="_AliasCommon"/>
  </import>

  <model name="StorageService:1.3" isService="true">
    <parameter name="StorageServiceNumberOfEntries" access="readOnly" dmr:version="1.1">
      <description>
        Number of entries in {{object|StorageService}}.
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>
    <object name="StorageService.{i}." access="readOnly" numEntriesParameter="StorageServiceNumberOfEntries" minEntries="0" maxEntries="unbounded" dmr:version="1.0">
      <description>
        The Service Object for a Storage Service device.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <parameter name="Enable" access="readWrite" dmr:version="1.0">
        <description>
          Enables or Disables the entire Storage mechanism.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="Alias" access="readWrite" activeNotify="canDeny" dmr:version="1.2">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="Alias"/>
        </syntax>
      </parameter>
      <parameter name="PhysicalMediumNumberOfEntries" access="readOnly" dmr:version="1.0">
        <description>
          The number of instances of {{object|.PhysicalMedium.{i}.}}.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="StorageArrayNumberOfEntries" access="readOnly" dmr:version="1.0">
        <description>
          The number of instances of {{object|.StorageArray.{i}.}}.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="LogicalVolumeNumberOfEntries" access="readOnly" dmr:version="1.0">
        <description>
          The number of instances of {{object|.LogicalVolume.{i}.}}.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="UserAccountNumberOfEntries" access="readOnly" dmr:version="1.0">
        <description>
          The number of instances of {{object|.UserAccount.{i}.}}.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="UserGroupNumberOfEntries" access="readOnly" dmr:version="1.0">
        <description>
          The number of instances of {{object|.UserGroup.{i}.}}.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.Capabilities." access="readOnly" minEntries="1" maxEntries="1" dmr:version="1.0">
      <description>
        The overall capabilities of a Storage Service device.  This is a constant read-only object, meaning that only a firmware upgrade will cause these values to be altered.
        Note that when TR-140 was originally published there was a typo in this object name, which has been corrected.
      </description>
      <parameter name="FTPCapable" access="readOnly" dmr:version="1.0">
        <description>
          Does this device contain an FTP server allowing clients to access the data via an FTP client?
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="SFTPCapable" access="readOnly" dmr:version="1.0">
        <description>
          Does this device contain an SSH FTP server allowing clients to access the data via an SFTP client?
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="HTTPCapable" access="readOnly" dmr:version="1.0">
        <description>
          Does this device contain an HTTP server allowing clients to access the data via an HTTP client?
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="HTTPSCapable" access="readOnly" dmr:version="1.0">
        <description>
          Does this device contain an HTTPS server allowing clients to access the data via an HTTPS client?
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="HTTPWritable" access="readOnly" dmr:version="1.0">
        <description>
          Does this device contain an HTTP server that supports creating files via an HTTP PUT/POST mechanism that would allow an HTTP client to upload files via HTTP?  This is also sometimes referred to as "WebDAV" support.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="SupportedNetworkProtocols" access="readOnly" dmr:version="1.0">
        <description>
          {{list}} Supported application-level network protocols. {{enum}}
          The list MAY include vendor-specific protocols, which MUST be in the format defined in {{bibref|TR-106}}.  For example: "X_EXAMPLE-COM_MyProt.
        </description>
        <syntax>
          <list/>
          <string>
            <enumeration value="SMB"/>
            <enumeration value="NFS"/>
            <enumeration value="AFP"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="SupportedFileSystemTypes" access="readOnly" dmr:version="1.0">
        <description>
          {{list}} Supported FileSystems Types.  {{enum}}
          The list MAY include vendor-specific protocols, which MUST be in the format defined in {{bibref|TR-106}}.  For example: "X_EXAMPLE-COM_MyType.
        </description>
        <syntax>
          <list/>
          <string>
            <enumeration value="FAT16"/>
            <enumeration value="FAT32"/>
            <enumeration value="NTFS"/>
            <enumeration value="ReFs">
              <description>
                Resilient File System - Microsoft
              </description>
            </enumeration>
            <enumeration value="HFS">
              <description>
                Mac OS Standard format
              </description>
            </enumeration>
            <enumeration value="HFS+">
              <description>
                Mac OS Extended format
              </description>
            </enumeration>
            <enumeration value="HSFJ">
              <description>
                Journaled Mac OS Extended format
              </description>
            </enumeration>
            <enumeration value="ext2"/>
            <enumeration value="ext3"/>
            <enumeration value="ext4"/>
            <enumeration value="XFS"/>
            <enumeration value="REISER">
              <description>
                ReiserFS
              </description>
            </enumeration>
            <enumeration value="Reiser4"/>
            <enumeration value="btrfs"/>
            <enumeration value="ZFS">
              <description>
                Zetta File System
              </description>
            </enumeration>
            <enumeration value="EncFs">
              <description>
                Encrypted File System
              </description>
            </enumeration>
            <enumeration value="exFAT">
              <description>
                Extended File Allocation Table for Flash memory
              </description>
            </enumeration>
          </string>
        </syntax>
      </parameter>
      <parameter name="SupportedRaidTypes" access="readOnly" dmr:version="1.0">
        <description>
          {{list}} Supported RAID types. {{enum}}
          The list MAY include vendor-specific protocols, which MUST be in the format defined in {{bibref|TR-106}}.  For example:"X_EXAMPLE-COM_MyRaid.
        </description>
        <syntax>
          <list/>
          <string>
            <enumeration value="RAID0"/>
            <enumeration value="RAID1"/>
            <enumeration value="RAID2"/>
            <enumeration value="RAID3"/>
            <enumeration value="RAID4"/>
            <enumeration value="RAID5"/>
            <enumeration value="RAID6"/>
            <enumeration value="RAID10"/>
            <enumeration value="RAID0+1"/>
            <enumeration value="RAID30"/>
            <enumeration value="RAID50"/>
            <enumeration value="RAID60"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="VolumeEncryptionCapable" access="readOnly" dmr:version="1.0">
        <description>
          Does this device have the ability to encrypt and decrypt Logical Volumes as they are stored and retrieved?
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.NetInfo." access="readOnly" minEntries="1" maxEntries="1" dmr:version="1.0">
      <description>
        This object provides general LAN network information about this device.
      </description>
      <parameter name="HostName" access="readWrite" dmr:version="1.0">
        <description>
          Logical name which identifies the device on the local network.  This is the first segment of a fully qualified domain name (FQDN).  Combining {{param}}, a "." and the {{param|DomainName}} will result in a fully qualified domain name.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="DomainName" access="readWrite" dmr:version="1.0">
        <description>
          Domain name for the device on the local network.  Combining {{param|HostName}}, a "." and {{param}} will result in a fully qualified domain name (FQDN).  For example, if the HostName contains "myLaptop" and the DomainName contains "dsl.sp1.com", then the FQDN would be "myLaptop.dsl.sp1.com".
        </description>
        <syntax>
          <string>
            <size maxLength="255"/>
          </string>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.UserGroup.{i}." access="readWrite" numEntriesParameter="UserGroupNumberOfEntries" enableParameter="Enable" minEntries="0" maxEntries="unbounded" dmr:version="1.0">
      <description>
        This object provides information about each user group configured on this device, which allows the grouping of user accounts for easier maintenance of permissions.
      </description>
      <uniqueKey>
        <parameter ref="GroupName"/>
      </uniqueKey>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <parameter name="Enable" access="readWrite" dmr:version="1.0">
        <description>
          Enables or disables this group.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Alias" access="readWrite" activeNotify="canDeny" dmr:version="1.2">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="Alias"/>
        </syntax>
      </parameter>
      <parameter name="GroupName" access="readWrite" dmr:version="1.0">
        <description>
          The unique name of the group.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.UserAccount.{i}." access="readWrite" numEntriesParameter="UserAccountNumberOfEntries" enableParameter="Enable" minEntries="0" maxEntries="unbounded" dmr:version="1.0">
      <description>
        This object provides information about each user configured on this device, which provides a means for controlling access to the device.
      </description>
      <uniqueKey>
        <parameter ref="Username"/>
      </uniqueKey>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <parameter name="Enable" access="readWrite" dmr:version="1.0">
        <description>
          Enables or disables this user.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Alias" access="readWrite" activeNotify="canDeny" dmr:version="1.2">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="Alias"/>
        </syntax>
      </parameter>
      <parameter name="Username" access="readWrite" dmr:version="1.0">
        <description>
          The unique name of the user.  Also used for authentication.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="Password" access="readWrite" dmr:version="1.0">
        <description>
          Password used to authenticate the user when connecting to the Storage Service Device.
        </description>
        <syntax hidden="true">
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="UserGroupParticipation" access="readWrite" dmr:version="1.0">
        <description>
          Represents a User Group that this User Account is a member of.  Each {{object|.UserGroup.{i}.}} referenced by this parameter MUST exist within the same StorageService instance.
        </description>
        <syntax>
          <list>
            <size maxLength="1024"/>
          </list>
          <string>
            <pathRef refType="strong" targetParent=".UserGroup." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="AllowFTPAccess" access="readWrite" dmr:version="1.0">
        <description>
          Enables or disables access via FTP (including SSH FTP access) for this user.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="AllowHTTPAccess" access="readWrite" dmr:version="1.0">
        <description>
          Enables or disables access via HTTP (including HTTPS access) for this user.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.NetworkServer." access="readOnly" minEntries="1" maxEntries="1" dmr:version="1.0">
      <description>
        This object allows the control of network layer protocols authorization enforcement.
      </description>
      <parameter name="AFPEnable" access="readWrite" dmr:version="1.0">
        <description>
          Enables or disables the AFP network protocol.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="NFSEnable" access="readWrite" dmr:version="1.0">
        <description>
          Enables or disables the NFS network protocol.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="SMBEnable" access="readWrite" dmr:version="1.0">
        <description>
          Enables or disables the SMB network protocol.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="NetworkProtocolAuthReq" access="readWrite" dmr:version="1.0">
        <description>
          If this parameter is set to {{false}} then the device MUST NOT attempt to request login credentials or authenticate access from network layer protocols such as AFP, NFS, and SMB.  If this parameter is set to {{true}} then the device MUST attempt to request login credentials or authenticate access from network layer protocols such as AFP, NFS, and SMB by using an instance of {{object|.UserAccount.{i}.}} found on this device.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.FTPServer." access="readOnly" minEntries="1" maxEntries="1" dmr:version="1.0">
      <description>
        This object allows the configuration of the FTP server.
      </description>
      <parameter name="Enable" access="readWrite" dmr:version="1.0">
        <description>
          Enables or disables the FTP server.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly" dmr:version="1.0">
        <description>
          The current status of this FTP server.
        </description>
        <syntax>
          <string>
            <enumeration value="Enabled"/>
            <enumeration value="Disabled"/>
            <enumeration value="Error"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="MaxNumUsers" access="readWrite" dmr:version="1.0">
        <description>
          Maximum number of users allowed to log in to the device at once via FTP.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="1" maxInclusive="32"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="IdleTime" access="readWrite" dmr:version="1.0">
        <description>
          Maximum amount of time in {{units}} that the FTP socket will remain open without any activity.  If set to 0 an infinite timeout will apply.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="600"/>
            <units value="seconds"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="PortNumber" access="readWrite" dmr:version="1.0">
        <description>
          The port number that the FTP server is listening on.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="65535"/>
          </unsignedInt>
          <default type="factory" value="21"/>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.FTPServer.AnonymousUser." access="readOnly" minEntries="1" maxEntries="1" dmr:version="1.0">
      <description>
        This object allows the configuration of anonymous FTP access.
      </description>
      <parameter name="Enable" access="readWrite" dmr:version="1.0">
        <description>
          Enables or disables support for anonymous access into the FTP server
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="StartingFolder" access="readWrite" dmr:version="1.0">
        <description>
          Represents the home directory for anonymous FTP access.  The {{object|.LogicalVolume.{i}.Folder.{i}.}} referenced by this parameter MUST exist within the same StorageService instance.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="weak" targetParent=".LogicalVolume.{i}.Folder." targetType="row"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="ReadOnlyAccess" access="readWrite" dmr:version="1.0">
        <description>
          If this is set to {{true}}, then the anonymous user is limited to only retrieval of files from the Storage Service (no deletions, copies, creations or uploads).  If this is set to {{false}}, then the anonymous user has full permissions within the folder specified in {{param|StartingFolder}}.  This SHOULD default to True.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.SFTPServer." access="readOnly" minEntries="1" maxEntries="1" dmr:version="1.0">
      <description>
        This object allows the configuration of the SSH FTP server.
      </description>
      <parameter name="Enable" access="readWrite" dmr:version="1.0">
        <description>
          Enables or disables the SSH FTP server.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly" dmr:version="1.0">
        <description>
          The current status of this SSH FTP server.
        </description>
        <syntax>
          <string>
            <enumeration value="Enabled"/>
            <enumeration value="Disabled"/>
            <enumeration value="Error"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="MaxNumUsers" access="readWrite" dmr:version="1.0">
        <description>
          Maximum number of users allowed to log in to the device at once via SFTP.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="1" maxInclusive="32"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="IdleTime" access="readWrite" dmr:version="1.0">
        <description>
          Maximum amount of time in {{units}} that the SFTP socket will remain open without any activity.  If set to 0 an infinite timeout will apply.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="600"/>
            <units value="seconds"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="PortNumber" access="readWrite" dmr:version="1.0">
        <description>
          The port number that the SSH FTP server is listening on.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="65535"/>
          </unsignedInt>
          <default type="factory" value="115"/>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.HTTPServer." access="readOnly" minEntries="1" maxEntries="1" dmr:version="1.0">
      <description>
        This object allows the configuration of the HTTP server.
      </description>
      <parameter name="Enable" access="readWrite" dmr:version="1.0">
        <description>
          Enables or disables the HTTP server.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly" dmr:version="1.0">
        <description>
          The current status of this HTTP server.
        </description>
        <syntax>
          <string>
            <enumeration value="Enabled"/>
            <enumeration value="Disabled"/>
            <enumeration value="Error"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="MaxNumUsers" access="readWrite" dmr:version="1.0">
        <description>
          Maximum number of users allowed to log in to the device at once via HTTP.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="1" maxInclusive="32"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="IdleTime" access="readWrite" dmr:version="1.0">
        <description>
          Maximum amount of time in {{units}} that the HTTP socket will remain open without any activity.  If set to 0 an infinite timeout will apply.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="600"/>
            <units value="seconds"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="HTTPWritingEnabled" access="readOnly" dmr:version="1.0">
        <description>
          Is support for the HTTP PUT/POST mechanism (WebDAV) enabled?
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="PortNumber" access="readWrite" dmr:version="1.0">
        <description>
          The port number that the HTTP server is listening on.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="65535"/>
          </unsignedInt>
          <default type="factory" value="80"/>
        </syntax>
      </parameter>
      <parameter name="AuthenticationReq" access="readWrite" dmr:version="1.0">
        <description>
          If {{true}}, HTTP will require login prior to access (basic or digest authentication).
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.HTTPSServer." access="readOnly" minEntries="1" maxEntries="1" dmr:version="1.0">
      <description>
        This object allows the configuration of the HTTPS server.
      </description>
      <parameter name="Enable" access="readWrite" dmr:version="1.0">
        <description>
          Enables or disables the HTTPS server.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly" dmr:version="1.0">
        <description>
          The current status of this HTTPS server.
        </description>
        <syntax>
          <string>
            <enumeration value="Enabled"/>
            <enumeration value="Disabled"/>
            <enumeration value="Error"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="MaxNumUsers" access="readWrite" dmr:version="1.0">
        <description>
          Maximum number of users allowed to log in to the device at once via HTTPS.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="1" maxInclusive="32"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="IdleTime" access="readWrite" dmr:version="1.0">
        <description>
          Maximum amount of time in {{units}} that the HTTPS socket will remain open without any activity.  If set to 0 an infinite timeout will apply.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="600"/>
            <units value="seconds"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="HTTPWritingEnabled" access="readOnly" dmr:version="1.0">
        <description>
          Is support for the HTTP PUT/POST mechanism (WebDAV) enabled?
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="PortNumber" access="readWrite" dmr:version="1.0">
        <description>
          The port number that the HTTPS server is listening on.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="65535"/>
          </unsignedInt>
          <default type="factory" value="443"/>
        </syntax>
      </parameter>
      <parameter name="AuthenticationReq" access="readWrite" dmr:version="1.0">
        <description>
          If {{true}}, HTTPS will require login prior to access (basic or digest authentication).
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.PhysicalMedium.{i}." access="readOnly" numEntriesParameter="PhysicalMediumNumberOfEntries" minEntries="0" maxEntries="unbounded" dmr:version="1.0">
      <description>
        This object provides information about each physical medium connected to this device.
      </description>
      <uniqueKey>
        <parameter ref="Name"/>
      </uniqueKey>
      <uniqueKey>
        <parameter ref="Vendor"/>
        <parameter ref="Model"/>
        <parameter ref="SerialNumber"/>
      </uniqueKey>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <parameter name="Alias" access="readWrite" activeNotify="canDeny" dmr:version="1.2">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="Alias"/>
        </syntax>
      </parameter>
      <parameter name="Name" access="readWrite" dmr:version="1.0">
        <description>
          A user-friendly name for this physical storage medium.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Vendor" access="readOnly" dmr:version="1.0">
        <description>
          The vendor of this physical storage medium.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Model" access="readOnly" dmr:version="1.0">
        <description>
          The model name/number of this physical storage medium.
        </description>
        <syntax>
          <string>
            <size maxLength="128"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="SerialNumber" access="readOnly" dmr:version="1.0">
        <description>
          The serial number of this physical storage medium.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="FirmwareVersion" access="readOnly" dmr:version="1.0">
        <description>
          The firmware version for firmware contained within the physical medium's controller.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="ConnectionType" access="readOnly" dmr:version="1.0">
        <description>
          The method of connection to this storage device.  {{enum}}
          The parameter MAY instead be a vendor-specific connection type, which MUST be in the format defined in {{bibref|TR-106}}.  For example:
          "X_EXAMPLE-COM_MyConnType"
        </description>
        <syntax>
          <string>
            <enumeration value="USB 1.1"/>
            <enumeration value="USB 2.0"/>
            <enumeration value="USB 3.0"/>
            <enumeration value="USB 3.1"/>
            <enumeration value="IEEE1394"/>
            <enumeration value="IEEE1394b"/>
            <enumeration value="IDE"/>
            <enumeration value="EIDE"/>
            <enumeration value="ATA/33"/>
            <enumeration value="ATA/66"/>
            <enumeration value="ATA/100"/>
            <enumeration value="ATA/133"/>
            <enumeration value="SATA/150"/>
            <enumeration value="SATA/300">
              <description>
                SATA 3.0 Gbit/s
              </description>
            </enumeration>
            <enumeration value="SATA/600">
              <description>
                SATA 6.0 Gbit/s
              </description>
            </enumeration>
            <enumeration value="SATA/1969">
              <description>
                SATA 16.0 Gbit/s
              </description>
            </enumeration>
            <enumeration value="SCSI-1"/>
            <enumeration value="Fast SCSI"/>
            <enumeration value="Fast-Wide SCSI"/>
            <enumeration value="Ultra SCSI"/>
            <enumeration value="Ultra Wide SCSI"/>
            <enumeration value="Ultra2 SCSI"/>
            <enumeration value="Ultra2 Wide SCSI"/>
            <enumeration value="Ultra3 SCSI"/>
            <enumeration value="Ultra-320 SCSI"/>
            <enumeration value="Ultra-640 SCSI"/>
            <enumeration value="SAS-1">
              <description>
                serial attached SCSI 3.0 Gbit/s
              </description>
            </enumeration>
            <enumeration value="SAS-2">
              <description>
                serial attached SCSI 6.0 Gbit/s
              </description>
            </enumeration>
            <enumeration value="SAS-3">
              <description>
                serial attached SCSI 12.0 Gbit/s
              </description>
            </enumeration>
            <enumeration value="SAS-4">
              <description>
                serial attached SCSI 22.5 Gbit/s
              </description>
            </enumeration>
            <enumeration value="SSA"/>
            <enumeration value="SSA-40"/>
            <enumeration value="Fibre Channel"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Type" access="readOnly" dmr:version="1.3">
        <description>
          Specifies the type of the physical medium
        </description>
        <syntax>
          <string>
            <enumeration value="HDD"/>
            <enumeration value="SSD"/>
            <enumeration value="SSHD">
              <description>
                Hybrid Drive
              </description>
            </enumeration>
          </string>
        </syntax>
      </parameter>
      <parameter name="Removable" access="readOnly" dmr:version="1.0">
        <description>
          Is this physical storage medium removable?  Removable storage implies that the removal action is part of normal operations and is expected to leave the data on the removable storage intact.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="Capacity" access="readOnly" dmr:version="1.0">
        <description>
          The formatted capacity of the physical storage medium in {{units}}.
        </description>
        <syntax>
          <unsignedInt>
            <units value="MB"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly" dmr:version="1.0">
        <description>
          The general activity status of this physical storage medium.
        </description>
        <syntax>
          <string>
            <enumeration value="Online"/>
            <enumeration value="Standby"/>
            <enumeration value="Offline"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Uptime" access="readOnly" activeNotify="canDeny" dmr:version="1.0">
        <description>
          Time since boot in {{units}}. This MAY reflect S.M.A.R.T. PowerOnHours.
        </description>
        <syntax>
          <unsignedInt>
            <units value="hours"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="SMARTCapable" access="readOnly" dmr:version="1.0">
        <description>
          Is this physical medium capable of reporting S.M.A.R.T. statistics?
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="Health" access="readOnly" dmr:version="1.0">
        <description>
          The general health of this physical storage medium.  {{enum}}
          Note: Health MAY be obtained from S.M.A.R.T. data where available.
        </description>
        <syntax>
          <string>
            <enumeration value="OK"/>
            <enumeration value="Failing"/>
            <enumeration value="Error"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="HotSwappable" access="readOnly" dmr:version="1.0">
        <description>
          Is this physical medium capable of being removed while the device is powered up?  Hot-Swappable storage does not imply Removable storage; hot-swappable is an operation taken only when the disk has failed and needs to be replaced.  The data on the hot-swapped storage will not remain intact.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.PhysicalMedium.{i}.SMART." access="readOnly" minEntries="1" maxEntries="1" dmr:version="1.3">
      <description>
        This object provides SMART data information about the physical medium.  SMART attributes are not standardized, but many vendors provide the data below.
      </description>
      <parameter name="ReallocatedSectorsCount" access="readOnly" dmr:version="1.3">
        <description>
          Count of reallocated sectors. When the hard drive finds a read/write/verification error, it marks this sector as "reallocated" and transfers data to a special reserved area (spare area).
          This process is also known as remapping, and "reallocated" sectors are called remaps. However, as the number of reallocated sectors increases, the read/write speed tends to decrease.
          The raw value represents a count of the number of bad sectors that have been found and remapped. Thus, the higher the attribute value, the more sectors the drive has had to reallocate.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="PowerOnHours" access="readOnly" dmr:version="1.3">
        <description>
          Count of hours in power-on state. It shows total count of {{units}} in power-on state.
        </description>
        <syntax>
          <unsignedInt>
            <units value="hours"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="SpinRetryCount" access="readOnly" dmr:version="1.3">
        <description>
          Count of retry of spin start attempts. This attribute stores a total count of the spin start attempts to reach the fully operational speed (under the condition that the first attempt was unsuccessful). An increase of this attribute value is a sign of problems in the hard disk mechanical subsystem.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="PowerCycleCount" access="readOnly" dmr:version="1.3">
        <description>
          The count of full hard disk power on/off cycles.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="Temperature" access="readOnly" dmr:version="1.3">
        <description>
          Current internal temperature in {{units}}.
        </description>
        <syntax>
          <unsignedInt>
            <units value="degrees C"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="ReallocationEventCount" access="readOnly" dmr:version="1.3">
        <description>
          Count of remap operations. The raw value of this attribute shows the total count of attempts to transfer data from reallocated sectors to a spare area.
          Both successful and unsuccessful attempts are counted.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="CurrentPendingSectorCount" access="readOnly" dmr:version="1.3">
        <description>
          Count of "unstable" sectors (waiting to be remapped, because of unrecoverable read errors). If an unstable sector is subsequently read successfully, the sector is remapped and this value is decreased.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="UncorrectableSectorCount" access="readOnly" dmr:version="1.3">
        <description>
          The total number of uncorrectable errors when reading/writing a sector.
          A rise in the value of this attribute indicates defects of the disk surface and/or problems in the mechanical subsystem.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="ReadErrors" access="readOnly" dmr:version="1.3">
        <description>
          Total number of unrecoverable read errors.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="SoftReadErrors" access="readOnly" dmr:version="1.3">
        <description>
          Total number of off-track errors.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="WriteErrors" access="readOnly" dmr:version="1.3">
        <description>
          Total number of errors when writing a sector.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="SparesRemaining" access="readOnly" dmr:version="1.3">
        <description>
          Percentage of the spare sectors that can be used for reallocations remaining.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="100"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="PredictedFailure" access="readOnly" dmr:version="1.3">
        <description>
          Estimated number of {{units}} until the failure model in the device predicts the drive will fail.  -1 means the failure model is unable to make a prediction.
        </description>
        <syntax>
          <int>
            <units value="days"/>
          </int>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.StorageArray.{i}." access="readWrite" numEntriesParameter="StorageArrayNumberOfEntries" enableParameter="Enable" minEntries="0" maxEntries="unbounded" dmr:version="1.0">
      <description>
        This object provides information about each storage array (RAID) configured on this device.
        Creating an instance of this object generates a disabled {{object}} instance.  Before this new {{object}} instance can be enabled (via a SetParameterValues command), it MUST have the following parameters configured: {{param|Name}}, {{param|RaidType}}, and {{param|PhysicalMediumReference}}. Once an instance is enabled the following parameters become immutable for the life of the instance: {{param|Name}}, {{param|RaidType}}, and {{param|PhysicalMediumReference}}.
      </description>
      <uniqueKey>
        <parameter ref="PhysicalMediumReference"/>
      </uniqueKey>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <parameter name="Alias" access="readWrite" activeNotify="canDeny" dmr:version="1.2">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="Alias"/>
        </syntax>
      </parameter>
      <parameter name="Name" access="readWrite" dmr:version="1.0">
        <description>
          A user-friendly name for this Storage Array.
          Once this instance becomes enabled, this parameter will be immutable for the life of the instance.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly" dmr:version="1.0">
        <description>
          The current status of this StorageArray.
        </description>
        <syntax>
          <string>
            <enumeration value="Rebuilding">
              <description>
                Indicates a drive participating in an array is replaced, while the data striping and/or redundancy of the array are reestablished on the new disk. In this state, data operations to the array will function properly, but its performance could be significantly diminished.
              </description>
            </enumeration>
            <enumeration value="Initializing">
              <description>
                The state when the RAID array is being first constructed, and the data striping and/or redundancy of the array are first being established.  In this state, data operations to the array will function properly, but its performance could be significantly diminished and the redundancy might not be fully established.
              </description>
            </enumeration>
            <enumeration value="Offline">
              <description>
                Indicates the RAID array is not available.  This might occur because the administrator explicitly has disabled the array, or because underlying elements of the array, such as the physical disks, are not ready.
              </description>
            </enumeration>
            <enumeration value="Online">
              <description>
                Indicates the RAID array is fully operational.
              </description>
            </enumeration>
            <enumeration value="Error">
              <description>
                Indicates an error condition exists within the RAID array.  In this state, data operations to the array are not possible, and data loss might have occurred.
              </description>
            </enumeration>
            <enumeration value="Degraded">
              <description>
                Indicates the loss of a drive only in a Raid Type of more than 2 drives, that can support multiple failures. Data redundancy continues to be available but with degraded capability.
              </description>
            </enumeration>
            <enumeration value="Critical">
              <description>
                Indicates the loss of data redundancy, and a possible degraded state. The array continues to perform read/write operations.
              </description>
            </enumeration>
          </string>
          <default type="object" value="Offline"/>
        </syntax>
      </parameter>
      <parameter name="Enable" access="readWrite" dmr:version="1.0">
        <description>
          Enables or disables this StorageArray instance.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="RaidType" access="readWrite" dmr:version="1.0">
        <description>
          Note that after creation of the Storage Array, any subsequent writes to this parameter MUST be ignored as array type migration is not supported.  To identify which RAID Types are supported, see {{param|.Capabilities.SupportedRaidTypes}}.
          Once this instance becomes enabled, this parameter will be immutable for the life of the instance.
        </description>
        <syntax>
          <string>
            <enumerationRef targetParam=".Capabilities.SupportedRaidTypes"/>
          </string>
          <default type="object" value="Linear"/>
        </syntax>
      </parameter>
      <parameter name="UsableCapacity" access="readOnly" dmr:version="1.0">
        <description>
          The total Usable Capacity of the Storage Array in {{units}}. This is computed by the system based on {{param|PhysicalMediumReference}} and {{param|RaidType}}.  Disk size is a consideration, as many RAID Types use the smallest drive in the group for calculations.
        </description>
        <syntax>
          <unsignedInt>
            <units value="MB"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="PhysicalMediumReference" access="readWrite" dmr:version="1.0">
        <description>
          Represents the physical medium used by this RAID.  Each Physical Medium referenced by this parameter MUST exist within the same StorageService instance. A {{object|.PhysicalMedium.{i}.}} MUST only be referenced by one {{object|.StorageArray.{i}.}} instance.
          Once this instance becomes enabled, this parameter will be immutable for the life of the instance.
        </description>
        <syntax>
          <list>
            <size maxLength="1024"/>
          </list>
          <string>
            <pathRef refType="weak" targetParent=".PhysicalMedium." targetType="row"/>
          </string>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.LogicalVolume.{i}." access="readWrite" numEntriesParameter="LogicalVolumeNumberOfEntries" enableParameter="Enable" minEntries="0" maxEntries="unbounded" dmr:version="1.0">
      <description>
        This object provides information about each logical volume configured on this device.  A logical volume can reside either on an instance of a single {{object|.PhysicalMedium.{i}.}} or on an instance of a single {{object|.StorageArray.{i}.}} instance, but it can not span multiple instances of either. {{param|PhysicalReference}} is used to define where this {{object}} instance resides.
        Creating an instance of this object generates a disabled {{object}} instance.  Before this new {{object}} instance can be enabled (via a SetParameterValues command), it MUST have the following parameters configured: {{param|Name}}, {{param|PhysicalReference}}, and {{param|Capacity}}.  Once an instance is enabled the following parameters become immutable for the life of the instance: {{param|Name}}, {{param|PhysicalReference}}, and {{param|Capacity}}.
      </description>
      <uniqueKey>
        <parameter ref="Name"/>
      </uniqueKey>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <parameter name="Alias" access="readWrite" activeNotify="canDeny" dmr:version="1.2">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="Alias"/>
        </syntax>
      </parameter>
      <parameter name="Name" access="readWrite" dmr:version="1.0">
        <description>
          The name of the partition for this logical volume.
          Once this instance becomes enabled, this parameter will be immutable for the life of the instance. This parameter acts as the unique identifier for the instance, thus the device MUST NOT allow multiple {{object}} instances to use the same {{param}}.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly" dmr:version="1.0">
        <description>
          The current status of this Logical Volume. {{enum}}
          The default {{enum|Offline}} status will exist until this {{object}} is enabled.
        </description>
        <syntax>
          <string>
            <enumeration value="Offline"/>
            <enumeration value="Online"/>
            <enumeration value="Error"/>
          </string>
          <default type="object" value="Offline"/>
        </syntax>
      </parameter>
      <parameter name="Enable" access="readWrite" dmr:version="1.0">
        <description>
          Enables or disables this {{object}} instance.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="PhysicalReference" access="readWrite" dmr:version="1.0">
        <description>
          Represents the physical medium or RAID where this {{object}} resides.  The {{object|.PhysicalMedium.{i}.}} or {{object|.StorageArray.{i}.}} referenced by this parameter MUST exist within the same StorageService instance.
          An AddObject followed by an enabling SetParameterValues on {{param|Name}}, {{param}}, and {{param|Capacity}} will cause the formatting of this logical partition and these parameters to become immutable for the life of this instance.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="weak" targetParent=".PhysicalMedium. .StorageArray." targetType="row"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="FileSystem" access="readOnly" dmr:version="1.0">
        <description>
          The file system for this {{object}} as it is currently formatted.
        </description>
        <syntax>
          <string>
            <enumerationRef targetParam=".Capabilities.SupportedFileSystemTypes"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Capacity" access="readWrite" dmr:version="1.0">
        <description>
          The Capacity of the Logical Volume in {{units}}.
          Once this instance becomes enabled, this parameter will be immutable for the life of the instance.
        </description>
        <syntax>
          <unsignedInt>
            <units value="MB"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="UsedSpace" access="readOnly" activeNotify="canDeny" dmr:version="1.0">
        <description>
          The Amount of Used Space on the Logical Volume in {{units}}.
        </description>
        <syntax>
          <unsignedInt>
            <units value="MB"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="ThresholdLimit" access="readWrite" dmr:version="1.0">
        <description>
          This value is specified in {{units}} and controls when {{param|ThresholdReached}} will have its value altered.  If the value of {{param|UsedSpace}} plus the value of {{param}}r is greater than or equal to the value of {{param|Capacity}} then the value of {{param|ThresholdReached}} will be {{true}}, otherwise it will be {{false}}.  Setting the value of this parameter to 0 will disable the Thresholding mechanism.
        </description>
        <syntax>
          <unsignedInt>
            <units value="MB"/>
          </unsignedInt>
          <default type="object" value="0"/>
        </syntax>
      </parameter>
      <parameter name="ThresholdReached" access="readOnly" dmr:version="1.0">
        <description>
          When {{param|ThresholdLimit}} &gt; 0 and {{param|UsedSpace}} + {{param|ThresholdLimit}} &gt;= {{param|Capacity}} this will be {{true}}, else {{false}}.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Encrypted" access="readOnly" dmr:version="1.0">
        <description>
          Is the Volume Encrypted?  The type of encryption will be handled by the device internally and is not a matter for remote management.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="FolderNumberOfEntries" access="readOnly" dmr:version="1.0">
        <description>
          The number of instances of {{object|.LogicalVolume.{i}.Folder.{i}.}} on this {{object}}.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.LogicalVolume.{i}.Folder.{i}." access="readWrite" numEntriesParameter="FolderNumberOfEntries" enableParameter="Enable" minEntries="0" maxEntries="unbounded" dmr:version="1.0">
      <description>
        This object provides information about each top-level folder configured on this logical volume.  Each top-level folder allows the configuration of quotas and access permissions.
        Creating an instance of this object generates a disabled {{object}} instance.  Before this new {{object}} instance can be enabled (via a SetParameterValues command), it MUST have the {{param|Name}} configured.  Folder instances are unique per {{object|.LogicalVolume.{i}.}} and the unique key for this object is {{param|Name}} which also means that once an instance is enabled {{param|Name}} becomes immutable for the life of the instance.
      </description>
      <uniqueKey>
        <parameter ref="Name"/>
      </uniqueKey>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <parameter name="Alias" access="readWrite" activeNotify="canDeny" dmr:version="1.2">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="Alias"/>
        </syntax>
      </parameter>
      <parameter name="Name" access="readWrite" dmr:version="1.0">
        <description>
          Setting of this variable will add a new folder.  The full hierarchical pathname of the folder MUST be specified.
          All folders created on the Logical Volume will appear here, created locally or via AddObject.
          The local directory name will be formatted as a UNIX-style directory name, for example: /home/ftp
          The presence of a trailing `/' character is inconsequential, meaning that /home/ftp/ is the same as /home/ftp.
          Once this instance becomes enabled, this parameter will be immutable for the life of the instance.  This parameter acts as the unique identifier for the instance, thus the device MUST NOT allow multiple {{object}} instances within a {{object|.LogicalVolume.{i}.}} to use the same {{param}}.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="Enable" access="readWrite" dmr:version="1.0">
        <description>
          Entry is enabled or disabled
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="UserAccountAccess" access="readWrite" dmr:version="1.0">
        <description>
          What are the User authentication requirements of this folder?  The following bitmap is used.
          :11 = Authenticated Access required for Network protocols (NFS/AFP/SMB) and for non Network protocols (FTP/SFTP/HTTP/HTTPS)
          :10 = Authenticated Access required for Network protocols (NFS/AFP/SMB)
          :01 = Authenticated Access Required for non Network protocols (FTP/SFTP/HTTP/HTTPS)
          :00 = No Authentication required
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="3"/>
          </unsignedInt>
          <default type="object" value="2"/>
        </syntax>
      </parameter>
      <parameter name="UserAccessNumberOfEntries" access="readOnly" dmr:version="1.0">
        <description>
          The number of instances of {{object|.LogicalVolume.{i}.Folder.{i}.UserAccess.{i}.}} on this {{object|.LogicalVolume.{i}.Folder.{i}.}}.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="GroupAccessNumberOfEntries" access="readOnly" dmr:version="1.0">
        <description>
          The number of instances of {{object|.LogicalVolume.{i}.Folder.{i}.GroupAccess.{i}.}} on this {{object|.LogicalVolume.{i}.Folder.{i}.}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.LogicalVolume.{i}.Folder.{i}.UserAccess.{i}." access="readWrite" numEntriesParameter="UserAccessNumberOfEntries" enableParameter="Enable" minEntries="0" maxEntries="unbounded" dmr:version="1.0">
      <description>
        This object provides information about each user account configured for access permissions on this folder.
      </description>
      <uniqueKey>
        <parameter ref="UserReference"/>
      </uniqueKey>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <parameter name="Alias" access="readWrite" activeNotify="canDeny" dmr:version="1.2">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="Alias"/>
        </syntax>
      </parameter>
      <parameter name="Enable" access="readWrite" dmr:version="1.1">
        <description>
          Enables or disables the entry.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="UserReference" access="readWrite" dmr:version="1.0">
        <description>
          Represents a user that has access to this folder.  The instance of {{object|.UserAccount.{i}.}} referenced by this parameter MUST exist within the same StorageService instance.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="weak" targetParent=".UserAccount." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="Permissions" access="readWrite" dmr:version="1.0">
        <description>
          What permissions the user account has over this {{object|.LogicalVolume.{i}.Folder.{i}.}}.  This is an integer value like the xNIX systems use for access permissions, meaning that it is a 3-bit field with the following structure:
          :100 = read field
          :010 = write field
          :001 = execute field
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="7"/>
          </unsignedInt>
          <default type="object" value="7"/>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.LogicalVolume.{i}.Folder.{i}.GroupAccess.{i}." access="readWrite" numEntriesParameter="GroupAccessNumberOfEntries" enableParameter="Enable" minEntries="0" maxEntries="unbounded" dmr:version="1.0">
      <description>
        This object provides information about each user group configured for access permissions on this folder.
      </description>
      <uniqueKey>
        <parameter ref="GroupReference"/>
      </uniqueKey>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <parameter name="Alias" access="readWrite" activeNotify="canDeny" dmr:version="1.2">
        <description>
          {{datatype|expand}}
        </description>
        <syntax>
          <dataType ref="Alias"/>
        </syntax>
      </parameter>
      <parameter name="Enable" access="readWrite" dmr:version="1.1">
        <description>
          Enables or disables the entry.
        </description>
        <syntax>
          <boolean/>
          <default type="factory" value="false"/>
        </syntax>
      </parameter>
      <parameter name="GroupReference" access="readWrite" dmr:version="1.0">
        <description>
          Represents a user group that is a collection of User Accounts that have access to this folder.  The {{object|.UserGroup.{i}.}} referenced by this parameter MUST exist within the same StorageService instance.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="weak" targetParent=".UserGroup." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="Permissions" access="readWrite" dmr:version="1.0">
        <description>
          What permissions the group members have over this {{object|.LogicalVolume.{i}.Folder.{i}.}} instance.  This is an integer value like the xNIX systems use for access permissions, meaning that it is a 3-bit field with the following structure:
          :100 = read field
          :010 = write field
          :001 = execute field
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="7"/>
          </unsignedInt>
          <default type="object" value="7"/>
        </syntax>
      </parameter>
    </object>
    <object name="StorageService.{i}.LogicalVolume.{i}.Folder.{i}.Quota." access="readOnly" minEntries="1" maxEntries="1" dmr:version="1.0">
      <description>
        This object allows the configuration of per-folder storage quota management.
      </description>
      <parameter name="Enable" access="readWrite" dmr:version="1.0">
        <description>
          Enables or disables quota management for this folder.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Capacity" access="readWrite" dmr:version="1.0">
        <description>
          Maximum size in {{units}} of the quota for this folder.
        </description>
        <syntax>
          <unsignedInt>
            <units value="MB"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="UsedSpace" access="readOnly" activeNotify="canDeny" dmr:version="1.0">
        <description>
          Current size in {{units}} of this folder.
        </description>
        <syntax>
          <unsignedInt>
            <units value="MB"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="ThresholdLimit" access="readWrite" dmr:version="1.0">
        <description>
          This value is specified in {{units}} and controls when {{param|ThresholdReached}} will have its value altered.  If the value of {{param|UsedSpace}} plus the value of this parameter is greater than or equal to the value of {{param|Capacity}} then the value of {{param|ThresholdReached}} will be {{true}}, otherwise it will be {{false}}.  Setting the value of this parameter to 0 will disable the Thresholding mechanism.
        </description>
        <syntax>
          <unsignedInt>
            <units value="MB"/>
          </unsignedInt>
          <default type="object" value="0"/>
        </syntax>
      </parameter>
      <parameter name="ThresholdReached" access="readOnly" dmr:version="1.0">
        <description>
          When {{param|ThresholdLimit}} &gt; 0 and {{param|UsedSpace}} + {{param|ThresholdLimit}} &gt;= {{param|Capacity}} this will be {{true}}, else {{false}}.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
    </object>
    <profile name="Baseline:1" dmr:version="1.0">
      <object ref="StorageService.{i}." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="PhysicalMediumNumberOfEntries" requirement="readOnly"/>
        <parameter ref="LogicalVolumeNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="StorageService.{i}.Capabilities." requirement="present">
        <parameter ref="FTPCapable" requirement="readOnly"/>
        <parameter ref="SFTPCapable" requirement="readOnly"/>
        <parameter ref="HTTPCapable" requirement="readOnly"/>
        <parameter ref="HTTPSCapable" requirement="readOnly"/>
        <parameter ref="HTTPWritable" requirement="readOnly"/>
        <parameter ref="SupportedNetworkProtocols" requirement="readOnly"/>
        <parameter ref="SupportedFileSystemTypes" requirement="readOnly"/>
        <parameter ref="VolumeEncryptionCapable" requirement="readOnly"/>
      </object>
      <object ref="StorageService.{i}.NetInfo." requirement="present">
        <parameter ref="HostName" requirement="readWrite"/>
        <parameter ref="DomainName" requirement="readWrite"/>
      </object>
      <object ref="StorageService.{i}.NetworkServer." requirement="present">
        <parameter ref="AFPEnable" requirement="readOnly"/>
        <parameter ref="NFSEnable" requirement="readOnly"/>
        <parameter ref="SMBEnable" requirement="readOnly"/>
        <parameter ref="NetworkProtocolAuthReq" requirement="readOnly"/>
      </object>
      <object ref="StorageService.{i}.PhysicalMedium.{i}." requirement="present">
        <parameter ref="Name" requirement="readOnly"/>
        <parameter ref="Vendor" requirement="readOnly"/>
        <parameter ref="Model" requirement="readOnly"/>
        <parameter ref="SerialNumber" requirement="readOnly"/>
        <parameter ref="FirmwareVersion" requirement="readOnly"/>
        <parameter ref="ConnectionType" requirement="readOnly"/>
        <parameter ref="Removable" requirement="readOnly"/>
        <parameter ref="Capacity" requirement="readOnly"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="SMARTCapable" requirement="readOnly"/>
        <parameter ref="HotSwappable" requirement="readOnly"/>
      </object>
      <object ref="StorageService.{i}.LogicalVolume.{i}." requirement="present">
        <parameter ref="Name" requirement="readOnly"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Enable" requirement="readOnly"/>
        <parameter ref="PhysicalReference" requirement="readOnly"/>
        <parameter ref="FileSystem" requirement="readOnly"/>
        <parameter ref="Capacity" requirement="readOnly"/>
        <parameter ref="UsedSpace" requirement="readOnly"/>
        <parameter ref="Encrypted" requirement="readOnly"/>
        <parameter ref="FolderNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="StorageService.{i}.LogicalVolume.{i}.Folder.{i}." requirement="present">
        <parameter ref="Name" requirement="readOnly"/>
        <parameter ref="Enable" requirement="readOnly"/>
        <parameter ref="UserAccountAccess" requirement="readOnly"/>
      </object>
    </profile>
    <profile name="UserAccess:1" dmr:version="1.0">
      <object ref="StorageService.{i}." requirement="present">
        <parameter ref="UserAccountNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="StorageService.{i}.NetworkServer." requirement="present">
        <parameter ref="NetworkProtocolAuthReq" requirement="readWrite"/>
      </object>
      <object ref="StorageService.{i}.UserAccount.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Username" requirement="readWrite"/>
        <parameter ref="Password" requirement="readWrite"/>
      </object>
      <object ref="StorageService.{i}.LogicalVolume.{i}.Folder.{i}." requirement="present">
        <parameter ref="UserAccountAccess" requirement="readWrite"/>
        <parameter ref="UserAccessNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="StorageService.{i}.LogicalVolume.{i}.Folder.{i}.UserAccess.{i}." requirement="createDelete">
        <parameter ref="UserReference" requirement="readWrite"/>
        <parameter ref="Permissions" requirement="readWrite"/>
      </object>
    </profile>
    <profile name="GroupAccess:1" extends="UserAccess:1" dmr:version="1.0">
      <object ref="StorageService.{i}." requirement="present">
        <parameter ref="UserGroupNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="StorageService.{i}.UserGroup.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="GroupName" requirement="readWrite"/>
      </object>
      <object ref="StorageService.{i}.UserAccount.{i}." requirement="createDelete">
        <parameter ref="UserGroupParticipation" requirement="readWrite"/>
      </object>
      <object ref="StorageService.{i}.LogicalVolume.{i}.Folder.{i}.GroupAccess.{i}." requirement="createDelete">
        <parameter ref="GroupReference" requirement="readWrite"/>
        <parameter ref="Permissions" requirement="readWrite"/>
      </object>
    </profile>
    <profile name="FTPServer:1" dmr:version="1.0">
      <object ref="StorageService.{i}.FTPServer." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="MaxNumUsers" requirement="readWrite"/>
        <parameter ref="IdleTime" requirement="readWrite"/>
        <parameter ref="PortNumber" requirement="readWrite"/>
      </object>
      <object ref="StorageService.{i}.FTPServer.AnonymousUser." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="StartingFolder" requirement="readWrite"/>
        <parameter ref="ReadOnlyAccess" requirement="readWrite"/>
      </object>
    </profile>
    <profile name="SFTPServer:1" extends="FTPServer:1 UserAccess:1" dmr:version="1.0">
      <object ref="StorageService.{i}.UserAccount.{i}." requirement="present">
        <parameter ref="AllowFTPAccess" requirement="readWrite"/>
      </object>
      <object ref="StorageService.{i}.SFTPServer." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="MaxNumUsers" requirement="readWrite"/>
        <parameter ref="IdleTime" requirement="readWrite"/>
        <parameter ref="PortNumber" requirement="readWrite"/>
      </object>
    </profile>
    <profile name="HTTPServer:1" dmr:version="1.0">
      <object ref="StorageService.{i}.HTTPServer." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="MaxNumUsers" requirement="readWrite"/>
        <parameter ref="IdleTime" requirement="readWrite"/>
        <parameter ref="HTTPWritingEnabled" requirement="readOnly"/>
        <parameter ref="PortNumber" requirement="readWrite"/>
        <parameter ref="AuthenticationReq" requirement="readWrite"/>
      </object>
    </profile>
    <profile name="HTTPSServer:1" extends="HTTPServer:1 UserAccess:1" dmr:version="1.0">
      <object ref="StorageService.{i}.UserAccount.{i}." requirement="present">
        <parameter ref="AllowHTTPAccess" requirement="readWrite"/>
      </object>
      <object ref="StorageService.{i}.HTTPSServer." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="MaxNumUsers" requirement="readWrite"/>
        <parameter ref="IdleTime" requirement="readWrite"/>
        <parameter ref="HTTPWritingEnabled" requirement="readOnly"/>
        <parameter ref="PortNumber" requirement="readWrite"/>
        <parameter ref="AuthenticationReq" requirement="readWrite"/>
      </object>
    </profile>
    <profile name="VolumeConfig:1" extends="Baseline:1" dmr:version="1.0">
      <object ref="StorageService.{i}.PhysicalMedium.{i}." requirement="present">
        <parameter ref="Name" requirement="readWrite"/>
      </object>
      <object ref="StorageService.{i}.LogicalVolume.{i}." requirement="createDelete">
        <parameter ref="Name" requirement="readWrite"/>
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="FileSystem" requirement="readOnly"/>
        <parameter ref="Capacity" requirement="readWrite"/>
      </object>
      <object ref="StorageService.{i}.LogicalVolume.{i}.Folder.{i}." requirement="createDelete">
        <parameter ref="Name" requirement="readWrite"/>
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="UserAccountAccess" requirement="readWrite"/>
      </object>
    </profile>
    <profile name="RAID:1" dmr:version="1.0">
      <object ref="StorageService.{i}." requirement="present">
        <parameter ref="StorageArrayNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="StorageService.{i}.Capabilities." requirement="present">
        <parameter ref="SupportedRaidTypes" requirement="readOnly"/>
      </object>
      <object ref="StorageService.{i}.StorageArray.{i}." requirement="createDelete">
        <parameter ref="Name" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="RaidType" requirement="readWrite"/>
        <parameter ref="UsableCapacity" requirement="readOnly"/>
        <parameter ref="PhysicalMediumReference" requirement="readWrite"/>
      </object>
    </profile>
    <profile name="FolderQuota:1" dmr:version="1.0">
      <object ref="StorageService.{i}.LogicalVolume.{i}.Folder.{i}.Quota." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Capacity" requirement="readWrite"/>
        <parameter ref="UsedSpace" requirement="readOnly"/>
        <parameter ref="ThresholdLimit" requirement="readWrite"/>
        <parameter ref="ThresholdReached" requirement="readOnly"/>
      </object>
    </profile>
    <profile name="VolumeThresh:1" dmr:version="1.0">
      <object ref="StorageService.{i}.LogicalVolume.{i}." requirement="present">
        <parameter ref="Capacity" requirement="readOnly"/>
        <parameter ref="ThresholdLimit" requirement="readWrite"/>
        <parameter ref="ThresholdReached" requirement="readOnly"/>
      </object>
    </profile>
    <profile name="NetServer:1" dmr:version="1.0">
      <object ref="StorageService.{i}.NetworkServer." requirement="present">
        <parameter ref="AFPEnable" requirement="readWrite"/>
        <parameter ref="NFSEnable" requirement="readWrite"/>
        <parameter ref="SMBEnable" requirement="readWrite"/>
      </object>
    </profile>
    <profile name="Baseline:2" base="Baseline:1" dmr:version="1.1">
      <parameter ref="StorageServiceNumberOfEntries" requirement="readOnly"/>
    </profile>
    <profile name="UserAccess:2" base="UserAccess:1" dmr:version="1.1">
      <object ref="StorageService.{i}.LogicalVolume.{i}.Folder.{i}.UserAccess.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
      </object>
    </profile>
    <profile name="GroupAccess:2" base="GroupAccess:1" dmr:version="1.1">
      <object ref="StorageService.{i}.LogicalVolume.{i}.Folder.{i}.GroupAccess.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
      </object>
    </profile>
  </model>
</dm:document>
