// Copyright (c) 2009 DMTF.  All rights reserved.
   [Version ( "2.22.1" ), 
    UMLPackagePath ( "CIM::Core::OpaqueManagementData" ), 
    Description ( 
       "A class derived from Service that contains global properties "
       "of the opaque management data functionality in the CIM server, "
       "and provides methods for using this functionality." )]
class CIM_OpaqueManagementDataService : CIM_Service {

      [Description ( 
          "The number of bytes of opaque management data storage "
          "available from the CIM_OpaqueManagementDataService. The "
          "value of AvailableStorage shall not exceed the value of "
          "MaxAvailableStorage in the associated "
          "CIM_OpaqueManagementDataCapabilities." ), 
       ModelCorrespondence { 
          "CIM_OpaqueManagementDataCapabilities.MaxAvailableStorage" }, 
       PUnit ( "byte" )]
   uint64 AvailableStorage;

      [Description ( 
          "The amount of time a lock on a CIM_OpaqueManagementData "
          "instance shall remain in effect without execution of any "
          "CIM_OpaqueManagementDataService extrinsic methods on "
          "that CIM_OpaqueManagementData instance by the Identity "
          "that holds the lock. Locks on CIM_OpaqueManagementData "
          "are created by Lock(). The intent of the timeout is to "
          "ensure that a lock is released if the lock holder "
          "neglects to release it or is unable to release it. The "
          "value of LockTimeout shall be a duration." )]
   datetime LockTimeout;

      [Description ( 
          "MaxCreateSize shall contain the maximum value that the "
          "implementation will currently accept in the MaxSize "
          "property of the OpaqueManagementDataTemplate embedded "
          "instance parameter in a call to Create(). This value may "
          "change over time for any reason, including but not "
          "limited to fragmentation of the storage resources "
          "managed by the service." ), 
       ModelCorrespondence { "CIM_OpaqueManagementData.MaxSize" }, 
       PUnit ( "byte" )]
   uint64 MaxCreateSize;


      [Description ( 
          "Grants or removes access to the referenced "
          "CIM_OpaqueManagementData instance by the referenced "
          "CIM_Identity instance." ), 
       ValueMap { "0", "1", "2", "3..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Unknown/Unspecified Error", "DMTF Reserved", 
          "Vendor Specified" }]
   uint32 AssignAccess(
         [Required, IN, Description ( 
             "Reference to the CIM_Identity instance that is the "
             "subject of the access rights modified by this "
             "method." )]
      CIM_Identity REF Identity, 
         [Required, IN, Description ( 
             "Reference to the CIM_OpaqueManagementData instance "
             "that is the target of the access rights modified "
             "by this method." )]
      CIM_OpaqueManagementData REF OpaqueManagementData, 
         [Required, IN, Description ( 
             "The subset of values from the value map that shall "
             "be contained in the resulting Activities property "
             "of the CIM_AssociatedPrivilege between the "
             "CIM_Identity instance referenced by the Identity "
             "parameter and the CIM_OpaqueManagementData "
             "instance referenced by the OpaqueManagementData "
             "parameter. If such an instance of "
             "CIM_AssociatedPrivilege does not exist before the "
             "method is invoked, the method shall create it." ), 
          ValueMap { "5", "6" }, 
          Values { "Read", "Write" }, 
          ModelCorrespondence { 
             "CIM_AssociatedPrivilege.Activities" }]
      uint16 Activities[]);

