OData Protocol

 

Applies To: System Center 2016 - Service Provider Foundation, System Center Technical Preview

Service Provider Foundation exposes Virtual Machine Manager (VMM) as an Open Data Protocol (OData) service. The OData service is accessed through a specific Uniform Resource Identifier (URI). The general format of the Service Provider Foundation web service URI is “https://server:port/SC2012/component/Microsoft.Management.Odata.svc/”. The following table describes the parts of the URI.

URI Part Description
server The server that hosts Service Provider Foundation.
port The port on which Service Provider Foundation is hosted.
component The System Center component you will access. For Virtual Machine Manager, use VMM.

Service Provider Foundation currently exposes three component services: the Administration service, the Provider service, and the Virtual Machine Manager service. For more information about the services that Service Provider Foundation provides, see Service Provider Foundation Services.

Component service protocols

The components that Service Provider Foundation provides implement the OData and generate an Atom Publishing Protocol (AtomPub) XML-based result set.

The Open Data Protocol

Service Provider Foundation uses the Open Data Protocol (OData). OData uses URIs for resource identification and commits to an HTTP-based interface for interaction with these resources. OData uses the standard HTML operations POST, GET, PUT, MERGE, and DELETE. The server translates these HTML operations into standard CRUD (create, read, update, delete) operations. For more information, seeOpen Data Protocol.

The Atom Publishing Protocol

The results from the web service query comply with the Atom Publishing Protocol (AtomPub). AtomPub provides an XML-based feed that contains zero or more entities. An entity can include metadata to describe the related resource. Service Provider Foundation supplies the metadata that is attached to an entity.

Collections and entities

When you navigate to a valid service URI, a list of collections is returned. When you access a specific collection, a list of entities is returned. Collections represent types of objects. Entities represent objects in a collection.

This URI example returns the list of collections by using the service root:
https://contoso:8090/SC2012/VMM/Microsoft.Management.Odata.svc

This URI example returns the entities of a collection:
https://contoso:8090/SC2012/VMM/Microsoft.Management.Odata.svc/VirtualMachines

This URI example returns a specific entity of a collection:
https://contoso:8090/SC2012/VMM/Microsoft.Management.Odata.svc/VirtualMachines(ID=guid'D2F1232E-3D68-478E-BC95-0518465EDC3D',StampId=guid'9CF31C95-728C-4B15-A790-6DBC2974AEF1')

How to query and filter OData entities

You can specify a query by building a query string for the current collection. OData provides several options for querying the entities in the current collection, and you can sort, format, filter, and limit the results. For more information, see the "Query String Options" section in Open Data Protocol.

Note

Depending on the service component that you are accessing through Service Provider Foundation, different restrictions or requirements might be in effect when you query collections or access entities. These restrictions and requirements are described in the service component overview topics.

You can use the OData $filter system query option to specify that you will perform a filter on the collection entities. The format of the filter query is service uri/collection?$filter=property_name operator property_value. The $filter syntax supports a variety of options. For more information about all of the options that are available to you when you perform a filter, see Filter System Query Option ($filter).

This URI example returns all the virtual machines that belong to a specific stamp from the VMM service component:
https://contoso:8090/SC2012/VMM/Microsoft.Management.Odata.svc/VirtualMachines?$filter=StampId eq guid'C20C94CA-6B16-43FF-8CE0-B49873B54F5A'

This URI example returns all the virtual machines that belong to a specific stamp and that are named Test Machine 1 from the VMM service component:
https://contoso:8090/SC2012/VMM/Microsoft.Management.Odata.svc/VirtualMachines?$filter=StampId eq guid'C20C94CA-6B16-43FF-8CE0-B49873B54F5A' and Name eq 'Test Machine 1'

Generally, when you perform the GET operation and there are more than ten entities, only the first ten entities are returned to you. To see the next set of entities, use the $skip system query option. For more information, seeSkip System Query Option ($skip).

RunAsynchronously query option

Some collection operations can use a special RunAsynchronously query option. When this option is set, the server will immediately return an HTTP response while the operation completes on the server. The following table describes which collection operations are supported:

Collection Operation
VirtualMachines PUT
VirtualNetworkAdapters PUT
Services PUT

The RunAsynchronously query option can be specified on the URL or through code.

This URI example would be used with a PUT operation and uses the RunAsynchronously query option:
https://contoso:8090/SC2012/VMM/Microsoft.Management.Odata.svc/VirtualMachines(ID=guid'D2F1232E-3D68-478E-BC95-0518465EDC3D',StampId=guid'9CF31C95-728C-4B15-A790-6DBC2974AEF1')?RunAsynchronously=0

See Also

Architecture Overview
Administration Database
Service Provider Foundation Services
Service Gaps