<?xml version="1.0" encoding="UTF-8"?>
<!---->
<!--############################################################################## -->
<!--# Redfish Schema:  Volume  v1.0.3-->
<!--#                                                                                      -->
<!--# For a detailed change log, see the README file contained in the DSP8010 bundle,      -->
<!--# available at http://www.dmtf.org/standards/redfish                                   -->
<!--# Copyright 2014-2018 DMTF.                                                            -->
<!--# For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright -->
<!--################################################################################       -->
<!---->
<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">

  <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Core.V1.xml">
    <edmx:Include Namespace="Org.OData.Core.V1" Alias="OData"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Capabilities.V1.xml">
    <edmx:Include Namespace="Org.OData.Capabilities.V1" Alias="Capabilities"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Measures.V1.xml">
    <edmx:Include Namespace="Org.OData.Measures.V1" Alias="Measures"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Resource_v1.xml">
    <edmx:Include Namespace="Resource"/>
    <edmx:Include Namespace="Resource.v1_0_0"/>
    <edmx:Include Namespace="Resource.v1_1_0"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/RedfishExtensions_v1.xml">
    <edmx:Include Namespace="RedfishExtensions.v1_0_0" Alias="Redfish"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Drive_v1.xml">
    <edmx:Include Namespace="Drive"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Task_v1.xml">
    <edmx:Include Namespace="Task"/>
  </edmx:Reference>

  <edmx:DataServices>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Volume">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>

      <EntityType Name="Volume" BaseType="Resource.v1_0_0.Resource" Abstract="true">
        <Annotation Term="OData.Description" String="Volume contains properties used to describe a volume, virtual disk, LUN, or other logical storage entity for any system."/>
        <Annotation Term="OData.LongDescription" String="This resource shall be used to represent a volume, virtual disk, logical disk, LUN, or other logical storage for a Redfish implementation."/>
        <Annotation Term="Capabilities.InsertRestrictions">
          <Record>
            <PropertyValue Property="Insertable" Bool="false"/>
          </Record>
        </Annotation>
        <Annotation Term="Capabilities.UpdateRestrictions">
          <Record>
            <PropertyValue Property="Updatable" Bool="true"/>
            <Annotation Term="OData.Description" String="Volumes can be updated to change the writable properties."/>
          </Record>
        </Annotation>
        <Annotation Term="Capabilities.DeleteRestrictions">
          <Record>
            <PropertyValue Property="Deletable" Bool="true"/>
            <Annotation Term="OData.Description" String="Volumes can be deleted by deleting the Volume resource."/>
          </Record>
        </Annotation>
        <Annotation Term="Redfish.Uris">
          <Collection>
            <String>/redfish/v1/Systems/{ComputerSystemId}/Storage/{StorageId}/Volumes/{VolumeId}</String>
            <String>/redfish/v1/CompositionService/ResourceBlocks/{ResourceBlockId}/Storage/{StorageId}/Volumes/{VolumeId}</String>
            <String>/redfish/v1/CompositionService/ResourceBlocks/{ResourceBlockId}/Systems/{ComputerSystemId}/Storage/{StorageId}/Volumes/{VolumeId}</String>
            <String>/redfish/v1/ResourceBlocks/{ResourceBlockId}/Storage/{StorageId}/Volumes/{VolumeId}</String>
            <String>/redfish/v1/ResourceBlocks/{ResourceBlockId}/Systems/{ComputerSystemId}/Storage/{StorageId}/Volumes/{VolumeId}</String>
          </Collection>
        </Annotation>
      </EntityType>

      <Action Name="Initialize" IsBound="true">
        <Parameter Name="Volume" Type="Volume.v1_0_0.Actions"/>
        <Parameter Name="InitializeType" Type="Volume.InitializeType">
          <Annotation Term="OData.Description" String="The type of initialization to be performed."/>
          <Annotation Term="OData.LongDescription" String="This defines the property name for the action."/>
        </Parameter>
        <Annotation Term="OData.Description" String="This action is used to prepare the contents of the volume for use by the system."/>
        <Annotation Term="OData.LongDescription" String="This defines the name of the custom action supported on this resource."/>
      </Action>

      <Action Name="CheckConsistency">
        <Parameter Name="Volume" Type="Volume.v1_0_0.Actions"/>
        <Annotation Term="OData.Description" String="This action is used to force a check of the Volume's parity or redundant data to ensure it matches calculated values."/>
        <Annotation Term="OData.LongDescription" String="This defines the name of the custom action supported on this resource."/>
      </Action>

      <EnumType Name="InitializeType">
        <Member Name="Fast">
          <Annotation Term="OData.Description" String="The volume is prepared for use quickly, typically by erasing just the begining and end of the space so that partitioning can be performed."/>
        </Member>
        <Member Name="Slow">
          <Annotation Term="OData.Description" String="The volume is prepared for use slowly, typically by completely erasing the volume."/>
        </Member>
      </EnumType>

    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Volume.v1_0_0">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="Redfish.Release" String="2016.1"/>

      <EntityType Name="Volume" BaseType="Volume.Volume">
        <Property Name="Status" Type="Resource.Status" Nullable="false"/>
        <Property Name="CapacityBytes" Type="Edm.Int64">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The size in bytes of this Volume."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain the size in bytes of the associated volume."/>
          <Annotation Term="Measures.Unit" String="By"/>
        </Property>
        <Property Name="VolumeType" Type="Volume.v1_0_0.VolumeType">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The type of this volume."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain the type of the associated Volume."/>
        </Property>
        <Property Name="Encrypted" Type="Edm.Boolean">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
          <Annotation Term="OData.Description" String="Is this Volume encrypted."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain a boolean indicator if the Volume is currently utilizing encryption or not."/>
        </Property>
        <Property Name="EncryptionTypes" Type="Collection(Volume.v1_0_0.EncryptionTypes)" Nullable="false">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
          <Annotation Term="OData.Description" String="The types of encryption used by this Volume."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain the types of encryption used by this Volume."/>
        </Property>
        <Property Name="Identifiers" Type="Collection(Resource.v1_1_0.Identifier)" Nullable="false">
          <Annotation Term="OData.Description" String="The Durable names for the volume."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain a list of all known durable names for the associated volume."/>
        </Property>
        <Property Name="BlockSizeBytes" Type="Edm.Int64">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The size of the smallest addressible unit (Block) of this volume in bytes."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain size of the smallest addressible unit of the associated volume."/>
          <Annotation Term="Measures.Unit" String="By"/>
        </Property>
        <Property Name="Operations" Type="Collection(Volume.v1_0_0.Operations)" Nullable="false">
          <Annotation Term="OData.Description" String="The operations currently running on the Volume."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain a list of all currently running on the Volume."/>
        </Property>
        <Property Name="OptimumIOSizeBytes" Type="Edm.Int64">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The size in bytes of this Volume's optimum IO size."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain the optimum IO size to use when performing IO on this volume. For logical disks, this is the stripe size. For physical disks, this describes the physical sector size."/>
          <Annotation Term="Measures.Unit" String="By"/>
        </Property>
        <Property Name="Links" Type="Volume.v1_0_0.Links" Nullable="false">
          <Annotation Term="OData.Description" String="Contains references to other resources that are related to this resource."/>
          <Annotation Term="OData.LongDescription" String="The Links property, as described by the Redfish Specification, shall contain references to resources that are related to, but not contained by (subordinate to), this resource."/>
        </Property>
        <Property Name="Actions" Type="Volume.v1_0_0.Actions" Nullable="false">
          <Annotation Term="OData.Description" String="The available actions for this resource."/>
          <Annotation Term="OData.LongDescription" String="The Actions property shall contain the available actions for this resource."/>
        </Property>
      </EntityType>

      <ComplexType Name="Links" BaseType="Resource.Links">
        <Annotation Term="OData.Description" String="Contains references to other resources that are related to this resource."/>
        <Annotation Term="OData.LongDescription" String="This type, as described by the Redfish Specification, shall contain references to resources that are related to, but not contained by (subordinate to), this resource."/>
        <NavigationProperty Name="Drives" Type="Collection(Drive.Drive)">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="An array of references to the drives which contain this volume. This will reference Drives that either wholly or only partly contain this volume."/>
          <Annotation Term="OData.LongDescription" String="The value of this property shall be a reference to the resources that this volume is associated with and shall reference resources of type Drive. This property shall only contain references to Drive entities which are currently members of the Volume, not hot spare Drives which are not currently a member of the volume."/>
          <Annotation Term="OData.AutoExpandReferences"/>
        </NavigationProperty>
      </ComplexType>

      <ComplexType Name="Actions">
        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
        <Annotation Term="OData.Description" String="The available actions for this resource."/>
        <Annotation Term="OData.LongDescription" String="This type shall contain the available actions for this resource."/>
        <Property Name="Oem" Type="Volume.v1_0_0.OemActions" Nullable="false"/>
      </ComplexType>

      <ComplexType Name="OemActions">
        <Annotation Term="OData.Description" String="The available OEM specific actions for this resource."/>
        <Annotation Term="OData.LongDescription" String="This type shall contain any additional OEM actions for this resource."/>
        <Annotation Term="OData.AdditionalProperties" Bool="true"/>
      </ComplexType>

      <ComplexType Name="Operations">
        <Annotation Term="OData.Description" String="An operation currently running on this resource."/>
        <Annotation Term="OData.LongDescription" String="This type shall describe a currently running operation on the resource."/>
        <Property Name="OperationName" Type="Edm.String">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The name of the operation."/>
        </Property>
        <Property Name="PercentageComplete" Type="Edm.Int64">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The percentage of the operation that has been completed."/>
        </Property>
        <NavigationProperty Name="AssociatedTask" Type="Task.Task" Nullable="false">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="A reference to the task associated with the operation if any."/>
        </NavigationProperty>
      </ComplexType>

      <EnumType Name="VolumeType">
        <Member Name="RawDevice">
          <Annotation Term="OData.Description" String="The volume is a raw physical device without any RAID or other virtualization applied."/>
        </Member>
        <Member Name="NonRedundant">
          <Annotation Term="OData.Description" String="The volume is a non-redundant storage device."/>
        </Member>
        <Member Name="Mirrored">
          <Annotation Term="OData.Description" String="The volume is a mirrored device."/>
        </Member>
        <Member Name="StripedWithParity">
          <Annotation Term="OData.Description" String="The volume is a device which uses parity to retain redundant information."/>
        </Member>
        <Member Name="SpannedMirrors">
          <Annotation Term="OData.Description" String="The volume is a spanned set of mirrored devices."/>
        </Member>
        <Member Name="SpannedStripesWithParity">
          <Annotation Term="OData.Description" String="The volume is a spanned set of devices which uses parity to retain redundant information."/>
        </Member>
      </EnumType>

      <EnumType Name="EncryptionTypes">
        <Member Name="NativeDriveEncryption">
          <Annotation Term="OData.Description" String="The volume is utilizing the native drive encryption capabilities of the drive hardware."/>
        </Member>
        <Member Name="ControllerAssisted">
          <Annotation Term="OData.Description" String="The volume is being encrypted by the storage controller entity."/>
        </Member>
        <Member Name="SoftwareAssisted">
          <Annotation Term="OData.Description" String="The volume is being encrypted by software running on the system or the operating system."/>
        </Member>
      </EnumType>

    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Volume.v1_0_1">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to show annotations in previous namespaces were updated."/>
      <EntityType Name="Volume" BaseType="Volume.v1_0_0.Volume"/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Volume.v1_0_2">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to add explicit Permissions annotations to all properties for clarity."/>
      <EntityType Name="Volume" BaseType="Volume.v1_0_1.Volume"/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Volume.v1_0_3">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to fix supported types and remove the Nullable facet on NavigationProperties of type Collection."/>
      <EntityType Name="Volume" BaseType="Volume.v1_0_2.Volume"/>
    </Schema>

  </edmx:DataServices>
</edmx:Edmx>
