Resource Metadata

ResourceMetadata may be used to:

  • Express constraints on the existing CIMI defined resource attributes (e.g., express a maximum for the 'cpu' attribute of the MachineConfiguration resource)
  • Introduce new attributes for CIMI defined resources together with any constraints governing these (e.g., a new 'location' attribute for the Volume resource that takes values from a defined set of strings)
  • Introduce new operations for any of the CIMI defined resources (e.g., define a new 'compress' operation for the Volume resource)
  • Express any Provider specific capabilities or features (e.g., the length of time that a Job resource will be retained after Job completion and before this is deleted)
Implementations of this specification should allow for Consumers to discover the metadata associated with each supported resource. Doing so allows for the discovery of Provider defined constraints on the CIMI defined attributes as well as discovery of any new extension attributes or operations that the Provider may have defined. ResourceMetadata can also be used to express any Provider specific capabilities or features. The mechanism by which this metadata is made available will be protocol specific.

Retrieve the ResourceMetadata Collection

Example request:

GET /cimi/resource_metadata HTTP/1.1
Authorization: Basic bW9ja3VzZXI6bW9ja3Bhc3N3b3Jk
User-Agent: curl/7.24.0 (i686-redhat-linux-gnu) libcurl/7.24.0 NSS/3.13.5.0 zlib/1.2.5 libidn/1.24 libssh2/1.4.1
Host: localhost:3001
Accept: application/xml

Server response:

HTTP/1.1 200 OK
Content-Type: application/xml
CIMI-Specification-Version: 1.0.1
Content-Length: 1675
ETag: 97a131617573093b156505f77202bf57
Cache-Control: max-age=0, private, must-revalidate
Date: Fri, 11 Jan 2013 15:29:14 GMT
Connection: keep-alive
Server: thin 1.5.0 codename Knife

<Collection xmlns="http://schemas.dmtf.org/cimi/1"
          resourceURI="http://schemas.dmtf.org/cimi/1/ResourceMetadataCollection">
  <id>http://localhost:3001/cimi/resource_metadata</id>
  <count>2</count>
  <ResourceMetadata>
    <id>http://localhost:3001/cimi/resource_metadata/cloud_entry_point</id>
    <name>CloudEntryPoint</name>
    <typeUri>http://schemas.dmtf.org/cimi/1/CloudEntryPoint</typeUri>
    <attribute name="driver" namespace="http://deltacloud.org/cimi/CloudEntryPoint/driver"
          type="text" required="true" />
    <attribute name="provider" namespace="http://deltacloud.org/cimi/CloudEntryPoint/provider"
          type="text" required="true" />
  </ResourceMetadata>
  <ResourceMetadata>
    <id>http://localhost:3001/cimi/resource_metadata/machine</id>
    <name>Machine</name>
    <typeUri>http://schemas.dmtf.org/cimi/1/Machine</typeUri>
    <attribute name="realm" namespace="http://deltacloud.org/cimi/Machine/realm"
           type="text" required="false">
      <constraint>
        <value>us</value>
      </constraint>
      <constraint>
        <value>eu</value>
      </constraint>
    </attribute>
    <attribute name="machine_image"
          namespace="http://deltacloud.org/cimi/Machine/machine_image" type="URI"
          required="false" />
    <capability name="DefaultInitialState"
          uri="http://schemas.dmtf.org/cimi/1/capability/Machine/DefaultInitialState"
          description="Indicates what the default initial state of a new Machine ">
          STARTED
    </capability>
    <capability name="InitialStates"
          uri="http://schemas.dmtf.org/cimi/1/capability/Machine/InitialStates"
          description="Indicates the list of allowable initial states">
          STARTED,STOPPED
    </capability>
  </ResourceMetadata>
</Collection>

ResourceMetadata Capabilities


The following table describes the capability URIs defined by this specification. Providers may define new URIs and it is recommended that these URIs be dereferencable such that Consumers can discover the details of the new capability. The "Resource Name" column contains the name of the resource that may contain the specified capability within its ResourceMetadata. The "Capability Name" column contains the name of the specified capability and shall be unique within the scope of the corresponding resource. Each capability's URI shall be constructed by appending the "Resource Name", a slash(/), and the "Capability Name" to "http://schemas.dmtf.org/cimi/1/capability/". For example, the Machine's "InitialState" capability would have a URI of:

 http://schemas.dmtf.org/cimi/1/capability/Machine/InitialState 