      [Description ( 
          "Create() creates an instance of CIM_OpaqueManagementData "
          "using the property values in the OpaqueManagementData "
          "parameter, and allocates the number of bytes of storage "
          "specified in the MaxSize property of the "
          "OpaqueManagementData parameter. It also optionally "
          "allows the client to specify an existing "
          "CIM_StorageExtent instance as the basis (storage "
          "location) of the new CIM_OpaqueManagementData instance." ), 
       ValueMap { "0", "1", "2", "3..4095", "4096", "4097..32767", 
          "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Unknown/Unspecified Error", "DMTF Reserved", 
          "Method Parameters Checked - Job Started", 
          "Method Reserved", "Vendor Specified" }]
   uint32 Create(
         [Required, IN, Description ( 
             "The requested value of the MaxSize property in the "
             "CIM_OpaqueManagementData instance created by this "
             "method. The actual property value shall not be "
             "less than this value." ), 
          ModelCorrespondence { "CIM_OpaqueManagementData.MaxSize" }]
      uint64 MaxSize, 
         [IN, Description ( 
             "The value of the DataFormat property in the "
             "CIM_OpaqueManagementData instance created by this "
             "method." ), 
          ModelCorrespondence { 
             "CIM_OpaqueManagementData.DataFormat" }]
      string DataFormat, 
         [IN, Description ( 
             "The value of the ElementName property in the "
             "CIM_OpaqueManagementData instance created by this "
             "method." ), 
          ModelCorrespondence { 
             "CIM_OpaqueManagementData.ElementName" }]
      string ElementName, 
         [Required, IN, Description ( 
             "Specifies the instance of CIM_Identity or its "
             "subclass that shall be the owner of the new "
             "CIM_OpaqueManagementData instance. Create() shall "
             "associate the new CIM_OpaqueManagementData "
             "instance with this CIM_Identity instance using a "
             "new instance of CIM_AssociatedPrivilege." )]
      CIM_Identity REF Owner, 
         [IN, Description ( 
             "Specifies the instance of CIM_StorageExtent on "
             "which the new instance of CIM_OpaqueManagementData "
             "shall be based (i.e., in which it shall be "
             "stored). If this parameter is NULL, the choice of "
             "storage location shall be left to the "
             "implementation." )]
      CIM_StorageExtent REF BasedOnExtent, 
         [IN ( false ), OUT, Description ( 
             "Reference to the instance of "
             "CIM_OpaqueManagementData created when the method "
             "returns a value of 0." )]
      CIM_OpaqueManagementData REF OpaqueManagementData, 
         [IN ( false ), OUT, Description ( 
             "Reference to the job (may be null if job completed)."
              )]
      CIM_ConcreteJob REF Job);

      [Description ( 
          "ExportToURI() copies all or some of the bytes of opaque "
          "management data in the extent represented by the "
          "referenced instance of CIM_OpaqueManagementData to the "
          "Uniform Resource Identifier (URI) specified in the "
          "ExportURI parameter. The URI scheme implies the protocol "
          "that shall be used. Typically, the URI will be a Uniform "
          "Resource Locator (URL), but a Uniform Resource Name "
          "(URN) is not prohibited.\n"
          "If 0 is returned, the function completed successfully "
          "and no ConcreteJob instance was required. If 4096/0x1000 "
          "is returned, a ConcreteJob shall be started to to "
          "perform the operation. The Job\'s reference shall be "
          "returned in the output parameter Job." ), 
       ValueMap { "0", "1", "2", "3..4095", "4096", "4097..32767", 
          "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Unknown/Unspecified Error", "DMTF Reserved", 
          "Method Parameters Checked - Job Started", 
          "Method Reserved", "Vendor Specified" }]
   uint32 ExportToURI(
         [Required, IN, Description ( 
             "The CIM_OpaqueManagementData instance that "
             "represents the extent that is the target of the "
             "operation." )]
      CIM_OpaqueManagementData REF OpaqueManagementData, 
         [Required, IN, Description ( 
             "Offset specifies the byte offset at which to start reading."
              ), 
          PUnit ( "byte" )]
      uint64 Offset, 
         [Required, IN, OUT, Description ( 
             "On entry, Length contains the number of bytes to "
             "be read, starting at the byte offset in the Offset "
             "property. On return, Length contains the number of "
             "bytes that were actually read." ), 
          PUnit ( "byte" )]
      uint64 Length, 
         [Required, IN, Description ( 
             "On entry, ExportURI contains a URI based on RFC "
             "3986 that indicates the location to which the "
             "service shall copy the specified bytes of opaque "
             "management data and from which the client "
             "subsequently retrieves them." ), 
          ModelCorrespondence { 
             "CIM_OpaqueManagementDataCapabilities.SupportedExportURISchemes" }]
      string ExportURI, 
         [IN, Description ( 
             "A token that represents a Lock placed on the data "
             "in the extent referenced by the "
             "OpaqueManagementData parameter, using the Lock() "
             "method." ), 
          OctetString]
      uint8 LockToken[], 
         [IN ( false ), OUT, Description ( 
             "Reference to the job (may be null if job completed)."
              )]
      CIM_ConcreteJob REF Job);

