Contract changes
Change-Id: Idc44eebb9e3312e8dddb93efc9fecff9a540f138
This commit is contained in:
parent
4f1f3d422b
commit
6af517348e
@ -2,17 +2,4 @@
|
|||||||
|
|
||||||
<extensions xmlns="http://docs.openstack.org/common/api/v2.0"
|
<extensions xmlns="http://docs.openstack.org/common/api/v2.0"
|
||||||
xmlns:atom="http://www.w3.org/2005/Atom">
|
xmlns:atom="http://www.w3.org/2005/Atom">
|
||||||
<extension
|
|
||||||
name="Rackspace" namespace="http://docs.rackspace.com/identity/api/ext/rpe/v1.0" alias="RS-KV2"
|
|
||||||
updated="2011-08-14T13:25:27-06:00">
|
|
||||||
<description>
|
|
||||||
Rackspace extensions to Keystone v2.0 API
|
|
||||||
emailed when the password has been reset.
|
|
||||||
</description>
|
|
||||||
<atom:link rel="describedby" type="application/pdf"
|
|
||||||
href="http://docs.rackspacecloud.com/identity/api/ext/ identity-rpe-20111111.pdf"/>
|
|
||||||
<atom:link rel="describedby" type="application/vnd.sun.wadl+xml"
|
|
||||||
href="http://docs.rackspacecloud.com/identity/api/ext/ identity-rpe.wadl"/>
|
|
||||||
</extension>
|
|
||||||
|
|
||||||
</extensions>
|
</extensions>
|
||||||
|
@ -317,7 +317,11 @@
|
|||||||
|
|
||||||
<method name="POST" id="authenticate">
|
<method name="POST" id="authenticate">
|
||||||
<request>
|
<request>
|
||||||
<representation mediaType="application/xml" element="identity:passwordCredentials"/>
|
<representation mediaType="application/xml" element="identity:passwordCredentials">
|
||||||
|
<param name="passwordCredentials" style="plain" required="true"
|
||||||
|
type="identity:PasswordCredentialsWithoutUsername"
|
||||||
|
path="/identity:passwordCredentials"/>
|
||||||
|
</representation>
|
||||||
<representation mediaType="application/json"/>
|
<representation mediaType="application/json"/>
|
||||||
</request>
|
</request>
|
||||||
<response status="200 203">
|
<response status="200 203">
|
||||||
|
@ -12,8 +12,8 @@
|
|||||||
"internalURL": "https://compute.north.host/v1/blah-blah",
|
"internalURL": "https://compute.north.host/v1/blah-blah",
|
||||||
"region": "North",
|
"region": "North",
|
||||||
"versionId": "1.0",
|
"versionId": "1.0",
|
||||||
"versionInfo": "uri",
|
"versionInfo": "https://compute.north.host/v1.0/",
|
||||||
"versionList": "uri"
|
"versionList": "https://compute.north.host/"
|
||||||
}, {
|
}, {
|
||||||
"publicURL": "https://compute.north.host/v1.1/blah-blah",
|
"publicURL": "https://compute.north.host/v1.1/blah-blah",
|
||||||
"internalURL": "https://compute.north.host/v1.1/blah-blah",
|
"internalURL": "https://compute.north.host/v1.1/blah-blah",
|
||||||
|
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"OS-EC2-ec2Credentials":{
|
||||||
|
"username":"test_user",
|
||||||
|
"secret": "aaaaa",
|
||||||
|
"signature": "bbb",
|
||||||
|
"tenantId":"77654"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ec2Credentials
|
||||||
|
xmlns="http://docs.openstack.org/identity/api/ext/OS-EC2/v1.0"
|
||||||
|
username="testuser"
|
||||||
|
key="aaaaa"
|
||||||
|
signature="bbbbb"
|
||||||
|
tenantId="77654"/>
|
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"RAX-KEY:apikeyCredentials":{
|
||||||
|
"username":"test_user",
|
||||||
|
"apikey": "aaaaa-bbbbb-ccccc-12345678",
|
||||||
|
"tenantId":"77654"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<apikeyCredentials
|
||||||
|
xmlns="http://docs.rackspace.com/identity/api/ext/RAX-KEY/v1.0"
|
||||||
|
username="testuser"
|
||||||
|
apikey="aaaaa-bbbbb-ccccc-12345678"
|
||||||
|
tenantId="77654"/>
|
||||||
|
|
@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<passwordCredentials
|
<passwordCredentials
|
||||||
xmlns="http://docs.openstack.org/identity/api/v2.0"
|
xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||||
password="P@ssword1" username="testuser"
|
username="testuser"
|
||||||
tenantId="77654"/>
|
password="P@ssword1"
|
||||||
|
tenantId="77654"/>
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"endpoint":{
|
"endpoint":{
|
||||||
"id":3,
|
"id":3,
|
||||||
"href":"https://auth.keystone.com/v2.0/baseURLs/1"
|
"href":"https://auth.keystone.com/v2.0/endpoints/3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
<endpoint xmlns="http://docs.openstack.org/identity/api/v2.0"
|
<endpoint xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||||
id="3" />
|
id="3"
|
||||||
|
href="https://auth.keystone.com/v2.0/endpoints/3"
|
||||||
|
/>
|
||||||
|
@ -1,11 +1,14 @@
|
|||||||
{
|
{
|
||||||
"endpointTemplate":{
|
"endpointTemplate":{
|
||||||
"id":1,
|
"id":1,
|
||||||
"region":"DFW",
|
"region":"North",
|
||||||
"global":true,
|
"global":true,
|
||||||
"serviceName":"service1",
|
"type":"compute",
|
||||||
"publicURL":"https://service-public.com/v1",
|
"publicURL":"https://compute.north.public.com/v1",
|
||||||
"internalURL":"https://service-internal.com/v1",
|
"internalURL":"https://compute.north.internal.com/v1",
|
||||||
|
"versionId": "1",
|
||||||
|
"versionInfo": "https://compute.north.public.com/v1/",
|
||||||
|
"versionList": "https://compute.north.public.com/"
|
||||||
"enabled":true
|
"enabled":true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,10 +3,15 @@
|
|||||||
<endpointTemplate
|
<endpointTemplate
|
||||||
xmlns="http://docs.openstack.org/identity/api/v2.0"
|
xmlns="http://docs.openstack.org/identity/api/v2.0"
|
||||||
id="1"
|
id="1"
|
||||||
region="DFW"
|
region="North"
|
||||||
global="true"
|
global="true"
|
||||||
serviceName="service1"
|
type="compute"
|
||||||
publicURL="https://service-public.com/v1"
|
publicURL="https://service-public.com/v1"
|
||||||
internalURL="https://service-internal.com/v1"
|
internalURL="https://service-internal.com/v1"
|
||||||
enabled="true"
|
enabled="true">
|
||||||
/>
|
<version
|
||||||
|
ID="1"
|
||||||
|
Info="https://compute.north.public.com/v1/"
|
||||||
|
List="https://compute.north.public.com/"
|
||||||
|
/>
|
||||||
|
</endpointTemplate>
|
@ -2,41 +2,56 @@
|
|||||||
"endpointsTemplates":[
|
"endpointsTemplates":[
|
||||||
{
|
{
|
||||||
"id":1,
|
"id":1,
|
||||||
"region":"DFW",
|
"region":"North",
|
||||||
"global":true,
|
"global":true,
|
||||||
"serviceName":"service1",
|
"type":"compute",
|
||||||
"publicURL":"https://service1.public.com/v1",
|
"publicURL":"https://compute.north.public.com/v1",
|
||||||
"internalURL":"https://service1.internal.com/v1",
|
"internalURL":"https://compute.north.internal.com/v1",
|
||||||
|
"versionId": "1",
|
||||||
|
"versionInfo": "https://compute.north.public.com/v1/",
|
||||||
|
"versionList": "https://compute.north.public.com/"
|
||||||
"enabled":true
|
"enabled":true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":2,
|
"id":2,
|
||||||
"region":"ORD",
|
"region":"South",
|
||||||
"serviceName":"service2",
|
"serviceName":"compute",
|
||||||
"publicURL":"https://service2.public.com/v1",
|
"publicURL":"https://compute.south.public.com/v1",
|
||||||
"internalURL":"https://service2.internal.com/v1",
|
"internalURL":"https://compute.south.internal.com/v1",
|
||||||
|
"versionId": "1",
|
||||||
|
"versionInfo": "https://compute.south.public.com/v1/",
|
||||||
|
"versionList": "https://compute.south.public.com/"
|
||||||
"enabled":false
|
"enabled":false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":3,
|
"id":3,
|
||||||
"region":"DFW",
|
"region":"North",
|
||||||
"global":true,
|
"global":true,
|
||||||
"serviceName":"service1",
|
"serviceName":"object-store",
|
||||||
"publicURL":"https://service.public.com/v1.0",
|
"publicURL":"https://object-store.north.public.com/v1.0",
|
||||||
|
"versionId": "1.0",
|
||||||
|
"versionInfo": "https://object-store.north.public.com/v1.0/",
|
||||||
|
"versionList": "https://object-store.north.public.com/"
|
||||||
"enabled":true
|
"enabled":true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":4,
|
"id":4,
|
||||||
"region":"ORD",
|
"region":"South",
|
||||||
"serviceName":"service2",
|
"serviceName":"object-store",
|
||||||
"publicURL":"https://service2.public.com/v2",
|
"publicURL":"https://object-store.south.public.com/v2",
|
||||||
|
"versionId": "2",
|
||||||
|
"versionInfo": "https://object-store.south.public.com/v2/",
|
||||||
|
"versionList": "https://object-store.south.public.com/"
|
||||||
"enabled":true
|
"enabled":true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":5,
|
"id":5,
|
||||||
"global":true,
|
"global":true,
|
||||||
"serviceName":"service3",
|
"serviceName":"OS-DNS:DNS",
|
||||||
"publicURL":"https://service3.public.com/v3.2",
|
"publicURL":"https://dns.public.com/v3.2",
|
||||||
|
"versionId": "1.0",
|
||||||
|
"versionInfo": "https://dns.public.com/v1.0/",
|
||||||
|
"versionList": "https://dns.public.com/"
|
||||||
"enabled":true
|
"enabled":true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -2,41 +2,61 @@
|
|||||||
|
|
||||||
<endpointTemplates xmlns="http://docs.openstack.org/identity/api/v2.0">
|
<endpointTemplates xmlns="http://docs.openstack.org/identity/api/v2.0">
|
||||||
<endpointTemplate
|
<endpointTemplate
|
||||||
id="1"
|
id="1"
|
||||||
region="DFW"
|
region="North"
|
||||||
global="true"
|
global="true"
|
||||||
serviceName="service1"
|
serviceType="compute"
|
||||||
publicURL="https://service1.public.com/v1"
|
publicURL="https://compute.north.public.com/v1"
|
||||||
internalURL="https://service1.internal.clouddrive.com/v1"
|
internalURL="https://compute.north.internal.com/v1"
|
||||||
enabled="true"
|
enabled="true">
|
||||||
/>
|
<version
|
||||||
|
ID="1"
|
||||||
|
List="https://compute.north.public.com/"
|
||||||
|
Info="https://compute.north.public.com/v1"/>
|
||||||
|
</endpointTemplate>
|
||||||
<endpointTemplate
|
<endpointTemplate
|
||||||
id="2"
|
id="2"
|
||||||
region="ORD"
|
region="south"
|
||||||
serviceName="service2"
|
serviceType="service2"
|
||||||
publicURL="https://service2.public.com/v1"
|
publicURL="https://service2.public.com/v1"
|
||||||
internalURL="https://service2.internal.public.com/v1"
|
internalURL="https://service2.internal.public.com/v1"
|
||||||
enabled="false"
|
enabled="false">
|
||||||
/>
|
<version
|
||||||
|
ID="1"
|
||||||
|
List="https://service1.public.com/"
|
||||||
|
Info="https://service1.public.com/v1"/>
|
||||||
|
</endpointTemplate>
|
||||||
<endpointTemplate
|
<endpointTemplate
|
||||||
id="3"
|
id="3"
|
||||||
region="DFW"
|
region="DFW"
|
||||||
global="true"
|
global="true"
|
||||||
serviceName="service1"
|
serviceType="service1"
|
||||||
publicURL="https://service1.public.com/v1"
|
publicURL="https://service1.public.com/v1"
|
||||||
enabled="true"
|
enabled="true">
|
||||||
/>
|
<version
|
||||||
|
ID="1"
|
||||||
|
List="https://service1.public.com/"
|
||||||
|
Info="https://service1.public.com/v1"/>
|
||||||
|
</endpointTemplate>
|
||||||
<endpointTemplate
|
<endpointTemplate
|
||||||
id="4"
|
id="4"
|
||||||
region="ORD"
|
region="ORD"
|
||||||
serviceName="service2"
|
serviceType="service2"
|
||||||
publicURL="https://service2.public.com/v1"
|
publicURL="https://service2.public.com/v1"
|
||||||
enabled="true"
|
enabled="true">
|
||||||
/>
|
<version
|
||||||
|
ID="1"
|
||||||
|
List="https://service1.public.com/"
|
||||||
|
Info="https://service1.public.com/v1"/>
|
||||||
|
</endpointTemplate>
|
||||||
<endpointTemplate
|
<endpointTemplate
|
||||||
id="5"
|
id="5"
|
||||||
global="true"
|
global="true"
|
||||||
serviceName="service3"
|
serviceType="service3"
|
||||||
publicURL="https://service3.public.com/v1"
|
publicURL="https://service3.public.com/v1">
|
||||||
/>
|
<version
|
||||||
|
ID="1"
|
||||||
|
List="https://service1.public.com/"
|
||||||
|
Info="https://service1.public.com/v1"/>
|
||||||
|
</endpointTemplate>
|
||||||
</endpointTemplates>
|
</endpointTemplates>
|
||||||
|
@ -2,23 +2,23 @@
|
|||||||
"endpoints":[
|
"endpoints":[
|
||||||
{
|
{
|
||||||
"id":1,
|
"id":1,
|
||||||
"href":"https://auth.keystone.com/v2.0/baseURLs/1"
|
"href":"https://auth.keystone.com/v2.0/endpoints/1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":2,
|
"id":2,
|
||||||
"href":"https://auth.keystone.com/v2.0/baseURLs/2"
|
"href":"https://auth.keystone.com/v2.0/endpoints/2"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":3,
|
"id":3,
|
||||||
"href":"https://auth.keystone.com/v2.0/baseURLs/3"
|
"href":"https://auth.keystone.com/v2.0/endpoints/3"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":4,
|
"id":4,
|
||||||
"href":"https://auth.keystone.com/v2.0/baseURLs/4"
|
"href":"https://auth.keystone.com/v2.0/endpoints/4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id":5,
|
"id":5,
|
||||||
"href":"https://auth.keystone.com/v2.0/baseURLs/5"
|
"href":"https://auth.keystone.com/v2.0/endpoints/5"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -3,18 +3,18 @@
|
|||||||
<endpoints
|
<endpoints
|
||||||
xmlns="http://docs.openstack.org/identity/api/v2.0">
|
xmlns="http://docs.openstack.org/identity/api/v2.0">
|
||||||
<endpoint
|
<endpoint
|
||||||
href="https://auth.keystone.com/v2.0/baseURLs/1"
|
href="https://auth.keystone.com/v2.0/endpoints/1"
|
||||||
id="1" />
|
id="1" />
|
||||||
<endpoint
|
<endpoint
|
||||||
href="https://auth.keystone.com/v2.0/baseURLs/2"
|
href="https://auth.keystone.com/v2.0/endpoints/2"
|
||||||
id="2" />
|
id="2" />
|
||||||
<endpoint
|
<endpoint
|
||||||
href="https://auth.keystone.com/v2.0/baseURLs/3"
|
href="https://auth.keystone.com/v2.0/endpoints/3"
|
||||||
id="3" />
|
id="3" />
|
||||||
<endpoint
|
<endpoint
|
||||||
href="https://auth.keystone.com/v2.0/baseURLs/4"
|
href="https://auth.keystone.com/v2.0/endpoints/4"
|
||||||
id="4" />
|
id="4" />
|
||||||
<endpoint
|
<endpoint
|
||||||
href="https://auth.keystone.com/v2.0/baseURLs/5"
|
href="https://auth.keystone.com/v2.0/endpoints/5"
|
||||||
id="5" />
|
id="5" />
|
||||||
</endpoints>
|
</endpoints>
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
<application xmlns="http://wadl.dev.java.net/2009/02"
|
<application xmlns="http://wadl.dev.java.net/2009/02"
|
||||||
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
|
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
|
||||||
|
xmlns:RAX-KEY="http://docs.rackspace.com/identity/api/ext/RAX-KEY/v1.0"
|
||||||
xmlns:capi="http://docs.openstack.org/common/api/v2.0"
|
xmlns:capi="http://docs.openstack.org/common/api/v2.0"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
@ -24,7 +25,7 @@
|
|||||||
<grammars>
|
<grammars>
|
||||||
<include href="xsd/api.xsd"/>
|
<include href="xsd/api.xsd"/>
|
||||||
<include href="xsd/api-common.xsd"/>
|
<include href="xsd/api-common.xsd"/>
|
||||||
<include href="xsd/RS-KEY-credentials.xsd"/>
|
<include href="xsd/RAX-KEY-credentials.xsd"/>
|
||||||
</grammars>
|
</grammars>
|
||||||
|
|
||||||
|
|
||||||
@ -38,6 +39,11 @@
|
|||||||
<resource id="tokens" path="tokens">
|
<resource id="tokens" path="tokens">
|
||||||
<method href="#authenticate"/>
|
<method href="#authenticate"/>
|
||||||
</resource>
|
</resource>
|
||||||
|
<resource id="extensions" type="#ExtensionList" path="extensions">
|
||||||
|
<resource id="extension" path="RAX-KEY">
|
||||||
|
<method href="#getExtension"/>
|
||||||
|
</resource>
|
||||||
|
</resource>
|
||||||
</resource>
|
</resource>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
||||||
@ -49,7 +55,7 @@
|
|||||||
<!-- Token Operations -->
|
<!-- Token Operations -->
|
||||||
<method name="POST" id="authenticate">
|
<method name="POST" id="authenticate">
|
||||||
<request>
|
<request>
|
||||||
<representation mediaType="application/xml" element="identity:RS-KEY-apikeyCredentials"/>
|
<representation mediaType="application/xml" element="RAX-KEY:apikeyCredentials"/>
|
||||||
<representation mediaType="application/json"/>
|
<representation mediaType="application/json"/>
|
||||||
</request>
|
</request>
|
||||||
<response status="200 203">
|
<response status="200 203">
|
||||||
@ -63,5 +69,18 @@
|
|||||||
&commonFaults;
|
&commonFaults;
|
||||||
&getFaults;
|
&getFaults;
|
||||||
</method>
|
</method>
|
||||||
|
|
||||||
|
<method name="GET" id="getExtension">
|
||||||
|
<doc xml:lang="EN" title="Get Extension Details">
|
||||||
|
<p xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
Get details about the RAX-KEY extension.
|
||||||
|
</p>
|
||||||
|
</doc>
|
||||||
|
<response status="200 203">
|
||||||
|
<representation mediaType="application/xml" element="capi:extension"/>
|
||||||
|
<representation mediaType="application/json"/>
|
||||||
|
</response>
|
||||||
|
&commonFaults;
|
||||||
|
&getFaults;
|
||||||
|
</method>
|
||||||
</application>
|
</application>
|
@ -12,14 +12,15 @@
|
|||||||
]>
|
]>
|
||||||
|
|
||||||
<application xmlns="http://wadl.dev.java.net/2009/02"
|
<application xmlns="http://wadl.dev.java.net/2009/02"
|
||||||
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
|
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
|
||||||
xmlns:capi="http://docs.openstack.org/common/api/v2.0"
|
xmlns:capi="http://docs.openstack.org/common/api/v2.0"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 xsd/api.xsd
|
xmlns:html="http://www.w3.org/1999/xhtml"
|
||||||
http://docs.openstack.org/common/api/v1.0 xsd/api-common.xsd
|
xsi:schemaLocation="http://docs.openstack.org/identity/api/v2.0 xsd/api.xsd
|
||||||
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
|
http://docs.openstack.org/common/api/v1.0 xsd/api-common.xsd
|
||||||
">
|
http://wadl.dev.java.net/2009/02 http://www.w3.org/Submission/wadl/wadl.xsd
|
||||||
|
">
|
||||||
|
|
||||||
<grammars>
|
<grammars>
|
||||||
<include href="xsd/api.xsd"/>
|
<include href="xsd/api.xsd"/>
|
||||||
@ -121,6 +122,25 @@
|
|||||||
<!-- Token Operations -->
|
<!-- Token Operations -->
|
||||||
|
|
||||||
<method name="POST" id="authenticate">
|
<method name="POST" id="authenticate">
|
||||||
|
<doc>
|
||||||
|
Client authentication is provided via a ReST interface using the POST method,
|
||||||
|
with v2.0/tokens supplied as the path.
|
||||||
|
|
||||||
|
Additionally, a payload of credentials must be included in the body.
|
||||||
|
See <html:a href="xsd/credentials.xsd">supported credentials</html:a>
|
||||||
|
|
||||||
|
Each ReST request against the Keystone system requires the inclusion of a
|
||||||
|
specific authorization token HTTP x-header, defined as X-Auth-Token. Clients obtain
|
||||||
|
this token, along with the URL to other service APIs, by first authenticating against the
|
||||||
|
Keystone Service and supplying valid credentials.
|
||||||
|
|
||||||
|
The Keystone Service is a ReSTful web service. It is the entry point to all service APIs.
|
||||||
|
|
||||||
|
To access the Keystone Service, you must know URL of the Keystone service.
|
||||||
|
|
||||||
|
TenantID is optional and may be used to specify that a token should be returned that
|
||||||
|
has access to the resources of that particular tenant.
|
||||||
|
</doc>
|
||||||
<request>
|
<request>
|
||||||
<representation mediaType="application/xml" element="identity:passwordCredentials"/>
|
<representation mediaType="application/xml" element="identity:passwordCredentials"/>
|
||||||
<representation mediaType="application/json"/>
|
<representation mediaType="application/json"/>
|
||||||
|
@ -6,21 +6,22 @@
|
|||||||
attributeFormDefault="unqualified"
|
attributeFormDefault="unqualified"
|
||||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||||
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
|
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
|
||||||
|
xmlns:RAX-GRP="http://docs.rackspace.com/identity/api/ext/RAX-GRP/v1.0"
|
||||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
|
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
|
||||||
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
|
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
|
||||||
xmlns:atom="http://www.w3.org/2005/Atom"
|
xmlns:atom="http://www.w3.org/2005/Atom"
|
||||||
targetNamespace="http://docs.openstack.org/identity/api/v2.0"
|
targetNamespace="http://docs.rackspace.com/identity/api/ext/RAX-GRP/v1.0"
|
||||||
>
|
>
|
||||||
<!--Include schema we are extending -->
|
<!--Include schema we are extending -->
|
||||||
<include schemaLocation="user.xsd"/>
|
<import schemaLocation="user.xsd" namespace="http://docs.openstack.org/identity/api/v2.0"/>
|
||||||
<include schemaLocation="roles.xsd"/>
|
<import schemaLocation="roles.xsd" namespace="http://docs.openstack.org/identity/api/v2.0"/>
|
||||||
<include schemaLocation="token.xsd"/>
|
<import schemaLocation="token.xsd" namespace="http://docs.openstack.org/identity/api/v2.0"/>
|
||||||
|
|
||||||
<!-- Elements -->
|
<!-- Elements -->
|
||||||
|
|
||||||
<!-- Complex Types -->
|
<!-- Complex Types -->
|
||||||
<complexType name="RAX-UserForAuthData">
|
<complexType name="UserForAuthData">
|
||||||
<complexContent>
|
<complexContent>
|
||||||
<extension base="identity:UserForAuthenticateResponse">
|
<extension base="identity:UserForAuthenticateResponse">
|
||||||
<sequence>
|
<sequence>
|
||||||
@ -32,7 +33,7 @@
|
|||||||
|
|
||||||
<complexType name="Groups">
|
<complexType name="Groups">
|
||||||
<sequence>
|
<sequence>
|
||||||
<element name="group" type="identity:Group" maxOccurs="100"/>
|
<element name="group" type="RAX-GRP:Group" maxOccurs="100"/>
|
||||||
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
|
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
|
||||||
</sequence>
|
</sequence>
|
||||||
<anyAttribute namespace="##other" processContents="lax"/>
|
<anyAttribute namespace="##other" processContents="lax"/>
|
@ -6,20 +6,22 @@
|
|||||||
attributeFormDefault="unqualified"
|
attributeFormDefault="unqualified"
|
||||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||||
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
|
xmlns:identity="http://docs.openstack.org/identity/api/v2.0"
|
||||||
|
xmlns:RAX-KEY="http://docs.rackspace.com/identity/api/ext/RAX-KEY/v1.0"
|
||||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
|
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
|
||||||
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
|
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
|
||||||
xmlns:atom="http://www.w3.org/2005/Atom"
|
xmlns:atom="http://www.w3.org/2005/Atom"
|
||||||
targetNamespace="http://docs.openstack.org/identity/api/v2.0"
|
targetNamespace="http://docs.rackspace.com/identity/api/ext/RAX-KEY/v1.0"
|
||||||
>
|
>
|
||||||
<!--Include schema we are extending -->
|
<!--Import schema we are extending -->
|
||||||
<include schemaLocation="credentials.xsd"/>
|
<import namespace="http://docs.openstack.org/identity/api/v2.0"
|
||||||
|
schemaLocation="credentials.xsd"/>
|
||||||
|
|
||||||
<!-- Elements -->
|
<!-- Elements -->
|
||||||
<element name="apikeyCredentials" type="identity:RS-KEY-apikeyCredentials"/>
|
<element name="apikeyCredentials" type="RAX-KEY:apikeyCredentials"/>
|
||||||
|
|
||||||
<!-- Complex Types -->
|
<!-- Complex Types -->
|
||||||
<complexType name="RS-KEY-apikeyCredentials">
|
<complexType name="apikeyCredentials">
|
||||||
<complexContent>
|
<complexContent>
|
||||||
<extension base="identity:CredentialType">
|
<extension base="identity:CredentialType">
|
||||||
<attribute name="APIKey" type="xsd:string" use="required" ></attribute>
|
<attribute name="APIKey" type="xsd:string" use="required" ></attribute>
|
@ -20,7 +20,7 @@
|
|||||||
schemaLocation="atom/atom.xsd" />
|
schemaLocation="atom/atom.xsd" />
|
||||||
|
|
||||||
<!-- Elements -->
|
<!-- Elements -->
|
||||||
<element name="passwordCredentials" type="identity:PasswordCredentials"/>
|
<element name="passwordCredentials" type="identity:PasswordCredentialsBase"/>
|
||||||
|
|
||||||
<element name="credentials" type="identity:CredentialList" >
|
<element name="credentials" type="identity:CredentialList" >
|
||||||
<annotation>
|
<annotation>
|
||||||
@ -43,20 +43,34 @@
|
|||||||
<anyAttribute namespace="##other" processContents="lax"/>
|
<anyAttribute namespace="##other" processContents="lax"/>
|
||||||
</complexType>
|
</complexType>
|
||||||
|
|
||||||
<complexType name="PasswordCredentials">
|
<complexType name="PasswordCredentialsBase">
|
||||||
<complexContent>
|
<complexContent>
|
||||||
<extension base="identity:CredentialType">
|
<extension base="identity:CredentialType">
|
||||||
<sequence>
|
|
||||||
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
|
|
||||||
</sequence>
|
|
||||||
<attribute name="password" type="xsd:string" use="required" />
|
|
||||||
<attribute name="username" type="xsd:string" use="optional" />
|
<attribute name="username" type="xsd:string" use="optional" />
|
||||||
|
<attribute name="password" type="xsd:string" use="required" />
|
||||||
<attribute name="tenantId" type="xsd:string" use="optional" />
|
<attribute name="tenantId" type="xsd:string" use="optional" />
|
||||||
<anyAttribute namespace="##other" processContents="lax"/>
|
|
||||||
</extension>
|
</extension>
|
||||||
</complexContent>
|
</complexContent>
|
||||||
</complexType>
|
</complexType>
|
||||||
|
|
||||||
|
<complexType name="PasswordCredentialsWithoutUsernameAndTenant">
|
||||||
|
<complexContent>
|
||||||
|
<restriction base="identity:PasswordCredentialsBase">
|
||||||
|
<attribute name="username" type="xsd:string" use="prohibited" />
|
||||||
|
<attribute name="password" type="xsd:string" use="required" />
|
||||||
|
<attribute name="tenantId" type="xsd:string" use="prohibited" />
|
||||||
|
</restriction>
|
||||||
|
</complexContent>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<complexType name="PasswordCredentialsRequiredUsername">
|
||||||
|
<complexContent>
|
||||||
|
<restriction base="identity:PasswordCredentialsBase">
|
||||||
|
<attribute name="username" type="xsd:string" use="required" />
|
||||||
|
</restriction>
|
||||||
|
</complexContent>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
<complexType name="CredentialList">
|
<complexType name="CredentialList">
|
||||||
<sequence>
|
<sequence>
|
||||||
<element name="credential" type="identity:Credential" minOccurs="0" maxOccurs="unbounded"/>
|
<element name="credential" type="identity:Credential" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
<!-- Complex Types -->
|
<!-- Complex Types -->
|
||||||
<complexType name="Service">
|
<complexType name="Service">
|
||||||
<attribute name="id" type="xsd:string" use="required"/>
|
<attribute name="id" type="xsd:string" use="required"/>
|
||||||
|
<attribute name="type" type="identity:ExtensibleServiceType" use="required"/>
|
||||||
<attribute name="description" type="xsd:string" use="optional"/>
|
<attribute name="description" type="xsd:string" use="optional"/>
|
||||||
<anyAttribute namespace="##other" processContents="lax"/>
|
<anyAttribute namespace="##other" processContents="lax"/>
|
||||||
</complexType>
|
</complexType>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "Rackspace API Key Authentication",
|
"name": "Rackspace API Key Authentication",
|
||||||
"namespace": "http://docs.rackspacecloud.com/identity/api/ext/key/v1.0",
|
"namespace": "http://docs.rackspacecloud.com/identity/api/ext/key/v1.0",
|
||||||
"alias": "RS-KEY",
|
"alias": "RAX-KEY",
|
||||||
"updated": "2011-08-14T13:25:27-06:00",
|
"updated": "2011-08-14T13:25:27-06:00",
|
||||||
"description": "Rackspace extensions to Keystone v2.0 API enabling API Key authentication.",
|
"description": "Rackspace extensions to Keystone v2.0 API enabling API Key authentication.",
|
||||||
"links": [{
|
"links": [{
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<extension xmlns="http://docs.openstack.org/common/api/v2.0"
|
<extension xmlns="http://docs.openstack.org/common/api/v2.0"
|
||||||
xmlns:atom="http://www.w3.org/2005/Atom"
|
xmlns:atom="http://www.w3.org/2005/Atom"
|
||||||
name="Rackspace" namespace="http://docs.rackspace.com/identity/api/ext/rpe/v1.0" alias="RS-KEY"
|
name="Rackspace" namespace="http://docs.rackspace.com/identity/api/ext/RAX-KEY/v1.0" alias="RAX-KEY"
|
||||||
updated="2011-08-14T13:25:27-06:00">
|
updated="2011-08-14T13:25:27-06:00">
|
||||||
<description>
|
<description>
|
||||||
Rackspace extensions to Keystone v2.0 API
|
Rackspace extensions to Keystone v2.0 API
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from webob import Response
|
from webob import Response
|
||||||
|
import os
|
||||||
|
|
||||||
from keystone import utils
|
from keystone import utils
|
||||||
from keystone.common import template, wsgi
|
from keystone.common import template, wsgi
|
||||||
@ -62,10 +63,14 @@ class StaticFilesController(wsgi.Controller):
|
|||||||
elif utils.is_json_response(req):
|
elif utils.is_json_response(req):
|
||||||
mimetype = "application/json"
|
mimetype = "application/json"
|
||||||
|
|
||||||
if mimetype == "application/xml":
|
basename, extension = os.path.splitext(file)
|
||||||
resp_file = "%s%s%s.xml" % (root, path, file)
|
if extension == None or extension == '':
|
||||||
elif mimetype == "application/json":
|
if mimetype == "application/xml":
|
||||||
resp_file = "%s%s%s.json" % (root, path, file)
|
resp_file = "%s%s%s.xml" % (root, path, file)
|
||||||
|
elif mimetype == "application/json":
|
||||||
|
resp_file = "%s%s%s.json" % (root, path, file)
|
||||||
|
else:
|
||||||
|
resp_file = root + path + file
|
||||||
else:
|
else:
|
||||||
resp_file = root + path + file
|
resp_file = root + path + file
|
||||||
|
|
||||||
|
@ -201,7 +201,7 @@ class AdminApi(wsgi.Router):
|
|||||||
controller=static_files_controller,
|
controller=static_files_controller,
|
||||||
action="get_static_file",
|
action="get_static_file",
|
||||||
root="content/common/", path="xslt/",
|
root="content/common/", path="xslt/",
|
||||||
mimetype="application/xslt",
|
mimetype="application/xml",
|
||||||
conditions=dict(method=["GET"]))
|
conditions=dict(method=["GET"]))
|
||||||
mapper.connect("/js/{file:.*}",
|
mapper.connect("/js/{file:.*}",
|
||||||
controller=static_files_controller,
|
controller=static_files_controller,
|
||||||
|
@ -83,7 +83,7 @@ class ServiceApi(wsgi.Router):
|
|||||||
mapper.connect("/xslt/{file:.*}",
|
mapper.connect("/xslt/{file:.*}",
|
||||||
controller=static_files_controller,
|
controller=static_files_controller,
|
||||||
action="get_static_file", path="common/xslt/",
|
action="get_static_file", path="common/xslt/",
|
||||||
mimetype="application/xslt",
|
mimetype="application/xml",
|
||||||
conditions=dict(method=["GET"]))
|
conditions=dict(method=["GET"]))
|
||||||
mapper.connect("/style/{file:.*}",
|
mapper.connect("/style/{file:.*}",
|
||||||
controller=static_files_controller,
|
controller=static_files_controller,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import unittest
|
import unittest2 as unittest
|
||||||
from common import KeystoneTestCase
|
from common import KeystoneTestCase
|
||||||
|
|
||||||
|
|
||||||
@ -12,7 +12,7 @@ class TestExtensions(KeystoneTestCase):
|
|||||||
self.assertIsNotNone(content['extensions']['values'])
|
self.assertIsNotNone(content['extensions']['values'])
|
||||||
found = False
|
found = False
|
||||||
for value in content['extensions']['values']:
|
for value in content['extensions']['values']:
|
||||||
if value['alias'] == 'RS-KEY':
|
if value['alias'] == 'RAX-KEY':
|
||||||
found = True
|
found = True
|
||||||
break
|
break
|
||||||
self.assertTrue(found)
|
self.assertTrue(found)
|
||||||
@ -21,7 +21,7 @@ class TestExtensions(KeystoneTestCase):
|
|||||||
r = self.service_request(path='/extensions.xml')
|
r = self.service_request(path='/extensions.xml')
|
||||||
self.assertTrue('xml' in r.getheader('Content-Type'))
|
self.assertTrue('xml' in r.getheader('Content-Type'))
|
||||||
content = r.xml
|
content = r.xml
|
||||||
extension = content.find("*[@alias='RS-KEY']")
|
extension = content.find("*[@alias='RAX-KEY']")
|
||||||
self.assertIsNotNone(extension)
|
self.assertIsNotNone(extension)
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ class TestStaticFiles(KeystoneTestCase):
|
|||||||
|
|
||||||
def test_xslt(self):
|
def test_xslt(self):
|
||||||
r = self.service_request(path='/xslt/schema.xslt')
|
r = self.service_request(path='/xslt/schema.xslt')
|
||||||
self.assertTrue('xslt' in r.getheader('Content-Type'))
|
self.assertTrue('xml' in r.getheader('Content-Type'))
|
||||||
|
|
||||||
def test_js(self):
|
def test_js(self):
|
||||||
r = self.service_request(path='/js/shjs/sh_java.js')
|
r = self.service_request(path='/js/shjs/sh_java.js')
|
||||||
@ -63,7 +63,7 @@ class TestAdminStaticFiles(KeystoneTestCase):
|
|||||||
|
|
||||||
def test_xslt(self):
|
def test_xslt(self):
|
||||||
r = self.admin_request(path='/xslt/schema.xslt')
|
r = self.admin_request(path='/xslt/schema.xslt')
|
||||||
self.assertTrue('xslt' in r.getheader('Content-Type'))
|
self.assertTrue('xml' in r.getheader('Content-Type'))
|
||||||
|
|
||||||
def test_js(self):
|
def test_js(self):
|
||||||
r = self.admin_request(path='/js/shjs/sh_java.js')
|
r = self.admin_request(path='/js/shjs/sh_java.js')
|
||||||
|
Loading…
Reference in New Issue
Block a user