EDAA defines the following URI patterns to help developers understand the resource model of the EDAA. Each of these URI patterns is read-only (GET) and return a feed of one or more resource type representations.
In fact the reason that all EDAA URI patterns start with /types or /instances is to support the idea of treating type resources as first class resources in the EDAA approach and thereby to distinguish /types resources from /instances resources.
The examples below show the atom/xml representation of the responses. EDAA has also defined a JSON equivalent of these feeds.
/types
GET operation to retrieve a paginated feed of resource representations. Each resource in the feed is a representation of a "type resource". Current format of a type resource is "VS-XML", an XSD-like syntax for defining types, attributes and relationships of the type and other type related metadata.
page and per_page query parameters are supported to shape the pagination of the feed.
An example response is shown below:
<?xml version="1.0" encoding="UTF-8"?> <feed xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://www.w3.org/2005/Atom" xmlns:vsc="http://schemas.emc.com/vs-xml/namespace/Common/1.0"> <title>/slm/msa/types</title> <updated>2011-05-23T16:52:06-05:00</updated> <author><name>msa framework</name></author> <id>74a72d5a-de7c-4f82-a753-b4a5b00afe28</id> <entry> <title type='text'>vCenter</title> <id>http://localhost:8080/slm/msa/types/vCenter</id> <updated>2011-05-23T16:52:06-05:00</updated> <link rel='edit' href='http://localhost:8080/slm/msa/types/vCenter/instances' /> <link rel='related' href='http://localhost:8080/slm/msa/types/vCenter/instances' /> <link rel='alternate' href='http://localhost:8080/slm/msa/types/vCenter' /> <link rel='self' href='http://localhost:8080/slm/msa/types/vCenter' /> <content type='application/xml'> <vsc:Type xmlns:atom='http://www.w3.org/2005/Atom' xmlns:vsc='http://schemas.emc.com/vs-xml/namespace/Common/1.0' xmlns:inst='http://schemas.emc.com/msa/uim/1.0'> <vsc:typeName namespace='http://schemas.emc.com/msa/uim/1.0'>vCenter</vsc:typeName> <atom:link rel='http://schemas.emc.com/msa/common/reln/PR_Create' href='http://localhost:8080/slm/msa/types/vCenter/PR_Create' /> <atom:link rel='self' href='http://localhost:8080/slm/msa/types/vCenter' /> <vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1' maxOccurs='1'>displayName</vsc:attribute> <vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1' maxOccurs='1'>ipAddress</vsc:attribute> <vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:long' minOccurs='1' maxOccurs='1'>id</vsc:attribute> <vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1' maxOccurs='1'>name</vsc:attribute> <vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1' maxOccurs='1'>description</vsc:attribute> <vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1' maxOccurs='1'>vCenterVersion</vsc:attribute> <vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1' maxOccurs='1'>userName</vsc:attribute> <vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1' maxOccurs='1'>port</vsc:attribute> <vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1' maxOccurs='1'>password</vsc:attribute> <vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1' maxOccurs='1'>connectionStatus</vsc:attribute> <vsc:relationship relType="vCenterDatacenter" type="http://schemas.emc.com/msa/common/contains" minOccurs="1" maxOccurs="unbounded" description="List of Datacenters">Datacenters</vsc:relationship> <vsc:action rel='edit' description='Instances are mutable' /> <vsc:action rel='http://schemas.emc.com/msa/uim/1.0/vCenter/action/verifyConnection' description='Verifies if vCenter is reachable' /> </vsc:Type> </content> </entry> <entry> <title type='text'>vCenterDatacenter</title> <id>http://localhost:8080/slm/msa/types/vCenterDatacenter</id> <updated>2011-05-23T16:52:06-05:00</updated> <link rel='related' href='http://localhost:8080/slm/msa/types/vCenterDatacenter/instances' /> <link rel='alternate' href='http://localhost:8080/slm/msa/types/vCenterDatacenter' /> <link rel='self' href='http://localhost:8080/slm/msa/types/vCenterDatacenter' /> <content type='application/xml'> <vsc:Type xmlns:atom='http://www.w3.org/2005/Atom' xmlns:vsc='http://schemas.emc.com/vs-xml/namespace/Common/1.0' xmlns:inst='http://schemas.emc.com/msa/uim/1.0'> <vsc:typeName namespace='http://schemas.emc.com/msa/uim/1.0'>vCenterDatacenter</vsc:typeName> <atom:link rel='http://schemas.emc.com/msa/common/reln/PR_Create' href='http://localhost:8080/slm/msa/types/vCenterDatacenter/PR_Create' /> <atom:link rel='self' href='http://localhost:8080/slm/msa/types/vCenterDatacenter' /> <vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1' maxOccurs='1'>displayName</vsc:attribute> <vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:long' minOccurs='1' maxOccurs='1'>id</vsc:attribute> <vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1' maxOccurs='1'>name</vsc:attribute> <vsc:attribute type='http://www.w3.org/2001/XMLSchema-datatypes:string' minOccurs='1' maxOccurs='1'>managedObjectKey</vsc:attribute> <vsc:relationship relType='vCenter' type='http://schemas.emc.com/msa/common/ownedBy' minOccurs='1' maxOccurs='1' description='vCenter this Datacenter belongs to'>vCenter</vsc:relationship> </vsc:Type> </content> </entry> ... </feed>
/types/{typeName}
GET operation to retrieve a representation of the type resource identified by {typeName}. Current format of a type resource is "VSXML", an XSD-like syntax for defining types, attributes and relationships of the type and other type related metadata.
An example response to GET /types/vCenter is shown below:
<?xml version="1.0" encoding="UTF-8"?> <feed xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://www.w3.org/2005/Atom" xmlns:vsc="http://schemas.emc.com/vs-xml/namespace/Common/1.0"> <title>/slm/msa/types/vCenter</title> <updated>2011-06-02T16:24:27-05:00</updated> <author><name>msa framework</name></author> <id>8cc4c3fc-5821-47ad-9b65-0ed5b2809a3c</id> <link rel="self" href="http://localhost:8080/slm/msa/types/vCenter"/> <entry> <title type="text">vCenter</title> <id>http://localhost:8080/slm/msa/types/vCenter</id> <updated>2011-06-02T16:24:27-05:00</updated> <link rel="edit" href="http://localhost:8080/slm/msa/types/vCenter/instances"/> <link rel="related" href="http://localhost:8080/slm/msa/types/vCenter/instances"/> <link rel="alternate" href="http://localhost:8080/slm/msa/types/vCenter"/> <link rel="self" href="http://localhost:8080/slm/msa/types/vCenter"/> <content type="application/xml"> <vsc:Type xmlns:inst="http://schemas.emc.com/msa/uim/1.0"> <vsc:typeName namespace="http://schemas.emc.com/msa/uim/1.0">vCenter</vsc:typeName> <atom:link rel="http://schemas.emc.com/msa/common/reln/PR_Create" href="http://localhost:8080/slm/msa/types/vCenter/PR_Create"/> <atom:link rel="self" href="http://localhost:8080/slm/msa/types/vCenter"/> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1" maxOccurs="1">displayName</vsc:attribute> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1" maxOccurs="1">ipAddress</vsc:attribute> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:long" minOccurs="1" maxOccurs="1">id</vsc:attribute> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1" maxOccurs="1">name</vsc:attribute> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1" maxOccurs="1">description</vsc:attribute> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1" maxOccurs="1">vCenterVersion</vsc:attribute> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1" maxOccurs="1">userName</vsc:attribute> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1" maxOccurs="1">port</vsc:attribute> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1" maxOccurs="1">password</vsc:attribute> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1" maxOccurs="1">connectionStatus</vsc:attribute> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1" maxOccurs="1">dataCentersList</vsc:attribute> <vsc:relationship relType="vCenterDatacenter" type="http://schemas.emc.com/msa/common/contains" minOccurs="1" maxOccurs="unbounded" description="List of Datacenters">Datacenters</vsc:relationship> <vsc:action rel="edit" description="Instances are mutable"/> <vsc:action rel="http://schemas.emc.com/msa/uim/1.0/vCenter/action/verifyConnection" description="Verifies if vCenter is reachable"/> </vsc:Type> </content> </entry> </feed>
/types/{typeName}/hierarchy
GET operation to retrieve a paginated feed of resource representations of each type resource in the type hierarchy starting with the type identified by {typeName}. Each resource in the feed is a representation of a "type resource". Current format of a type resource is "VS-XML", an XSD-like syntax for defining types, attributes and relationships of the type and other type related metadata.
The idea is that if a type named "ApplicationServer" is a subclass of "SoftwareService" which is a subclass of "SoftwareElement", then the response to:
GET /types/ApplicationServer/hierarchy
would be a feed containing series of entries, one entry for the ApplicationServer type, followed by an entry for the SoftwareService type followed by the SoftwareElement type.
/types/{typeName}/PR_Create
The /PR_Create URI pattern was introduced in support of the partial representations used to create new resources of a given type. As discussed in EDAA Read/Write spec, the challenge for consumers of the read-write portion of MSA is to determine, for any given type, what is the subset of attributes and relationships that a third party consumer must specify when a resource is created.
/types/{typeName}/PR_Create contains a VS-XML representation of the subset of attributes and relationships of the type identified by {typeName} that must appear in the body of a POST (create) operation. Note the cardinality constraints on each attribute and relationship as specified by the @minOccurs and @maxOccurs on the attribute declaration and relationship declaration elements.
<?xml version="1.0" encoding="UTF-8"?> <feed xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://www.w3.org/2005/Atom" xmlns:vsc="http://schemas.emc.com/vsxml/ namespace/Common/1.0"> <title>/slm/msa/types/vCenter/PR_Create</title> <updated>2011-06-03T09:17:05-05:00</updated> <author><name>msa framework</name></author> <id>b28dd0d9-60a6-4204-bf7f-d7b6d8ca2740</id> <link rel="self" href="http://localhost:8080/slm/msa/types/vCenter/PR_Create"/> <entry> <title type="text">vCenter - PR_Create</title> <id>http://localhost:8080/slm/msa/types/vCenter/PR_Create</id> <updated>2011-06-03T09:17:05-05:00</updated> <link rel="related" href="http://localhost:8080/slm/msa/types/vCenter"/> <link rel="self" href="http://localhost:8080/slm/msa/types/vCenter/PR_Create"/> <content type="application/xml"> <vsc:Type xmlns:inst="http://schemas.emc.com/msa/uim/1.0"> <vsc:typeName namespace="http://schemas.emc.com/msa/uim/1.0">vCenter</vsc:typeName> <atom:link rel="self" href="http://localhost:8080/slm/msa/types/vCenter/PR_Create"/> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1" maxOccurs="1">displayName</vsc:attribute> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1" maxOccurs="1">ipAddress</vsc:attribute> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1" maxOccurs="1">name</vsc:attribute> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1" maxOccurs="1">description</vsc:attribute> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1" maxOccurs="1">userName</vsc:attribute> <vsc:attribute type="http://www.w3.org/2001/XMLSchema-datatypes:string" minOccurs="1" maxOccurs="1">password</vsc:attribute> </vsc:Type> </content> </entry>