      [Description ( 
          "ImportFromURI() modifies all or some of the bytes in the "
          "referenced instance of CIM_OpaqueManagementData. The "
          "imported data for the operation is copied from the URI "
          "specified in the ImportURI parameter. The URI scheme "
          "implies the protocol that shall be used. Typically, the "
          "URI will be a Uniform Resource Locator (URL), but a "
          "Uniform Resource Name (URN) is not prohibited.\n"
          "Any data already present in the instance outside the "
          "range specified by Offset and Length is unchanged.\n"
          "If 0 is returned, the function completed successfully "
          "and no ConcreteJob instance was required. If 4096/0x1000 "
          "is returned, a ConcreteJob shall be started to perform "
          "the operation. The Job\'s reference shall be returned in "
          "the output parameter Job." ), 
       ValueMap { "0", "1", "2", "3..4095", "4096", "4097..32767", 
          "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Unknown/Unspecified Error", "DMTF Reserved", 
          "Method Parameters Checked - Job Started", 
          "Method Reserved", "Vendor Specified" }]
   uint32 ImportFromURI(
         [Required, IN, Description ( 
             "The CIM_OpaqueManagementData instance that "
             "represents the extent that is the target of the "
             "operation." )]
      CIM_OpaqueManagementData REF OpaqueManagementData, 
         [Required, IN, Description ( 
             "Offset specifies the byte offset at which to start writing."
              ), 
          PUnit ( "byte" )]
      uint64 Offset, 
         [Required, IN, OUT, Description ( 
             "On entry, Length contains the number of bytes to "
             "be written, starting at the byte offset in the "
             "Offset. property. On return, Length contains the "
             "number of bytes that were actually written." ), 
          PUnit ( "byte" )]
      uint64 Length, 
         [IN, Description ( 
             "If the value of the DataSize property of the "
             "instance referenced by the OpaqueManagementData "
             "parameter is greater than Offset + Length, then a "
             "value of TRUE shall indicate that the DataSize "
             "property value shall be reduced by this operation "
             "to Offset + Length, and a value of FALSE shall "
             "indicate that the DataSize property value shall "
             "remain unchanged by this operation. If the value "
             "of the DataSize property is not greater than "
             "Offset + Length, then this parameter shall be "
             "ignored." ), 
          ModelCorrespondence { 
             "CIM_OpaqueManagementData.DataSize" }]
      boolean Truncate, 
         [Required, IN, Description ( 
             "On entry, ImportURI contains a URI based on RFC "
             "3986 that shall be used by the service to retrieve "
             "the bytes of opaque management data to be written "
             "into the extent represented by the "
             "OpaqueManagementData parameter." ), 
          ModelCorrespondence { 
             "CIM_OpaqueManagementDataCapabilities.SupportedImportURISchemes" }]
      string ImportURI, 
         [IN, Description ( 
             "A token that represents a Lock placed on the data "
             "in the extent referenced by the "
             "OpaqueManagementData parameter, using the Lock() "
             "method." ), 
          OctetString]
      uint8 LockToken[], 
         [IN ( false ), OUT, Description ( 
             "Reference to the job (may be null if job completed)."
              )]
      CIM_ConcreteJob REF Job);

      [Description ( 
          "Lock() allows a management client to atomically read or "
          "write an opaque management data storage extent larger "
          "than MaxReadLength or MaxWriteLength, respectively. A "
          "server that supports this method shall support the "
          "following pattern:\n"
          "1. Issue Lock() with Lock set to true to lock the "
          "CIM_OpaqueManagementData instance.\n"
          "2. Repeat Read() or Write() as many times as necessary "
          "to complete the transfer\n"
          "3. Issue Lock() with Lock set to false to unlock the "
          "CIM_OpaqueManagementData instance\n"
          "If Lock() with Lock set to true completes successfully, "
          "the server shall return a LockToken to the client. Until "
          "the lock is removed or expires, the server shall deny "
          "OpaqueManagementDataService method requests on the same "
          "CIM_OpaqueManagementData instance that do not contain "
          "the same LockToken value.\n"
          "Lock() shall not lock the properties of the "
          "OpaqueManagementData instance. The method shall return 0 "
          "if successful, 1 if not supported, and any other value "
          "if an error occurred." ), 
       ValueMap { "0", "1", "2", "3..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Unknown/Unspecified Error", "DMTF Reserved", 
          "Vendor Specified" }]
   uint32 Lock(
         [Required, IN, Description ( 
             "The CIM_OpaqueManagementData instance that "
             "represents the extent that is the target of the "
             "operation." )]
      CIM_OpaqueManagementData REF OpaqueManagementData, 
         [Required, IN, Description ( 
             "If true, lock the data from access by another "
             "management client. If false, release the data." )]
      boolean Lock, 
         [IN, OUT, Description ( 
             "A token that shall be returned to the client as "
             "output if Lock is True, and supplied by the client "
             "as input if Lock is False. In this way, only the "
             "client that set the Lock may remove it or delegate "
             "such responsibility to another client." ), 
          OctetString]
      uint8 LockToken[]);