Note that capabilities that apply to the Provider in general, and are not specific to any one resource, are associated with the Cloud Entry Point resource (in case a capability would apply only to the CloudEntryPoint resource itself, its definition would say so).


Resource Name Capability Name Description
CloudEntryPoint ExpandParameter Indicated whether the $expand query parameter is supported by the Provider.
CloudEntryPoint FilterParameter Indicates whether the $filter query parameter is supported by the Provider.
CloudEntryPoint firstParameter Indicates whether the $first and $last query parameters are supported by the Provider. Note that either both shall be supported or neither shall be supported.
CloudEntryPoint SelectParameter Indicated whether the $select query parameter is supported by the Provider.
System SystemComponentTemplateByValue Indicates that the Provider supports specifying Component Templates by-value in SystemTemplates.
Machine DefaultInitialState Indicates what the default initial state of a new Machine will be unless explicitly set by the "initialState" attribute
Machine InitialStates Indicates the list of allowable initial states that Consumer may choose from when creating a new Machine.
Machine MachineConfigByValue Indicates that the Provider supports specifying Machine Configurations by-value in Machine create operations. If true the MachineTemplateByValue capability shall also be specified with a value of true.
Machine MachineCredentialByValue Indicates that the Provider supports specifying Credential by-value in Machine create operations. If true the MachineTemplateByValue capability shall also be specified with a value of true.
Machine MachineImageByValue Indicates that the Provider supports specifying Machine Images by-value in Machine create operations. If true the MachineTemplateByValue capability shall also be specified with a value of true.
Machine MachineVolumeTemplatesByValue Indicates that the Provider supports specifying VolumeTemplates by-value in Machine create operations. If true the MachineTemplateByValue capability shall also be specified with a value of true.
Machine MachineStopForce Indicates that the Provider supports specifying the "force" option on the stop and restart operations.
Machine MachineStopForceDefault Indicates the default way in which the Provider will stop/restart a Machine. When set to "true", the Provider will forcefully stop the Machine, as opposed to a value of "false," which indicates that the Provider will attempt to gracefully stop the Machine.
Machine RestoreFromImage Indicates that the Provider supports restoring Machines from Machine Images that are not SNAPSHOT Machine Images.
Machine UserData Indicates which userData injection method will be used. See 5.14.1 for more information.
Credential CredentialTemplateByValue Indicates that the Provider supports specifying Credential Templates by-value in Credential create operations.
Volume SharedVolumeSupport Indicates that the Provider supports the sharing of volume resources across Machines. The value specified is of type "boolean."
Volume VolumeConfigByValue Indicates that the Provider supports specifying Volume Configurations by-value in the Volume create operation. If true, the VolumeTemplateByValue capability shall also be specified with a value of true.
Volume VolumeImageByValue Indicates that the Provider supports specifying Volume Images by-value in the Volume create operation. If true the VolumeTemplateByValue capability shall also be specified with a value of true.
Volume VolumeSnapshot Indicates that the Provider supports creating a new VolumeImage by referencing an existing Volume.
Volume VolumeTemplateByValue Indicates that the Provider supports specifying Volume Templates by-value in Volume create operations.
Network NetworkConfigByValue Indicates that the Provider supports specifying Network Configurations by-value in the Network create operation.
Network NetworkTemplateByValue Indicates that the Provider supports specifying Network Templates by-value in the Network create operation.
NetworkPort NetworkPortConfigByValue Indicates that the Provider supports specifying NetworkPort Configurations by-value in the NetworkPort create operation.
NetworkPort NetworkPortTemplateByValue Indicates that the Provider supports specifying NetworkPort Templates by-value in the NetworkPort create operation.
ForwardingGroup MixedNetwork Indicates whether ForwardingGroups can support both private and public connection at the same time.
Job JobRetention If the Provider supports Job resources as specified in this document, this capability indicates in minutes how long a job will live in the system before its deleted. In this case, the value attribute provides the number of minutes (e.g., 30 min). The value specified is of type "integer."
Meter MeterConfigByValue Indicates that the Provider supports specifying MeterConfigurations by-value in the Meter create operation.
Meter MeterTemplateByValue Indicates that the Provider supports specifying Meter Templates by-value in the Meter create operation.
EventLog Linked Indicates that the Provider shall delete EventLogs that are associated with resources when the resource is deleted.