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

  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:
       - Added tr-140-1-cwmp.xml (for CWMP support)
       - published as tr-140-1-3-1-cwmp.xml
-->

<dm:document
    xmlns:dm="urn:broadband-forum-org:cwmp:datamodel-1-14"
    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-14
        http://www.broadband-forum.org/cwmp/cwmp-datamodel-1-14.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-cwmp.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-140-1-3-1-cwmp|Corrigendum 1}}

    * Added USP support (split XML into common, CWMP and USP files)
  </description>

  <dataType name="_AliasCommon">
    <description>
      A non-volatile handle used to reference this instance.

      '''This is intended only for use in protocol-independent "common"
      definitions, and MUST NOT be used in protocol-specific definitions.'''
    </description>
    <string>
      <size maxLength="64"/>
    </string>
  </dataType>

  <dataType name="_AliasCWMP" base="_AliasCommon">
    <description action="replace">
      A non-volatile handle used to reference this instance. Alias provides a
      mechanism for an ACS to label this instance for future reference.

      If the CPE supports the Alias-based Addressing feature as defined in
      {{bibref|TR-069|3.6.1}} and described in {{bibref|TR-069|Appendix II}},
      the following mandatory constraints MUST be enforced:

      * Its value MUST NOT be empty.

      * Its value MUST start with a letter.

      * If its value is not assigned by the ACS, it MUST start with a "cpe-"
        prefix.

      * The CPE MUST NOT change the parameter value.
    </description>
  </dataType>

  <dataType name="Alias" base="_AliasCommon">
    <description action="replace">
      A non-volatile handle used to reference this instance. Alias provides a
      mechanism for an ACS to label this instance for future reference.

      If the CPE supports the Alias-based Addressing feature as defined in
      {{bibref|TR-069|3.6.1}} and described in {{bibref|TR-069|Appendix II}},
      the following mandatory constraints MUST be enforced:

      * Its value MUST NOT be empty.

      * Its value MUST start with a letter.

      * If its value is not assigned by the ACS, it MUST start with a "cpe-"
        prefix.

      * The CPE MUST NOT change the parameter value.
    </description>
  </dataType>

  <bibliography>
    <reference id="3GPP-TS.23.003">
      <name>3GPP TS 23.003</name>
      <title>Numbering, addressing and identification</title>
      <organization>3GPP CT WG4</organization>
      <hyperlink>https://www.3gpp.org/ftp/Specs/html-info/23003.htm</hyperlink>
    </reference>
    <reference id="IEEE_EUI64">
      <name>
        Guidelines for 64-bit Global Identifier (EUI-64) Registration Authority
      </name>
      <title>
        Guidelines for 64-bit Global Identifier (EUI-64) Registration Authority
      </title>
      <organization>IEEE</organization>
      <date>March 1997</date>
      <hyperlink>
        https://standards.ieee.org/regauth/oui/tutorials/EUI64.html
      </hyperlink>
    </reference>
    <reference id="IANA-uri-schemes">
      <name>IANA Uniform Resource Identifier (URI) Schemes Registry</name>
      <title>Uniform Resource Identifier (URI) Schemes</title>
      <organization>IANA</organization>
      <hyperlink>https://www.iana.org/assignments/uri-schemes</hyperlink>
    </reference>
    <reference id="RFC3986">
      <name>RFC 3986</name>
      <title>Uniform Resource Identifier (URI): Generic Syntax</title>
      <organization>IETF</organization>
      <category>RFC</category>
      <hyperlink>https://www.rfc-editor.org/rfc/rfc3986</hyperlink>
    </reference>
    <reference id="RFC4007">
      <name>RFC 4007</name>
      <title>IPv6 Scoped Address Architecture</title>
      <organization>IETF</organization>
      <category>RFC</category>
      <hyperlink>https://www.rfc-editor.org/rfc/rfc4007</hyperlink>
    </reference>
    <reference id="RFC4122">
      <name>RFC 4122</name>
      <title>A Universally Unique IDentifier (UUID) URN Namespace</title>
      <organization>IETF</organization>
      <category>RFC</category>
      <date>2005</date>
      <hyperlink>https://www.rfc-editor.org/rfc/rfc4122</hyperlink>
    </reference>
    <reference id="RFC4291">
      <name>RFC 4291</name>
      <title>IP Version 6 Addressing Architecture</title>
      <organization>IETF</organization>
      <category>RFC</category>
      <date>2006</date>
      <hyperlink>https://www.rfc-editor.org/rfc/rfc4291</hyperlink>
    </reference>
    <reference id="RFC4632">
      <name>RFC 4632</name>
      <title>
        Classless Inter-domain Routing (CIDR): The Internet Address Assignment
        and Aggregation Plan
      </title>
      <organization>IETF</organization>
      <date>2006</date>
      <hyperlink>https://www.rfc-editor.org/rfc/rfc4632</hyperlink>
    </reference>
    <reference id="RFC7159">
      <name>RFC7159</name>
      <title>
        The JavaScript Object Notation (JSON) Data Interchange Format
      </title>
      <organization>IETF</organization>
      <category>RFC</category>
      <date>March 2014</date>
      <hyperlink>https://www.rfc-editor.org/rfc/rfc7159</hyperlink>
    </reference>
    <reference id="RFC7230">
      <name>RFC 7230</name>
      <title>
        Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing
      </title>
      <organization>IETF</organization>
      <category>RFC</category>
      <date>June 2014</date>
      <hyperlink>https://www.rfc-editor.org/rfc/rfc7230</hyperlink>
    </reference>
    <reference id="RFC7252">
      <name>RFC 7252</name>
      <title>The Constrained Application Protocol (CoAP)</title>
      <organization>IETF</organization>
      <category>RFC</category>
      <date>June 2014</date>
      <hyperlink>https://www.rfc-editor.org/rfc/rfc7252</hyperlink>
    </reference>
    <reference id="RFC8141">
      <name>RFC 8141</name>
      <title>Uniform Resource Names (URNs)</title>
      <organization>IETF</organization>
      <category>RFC</category>
      <date>April 2017</date>
      <hyperlink>https://www.rfc-editor.org/rfc/rfc8141</hyperlink>
    </reference>
    <reference id="TR-069">
      <name>TR-069 Amendment 6</name>
      <title>CPE WAN Management Protocol</title>
      <organization>Broadband Forum</organization>
      <category>TR</category>
      <date>April 2018</date>
    </reference>
    <reference id="TR-106">
      <name>TR-106 Amendment 8</name>
      <title>Data Model Template for CWMP Endpoints and USP Agents</title>
      <organization>Broadband Forum</organization>
      <category>TR</category>
      <date>May 2018</date>
    </reference>
    <reference id="SOAP1.1">
      <name>Simple Object Access Protocol (SOAP) 1.1</name>
      <organization>W3C</organization>
      <hyperlink>https://www.w3.org/TR/2000/NOTE-SOAP-20000508</hyperlink>
    </reference>
    <reference id="ZigBee2007">
      <name>ZigBee 2007 Specification</name>
      <title>ZigBee 2007 Specification</title>
      <organization>ZigBee Alliance</organization>
      <date>October 2007</date>
      <hyperlink>https://csa-iot.org/all-solutions/zigbee</hyperlink>
    </reference>
  </bibliography>

  <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>