      [Description ( 
          "Read() returns all or some of the bytes of opaque "
          "management data in the extent represented by the "
          "referenced instance of CIM_OpaqueManagementData." ), 
       ValueMap { "0", "1", "2", "3..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Unknown/Unspecified Error", "DMTF Reserved", 
          "Vendor Specified" }]
   uint32 Read(
         [Required, IN, Description ( 
             "The CIM_OpaqueManagementData instance that "
             "represents the extent that is the target of the "
             "operation." )]
      CIM_OpaqueManagementData REF OpaqueManagementData, 
         [Required, IN, Description ( 
             "Offset specifies the byte offset at which to start reading."
              ), 
          PUnit ( "byte" )]
      uint64 Offset, 
         [Required, IN, OUT, Description ( 
             "On entry, Length shall contain the number of bytes "
             "to be read, starting at the byte offset in the "
             "Offset property. On return, Length shall contain "
             "the number of bytes that were actually read." ), 
          ModelCorrespondence { 
             "CIM_OpaqueManagementDataCapabilities.MaxReadLength" }, 
          PUnit ( "byte" )]
      uint64 Length, 
         [IN ( false ), OUT, Description ( 
             "On return, Data shall contain the bytes of opaque "
             "management data read from the extent represented "
             "by the OpaqueManagementData parameter." ), 
          OctetString]
      uint8 Data[], 
         [IN, Description ( 
             "A token that represents a Lock placed on the data "
             "in the extent referenced by the "
             "OpaqueManagementData parameter, using the Lock() "
             "method. Parameter shall be NULL if data is not "
             "locked." ), 
          OctetString]
      uint8 LockToken[]);

      [Description ( 
          "Transfers ownership of a CIM_OpaqueManagementData "
          "instance to the CIM_Identity instance referenced by the "
          "Identity parameter." ), 
       ValueMap { "0", "1", "2", "3..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Unknown/Unspecified Error", "DMTF Reserved", 
          "Vendor Specified" }]
   uint32 ReassignOwnership(
         [Required, IN, Description ( 
             "Reference to the CIM_Identity instance that will "
             "become the new owner of the "
             "CIM_OpaqueManagementData instance referenced by "
             "the OpaqueManagementData parameter." )]
      CIM_Identity REF NewOwner, 
         [Required, IN, Description ( 
             "Reference to the CIM_OpaqueManagementData instance "
             "that is the target of ownership reassignment." )]
      CIM_OpaqueManagementData REF OpaqueManagementData);

      [Description ( 
          "Write() modifies all or some of the bytes in the extent "
          "represented by the referenced instance of "
          "CIM_OpaqueManagementData. Any data already present in "
          "the extent outside the range specified by Offset and "
          "Length shall remain unchanged by this operation." ), 
       ValueMap { "0", "1", "2", "3..4095", "4096", "4097..32767", 
          "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Unknown/Unspecified Error", "DMTF Reserved", 
          "Method Parameters Checked - Job Started", 
          "Method Reserved", "Vendor Specified" }]
   uint32 Write(
         [Required, IN, Description ( 
             "The CIM_OpaqueManagementData instance that "
             "represents the extent that is the target of the "
             "operation." )]
      CIM_OpaqueManagementData REF OpaqueManagementData, 
         [Required, IN, Description ( 
             "Offset specifies the byte offset at which to start writing."
              ), 
          PUnit ( "byte" )]
      uint64 Offset, 
         [Required, IN, OUT, Description ( 
             "On entry, Length contains the number of bytes to "
             "be written, starting at the byte offset in the "
             "Offset. property. On return, Length contains the "
             "number of bytes that were actually written." ), 
          ModelCorrespondence { 
             "CIM_OpaqueManagementDataCapabilities.MaxWriteLength" }, 
          PUnit ( "byte" )]
      uint64 Length, 
         [IN, Description ( 
             "If the value of the DataSize property of the "
             "instance referenced by the OpaqueManagementData "
             "parameter is greater than Offset + Length, then a "
             "value of TRUE shall indicate that the DataSize "
             "property value shall be reduced by this operation "
             "to Offset + Length, and a value of FALSE shall "
             "indicate that the DataSize property value shall "
             "remain unchanged by this operation. If the value "
             "of the DataSize property is not greater than "
             "Offset + Length, then this parameter shall be "
             "ignored." ), 
          ModelCorrespondence { 
             "CIM_OpaqueManagementData.DataSize" }]
      boolean Truncate, 
         [Required, IN, Description ( 
             "On entry, Data contains the bytes of opaque "
             "management data to be written into the extent "
             "represented by the OpaqueManagementData parameter." ), 
          OctetString]
      uint8 Data[], 
         [IN, Description ( 
             "A token that represents a Lock placed on the data "
             "in the extent referenced by the "
             "OpaqueManagementData parameter, using the Lock() "
             "method." ), 
          OctetString]
      uint8 LockToken[], 
         [IN ( false ), OUT, Description ( 
             "Reference to the job (may be null if job completed)."
              )]
      CIM_ConcreteJob REF Job);

};
