Makes v3 API keypairs extension core
Adds os-keypairs to the core list for the V3 API. Rename os-keypairs to keypairs as part of this change. Fixes some incorrect urls in test_keypairs which still included the tenant id Updates api samples for servers since keypairs is now core and forms part of the response by default +DocImpact Partially implements blueprint nova-v3-api Change-Id: I8cdf52be0c8b19f7704848029a78373da8018cab
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"created": "2013-08-27T00:21:41Z",
|
||||
"created": "2013-09-03T04:01:32Z",
|
||||
"flavor": {
|
||||
"id": "1",
|
||||
"links": [
|
||||
@@ -22,8 +22,8 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"host_id": "89429d40116cdb1f85f09de69dbc250f040a62db4a20e08b730b88c5",
|
||||
"id": "5c2f3a9d-1858-454d-b2a2-ac2e93036d16",
|
||||
"host_id": "92154fab69d5883ba2c8622b7e65f745dd33257221c07af363c51b29",
|
||||
"id": "0e44cc9c-e052-415d-afbf-469b0d384170",
|
||||
"image": {
|
||||
"id": "70a599e0-31e7-49b7-b260-868f441e862b",
|
||||
"links": [
|
||||
@@ -33,13 +33,14 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"key_name": null,
|
||||
"links": [
|
||||
{
|
||||
"href": "http://openstack.example.com/v3/servers/5c2f3a9d-1858-454d-b2a2-ac2e93036d16",
|
||||
"href": "http://openstack.example.com/v3/servers/0e44cc9c-e052-415d-afbf-469b0d384170",
|
||||
"rel": "self"
|
||||
},
|
||||
{
|
||||
"href": "http://openstack.example.com/servers/5c2f3a9d-1858-454d-b2a2-ac2e93036d16",
|
||||
"href": "http://openstack.example.com/servers/0e44cc9c-e052-415d-afbf-469b0d384170",
|
||||
"rel": "bookmark"
|
||||
}
|
||||
],
|
||||
@@ -50,7 +51,7 @@
|
||||
"progress": 0,
|
||||
"status": "ACTIVE",
|
||||
"tenant_id": "openstack",
|
||||
"updated": "2013-08-27T00:21:41Z",
|
||||
"updated": "2013-09-03T04:01:33Z",
|
||||
"user_id": "fake"
|
||||
}
|
||||
}
|
@@ -1,5 +1,5 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<server xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1" status="ACTIVE" updated="2013-08-27T00:27:57Z" user_id="fake" name="new-server-test" created="2013-08-27T00:27:57Z" tenant_id="openstack" access_ip_v4="" progress="0" host_id="043dfed1b17e67d9eacf15337bb912cea5d1bda2dc3af0edda9fd1a3" id="3a39932d-11e8-485d-8bb5-5e41b87a4e64" access_ip_v6="">
|
||||
<server xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1" status="ACTIVE" updated="2013-09-03T04:01:33Z" user_id="fake" name="new-server-test" created="2013-09-03T04:01:33Z" tenant_id="openstack" access_ip_v4="" progress="0" host_id="4fc6224a1e5d689f858d087c5ff6d24def5eab35646b53c3454d1234" id="f07e01fa-ed8f-4084-99b6-9311e6956e70" access_ip_v6="" key_name="None">
|
||||
<image id="70a599e0-31e7-49b7-b260-868f441e862b">
|
||||
<atom:link href="http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b" rel="bookmark"/>
|
||||
</image>
|
||||
@@ -14,6 +14,6 @@
|
||||
<ip version="4" type="fixed" addr="192.168.0.3" mac_addr="aa:bb:cc:dd:ee:ff"/>
|
||||
</network>
|
||||
</addresses>
|
||||
<atom:link href="http://openstack.example.com/v3/servers/3a39932d-11e8-485d-8bb5-5e41b87a4e64" rel="self"/>
|
||||
<atom:link href="http://openstack.example.com/servers/3a39932d-11e8-485d-8bb5-5e41b87a4e64" rel="bookmark"/>
|
||||
<atom:link href="http://openstack.example.com/v3/servers/f07e01fa-ed8f-4084-99b6-9311e6956e70" rel="self"/>
|
||||
<atom:link href="http://openstack.example.com/servers/f07e01fa-ed8f-4084-99b6-9311e6956e70" rel="bookmark"/>
|
||||
</server>
|
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"server": {
|
||||
"admin_pass": "2pXrV3mMFkxH",
|
||||
"id": "f85df75c-cf69-4723-b861-deff54b7cf70",
|
||||
"admin_pass": "6NpUwoz2QDRN",
|
||||
"id": "f5dc173b-6804-445a-a6d8-c705dad5b5eb",
|
||||
"links": [
|
||||
{
|
||||
"href": "http://openstack.example.com/v3/servers/f85df75c-cf69-4723-b861-deff54b7cf70",
|
||||
"href": "http://openstack.example.com/v3/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb",
|
||||
"rel": "self"
|
||||
},
|
||||
{
|
||||
"href": "http://openstack.example.com/servers/f85df75c-cf69-4723-b861-deff54b7cf70",
|
||||
"href": "http://openstack.example.com/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb",
|
||||
"rel": "bookmark"
|
||||
}
|
||||
]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<server xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1" id="6d896124-8af0-4f2b-a033-e8ca22f83810" admin_pass="JqCn8mtbDnj3">
|
||||
<server xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1" id="b7244821-09f6-4931-a59f-433bc9a00edc" admin_pass="qvVB4ayUcia8">
|
||||
<metadata/>
|
||||
<atom:link href="http://openstack.example.com/v3/servers/6d896124-8af0-4f2b-a033-e8ca22f83810" rel="self"/>
|
||||
<atom:link href="http://openstack.example.com/servers/6d896124-8af0-4f2b-a033-e8ca22f83810" rel="bookmark"/>
|
||||
<atom:link href="http://openstack.example.com/v3/servers/b7244821-09f6-4931-a59f-433bc9a00edc" rel="self"/>
|
||||
<atom:link href="http://openstack.example.com/servers/b7244821-09f6-4931-a59f-433bc9a00edc" rel="bookmark"/>
|
||||
</server>
|
@@ -13,7 +13,7 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"created": "2013-08-27T00:34:14Z",
|
||||
"created": "2013-09-03T04:01:32Z",
|
||||
"flavor": {
|
||||
"id": "1",
|
||||
"links": [
|
||||
@@ -23,8 +23,8 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"host_id": "3da3b81edf53783e31c0bb9292c85b478943a79528028ed642c46c57",
|
||||
"id": "aa830ba3-7562-44c4-b794-6e1678402854",
|
||||
"host_id": "bcf92836fc9ed4203a75cb0337afc7f917d2be504164b995c2334b25",
|
||||
"id": "f5dc173b-6804-445a-a6d8-c705dad5b5eb",
|
||||
"image": {
|
||||
"id": "70a599e0-31e7-49b7-b260-868f441e862b",
|
||||
"links": [
|
||||
@@ -34,13 +34,14 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"key_name": null,
|
||||
"links": [
|
||||
{
|
||||
"href": "http://openstack.example.com/v3/servers/aa830ba3-7562-44c4-b794-6e1678402854",
|
||||
"href": "http://openstack.example.com/v3/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb",
|
||||
"rel": "self"
|
||||
},
|
||||
{
|
||||
"href": "http://openstack.example.com/servers/aa830ba3-7562-44c4-b794-6e1678402854",
|
||||
"href": "http://openstack.example.com/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb",
|
||||
"rel": "bookmark"
|
||||
}
|
||||
],
|
||||
@@ -51,7 +52,7 @@
|
||||
"progress": 0,
|
||||
"status": "ACTIVE",
|
||||
"tenant_id": "openstack",
|
||||
"updated": "2013-08-27T00:34:14Z",
|
||||
"updated": "2013-09-03T04:01:32Z",
|
||||
"user_id": "fake"
|
||||
}
|
||||
]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<servers xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1">
|
||||
<server status="ACTIVE" updated="2013-08-27T00:34:16Z" user_id="fake" name="new-server-test" created="2013-08-27T00:34:16Z" tenant_id="openstack" access_ip_v4="" progress="0" host_id="cf19fcc5d5d7a9ff7fb80da2db424218bc28b5b360705b97b8afaef3" id="43980ac6-fa88-44fc-b65d-87da4fa6f800" access_ip_v6="">
|
||||
<server status="ACTIVE" updated="2013-09-03T04:01:34Z" user_id="fake" name="new-server-test" created="2013-09-03T04:01:33Z" tenant_id="openstack" access_ip_v4="" progress="0" host_id="9afcaa50605be561503e2d707aed0c219081dc8a87d7f67a965512c8" id="3af51aa7-a2aa-477b-9499-e5528bcf32a5" access_ip_v6="" key_name="None">
|
||||
<image id="70a599e0-31e7-49b7-b260-868f441e862b">
|
||||
<atom:link href="http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b" rel="bookmark"/>
|
||||
</image>
|
||||
@@ -15,7 +15,7 @@
|
||||
<ip version="4" type="fixed" addr="192.168.0.3" mac_addr="aa:bb:cc:dd:ee:ff"/>
|
||||
</network>
|
||||
</addresses>
|
||||
<atom:link href="http://openstack.example.com/v3/servers/43980ac6-fa88-44fc-b65d-87da4fa6f800" rel="self"/>
|
||||
<atom:link href="http://openstack.example.com/servers/43980ac6-fa88-44fc-b65d-87da4fa6f800" rel="bookmark"/>
|
||||
<atom:link href="http://openstack.example.com/v3/servers/3af51aa7-a2aa-477b-9499-e5528bcf32a5" rel="self"/>
|
||||
<atom:link href="http://openstack.example.com/servers/3af51aa7-a2aa-477b-9499-e5528bcf32a5" rel="bookmark"/>
|
||||
</server>
|
||||
</servers>
|
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"servers": [
|
||||
{
|
||||
"id": "204da46b-4fc9-4761-9bab-aa28add417e6",
|
||||
"id": "22c91117-08de-4894-9aa9-6ef382400985",
|
||||
"links": [
|
||||
{
|
||||
"href": "http://openstack.example.com/v3/servers/204da46b-4fc9-4761-9bab-aa28add417e6",
|
||||
"href": "http://openstack.example.com/v3/servers/22c91117-08de-4894-9aa9-6ef382400985",
|
||||
"rel": "self"
|
||||
},
|
||||
{
|
||||
"href": "http://openstack.example.com/servers/204da46b-4fc9-4761-9bab-aa28add417e6",
|
||||
"href": "http://openstack.example.com/servers/22c91117-08de-4894-9aa9-6ef382400985",
|
||||
"rel": "bookmark"
|
||||
}
|
||||
],
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<servers xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1">
|
||||
<server name="new-server-test" id="6d896124-8af0-4f2b-a033-e8ca22f83810">
|
||||
<atom:link href="http://openstack.example.com/v3/servers/6d896124-8af0-4f2b-a033-e8ca22f83810" rel="self"/>
|
||||
<atom:link href="http://openstack.example.com/servers/6d896124-8af0-4f2b-a033-e8ca22f83810" rel="bookmark"/>
|
||||
<server name="new-server-test" id="b7244821-09f6-4931-a59f-433bc9a00edc">
|
||||
<atom:link href="http://openstack.example.com/v3/servers/b7244821-09f6-4931-a59f-433bc9a00edc" rel="self"/>
|
||||
<atom:link href="http://openstack.example.com/servers/b7244821-09f6-4931-a59f-433bc9a00edc" rel="bookmark"/>
|
||||
</server>
|
||||
</servers>
|
@@ -163,13 +163,13 @@
|
||||
"compute_extension:keypairs:show": "",
|
||||
"compute_extension:keypairs:create": "",
|
||||
"compute_extension:keypairs:delete": "",
|
||||
"compute_extension:v3:keypairs:discoverable": "",
|
||||
"compute_extension:v3:keypairs": "",
|
||||
"compute_extension:v3:keypairs:index": "",
|
||||
"compute_extension:v3:keypairs:show": "",
|
||||
"compute_extension:v3:keypairs:create": "",
|
||||
"compute_extension:v3:keypairs:delete": "",
|
||||
"compute_extension:v3:limits:discoverable": "",
|
||||
"compute_extension:v3:os-keypairs:discoverable": "",
|
||||
"compute_extension:v3:os-keypairs": "",
|
||||
"compute_extension:v3:os-keypairs:index": "",
|
||||
"compute_extension:v3:os-keypairs:show": "",
|
||||
"compute_extension:v3:os-keypairs:create": "",
|
||||
"compute_extension:v3:os-keypairs:delete": "",
|
||||
"compute_extension:multinic": "",
|
||||
"compute_extension:v3:os-multinic": "",
|
||||
"compute_extension:v3:os-multinic:discoverable": "",
|
||||
|
@@ -61,7 +61,8 @@ CONF.register_opts(api_opts, api_opts_group)
|
||||
# the core API and so must be present
|
||||
# TODO(cyeoh): Expand this list as the core APIs are ported to V3
|
||||
API_V3_CORE_EXTENSIONS = set(['consoles', 'extensions', 'flavors', 'ips',
|
||||
'limits', 'servers', 'server-metadata'])
|
||||
'limits', 'servers', 'server-metadata',
|
||||
'keypairs'])
|
||||
|
||||
|
||||
class FaultWrapper(base_wsgi.Middleware):
|
||||
|
@@ -28,7 +28,7 @@ from nova import exception
|
||||
from nova.openstack.common.gettextutils import _
|
||||
|
||||
|
||||
ALIAS = 'os-keypairs'
|
||||
ALIAS = 'keypairs'
|
||||
authorize = extensions.extension_authorizer('compute', 'v3:' + ALIAS)
|
||||
soft_authorize = extensions.soft_extension_authorizer('compute', 'v3:' + ALIAS)
|
||||
|
||||
@@ -207,12 +207,12 @@ class Keypairs(extensions.V3APIExtensionBase):
|
||||
|
||||
name = "Keypairs"
|
||||
alias = ALIAS
|
||||
namespace = "http://docs.openstack.org/compute/ext/keypairs/api/v3"
|
||||
namespace = "http://docs.openstack.org/compute/core/keypairs/api/v3"
|
||||
version = 1
|
||||
|
||||
def get_resources(self):
|
||||
resources = [
|
||||
extensions.ResourceExtension('os-keypairs',
|
||||
extensions.ResourceExtension('keypairs',
|
||||
KeypairController())]
|
||||
return resources
|
||||
|
||||
|
@@ -79,10 +79,10 @@ class KeypairsTest(test.TestCase):
|
||||
osapi_compute_extension=[
|
||||
'nova.api.openstack.compute.contrib.select_extensions'],
|
||||
osapi_compute_ext_list=['Keypairs'])
|
||||
self.app = fakes.wsgi_app_v3(init_only=('os-keypairs', 'servers'))
|
||||
self.app = fakes.wsgi_app_v3(init_only=('keypairs', 'servers'))
|
||||
|
||||
def test_keypair_list(self):
|
||||
req = webob.Request.blank('/v3/os-keypairs')
|
||||
req = webob.Request.blank('/v3/keypairs')
|
||||
res = req.get_response(self.app)
|
||||
self.assertEqual(res.status_int, 200)
|
||||
res_dict = jsonutils.loads(res.body)
|
||||
@@ -91,7 +91,7 @@ class KeypairsTest(test.TestCase):
|
||||
|
||||
def test_keypair_create(self):
|
||||
body = {'keypair': {'name': 'create_test'}}
|
||||
req = webob.Request.blank('/v3/os-keypairs')
|
||||
req = webob.Request.blank('/v3/keypairs')
|
||||
req.method = 'POST'
|
||||
req.body = jsonutils.dumps(body)
|
||||
req.headers['Content-Type'] = 'application/json'
|
||||
@@ -103,7 +103,7 @@ class KeypairsTest(test.TestCase):
|
||||
|
||||
def test_keypair_create_with_empty_name(self):
|
||||
body = {'keypair': {'name': ''}}
|
||||
req = webob.Request.blank('/v3/os-keypairs')
|
||||
req = webob.Request.blank('/v3/keypairs')
|
||||
req.method = 'POST'
|
||||
req.body = jsonutils.dumps(body)
|
||||
req.headers['Content-Type'] = 'application/json'
|
||||
@@ -120,7 +120,7 @@ class KeypairsTest(test.TestCase):
|
||||
'name': 'a' * 256
|
||||
}
|
||||
}
|
||||
req = webob.Request.blank('/v3/os-keypairs')
|
||||
req = webob.Request.blank('/v3/keypairs')
|
||||
req.method = 'POST'
|
||||
req.body = jsonutils.dumps(body)
|
||||
req.headers['Content-Type'] = 'application/json'
|
||||
@@ -137,7 +137,7 @@ class KeypairsTest(test.TestCase):
|
||||
'name': 'test/keypair'
|
||||
}
|
||||
}
|
||||
req = webob.Request.blank('/v3/os-keypairs')
|
||||
req = webob.Request.blank('/v3/keypairs')
|
||||
req.method = 'POST'
|
||||
req.body = jsonutils.dumps(body)
|
||||
req.headers['Content-Type'] = 'application/json'
|
||||
@@ -165,7 +165,7 @@ class KeypairsTest(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
req = webob.Request.blank('/v3/os-keypairs')
|
||||
req = webob.Request.blank('/v3/keypairs')
|
||||
req.method = 'POST'
|
||||
req.body = jsonutils.dumps(body)
|
||||
req.headers['Content-Type'] = 'application/json'
|
||||
@@ -198,7 +198,7 @@ class KeypairsTest(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
req = webob.Request.blank('/v3/os-keypairs')
|
||||
req = webob.Request.blank('/v3/keypairs')
|
||||
req.method = 'POST'
|
||||
req.body = jsonutils.dumps(body)
|
||||
req.headers['Content-Type'] = 'application/json'
|
||||
@@ -222,7 +222,7 @@ class KeypairsTest(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
req = webob.Request.blank('/v3/os-keypairs')
|
||||
req = webob.Request.blank('/v3/keypairs')
|
||||
req.method = 'POST'
|
||||
req.body = jsonutils.dumps(body)
|
||||
req.headers['Content-Type'] = 'application/json'
|
||||
@@ -236,7 +236,7 @@ class KeypairsTest(test.TestCase):
|
||||
def test_keypair_create_duplicate(self):
|
||||
self.stubs.Set(db, "key_pair_create", db_key_pair_create_duplicate)
|
||||
body = {'keypair': {'name': 'create_duplicate'}}
|
||||
req = webob.Request.blank('/v3/os-keypairs')
|
||||
req = webob.Request.blank('/v3/keypairs')
|
||||
req.method = 'POST'
|
||||
req.body = jsonutils.dumps(body)
|
||||
req.headers['Content-Type'] = 'application/json'
|
||||
@@ -255,7 +255,7 @@ class KeypairsTest(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
req = webob.Request.blank('/v3/os-keypairs')
|
||||
req = webob.Request.blank('/v3/keypairs')
|
||||
req.method = 'POST'
|
||||
req.body = jsonutils.dumps(body)
|
||||
req.headers['Content-Type'] = 'application/json'
|
||||
@@ -266,14 +266,14 @@ class KeypairsTest(test.TestCase):
|
||||
res_dict['badRequest']['message'])
|
||||
|
||||
def test_keypair_delete(self):
|
||||
req = webob.Request.blank('/v3/os-keypairs/FAKE')
|
||||
req = webob.Request.blank('/v3/keypairs/FAKE')
|
||||
req.method = 'DELETE'
|
||||
req.headers['Content-Type'] = 'application/json'
|
||||
res = req.get_response(self.app)
|
||||
self.assertEqual(res.status_int, 202)
|
||||
|
||||
def test_keypair_get_keypair_not_found(self):
|
||||
req = webob.Request.blank('/v3/os-keypairs/DOESNOTEXIST')
|
||||
req = webob.Request.blank('/v3/keypairs/DOESNOTEXIST')
|
||||
res = req.get_response(self.app)
|
||||
self.assertEqual(res.status_int, 404)
|
||||
|
||||
@@ -284,7 +284,7 @@ class KeypairsTest(test.TestCase):
|
||||
|
||||
self.stubs.Set(db, "key_pair_get",
|
||||
db_key_pair_get_not_found)
|
||||
req = webob.Request.blank('/v3/os-keypairs/WHAT')
|
||||
req = webob.Request.blank('/v3/keypairs/WHAT')
|
||||
res = req.get_response(self.app)
|
||||
self.assertEqual(res.status_int, 404)
|
||||
|
||||
@@ -296,7 +296,7 @@ class KeypairsTest(test.TestCase):
|
||||
|
||||
self.stubs.Set(db, "key_pair_get", _db_key_pair_get)
|
||||
|
||||
req = webob.Request.blank('/v3/os-keypairs/FAKE')
|
||||
req = webob.Request.blank('/v3/keypairs/FAKE')
|
||||
req.method = 'GET'
|
||||
req.headers['Content-Type'] = 'application/json'
|
||||
res = req.get_response(self.app)
|
||||
@@ -313,7 +313,7 @@ class KeypairsTest(test.TestCase):
|
||||
|
||||
self.stubs.Set(db, "key_pair_get", _db_key_pair_get)
|
||||
|
||||
req = webob.Request.blank('/v3/os-keypairs/FAKE')
|
||||
req = webob.Request.blank('/v3/keypairs/FAKE')
|
||||
req.method = 'GET'
|
||||
req.headers['Content-Type'] = 'application/json'
|
||||
res = req.get_response(self.app)
|
||||
@@ -347,7 +347,7 @@ class KeypairsTest(test.TestCase):
|
||||
|
||||
def test_keypair_create_with_invalid_keypair_body(self):
|
||||
body = {'alpha': {'name': 'create_test'}}
|
||||
req = webob.Request.blank('/v3/os-keypairs')
|
||||
req = webob.Request.blank('/v3/keypairs')
|
||||
req.method = 'POST'
|
||||
req.body = jsonutils.dumps(body)
|
||||
req.headers['Content-Type'] = 'application/json'
|
||||
@@ -378,44 +378,44 @@ class KeypairPolicyTest(test.TestCase):
|
||||
db_key_pair_destroy)
|
||||
|
||||
def test_keypair_list_fail_policy(self):
|
||||
rules = policy.Rules({'compute_extension:v3:os-keypairs:index':
|
||||
rules = policy.Rules({'compute_extension:v3:keypairs:index':
|
||||
policy.parse_rule('role:admin')})
|
||||
policy.set_rules(rules)
|
||||
req = fakes.HTTPRequest.blank('/v3/fake/os-keypairs')
|
||||
req = fakes.HTTPRequest.blank('/v3/keypairs')
|
||||
self.assertRaises(exception.NotAuthorized,
|
||||
self.KeyPairController.index,
|
||||
req)
|
||||
|
||||
def test_keypair_list_pass_policy(self):
|
||||
rules = policy.Rules({'compute_extension:v3:os-keypairs:index':
|
||||
rules = policy.Rules({'compute_extension:v3:keypairs:index':
|
||||
policy.parse_rule('')})
|
||||
policy.set_rules(rules)
|
||||
req = fakes.HTTPRequest.blank('/v3/fake/os-keypairs')
|
||||
req = fakes.HTTPRequest.blank('/v3/keypairs')
|
||||
res = self.KeyPairController.index(req)
|
||||
self.assertTrue('keypairs' in res)
|
||||
|
||||
def test_keypair_show_fail_policy(self):
|
||||
rules = policy.Rules({'compute_extension:v3:os-keypairs:show':
|
||||
rules = policy.Rules({'compute_extension:v3:keypairs:show':
|
||||
policy.parse_rule('role:admin')})
|
||||
policy.set_rules(rules)
|
||||
req = fakes.HTTPRequest.blank('/v3/fake/os-keypairs/FAKE')
|
||||
req = fakes.HTTPRequest.blank('/v3/keypairs/FAKE')
|
||||
self.assertRaises(exception.NotAuthorized,
|
||||
self.KeyPairController.show,
|
||||
req, 'FAKE')
|
||||
|
||||
def test_keypair_show_pass_policy(self):
|
||||
rules = policy.Rules({'compute_extension:v3:os-keypairs:show':
|
||||
rules = policy.Rules({'compute_extension:v3:keypairs:show':
|
||||
policy.parse_rule('')})
|
||||
policy.set_rules(rules)
|
||||
req = fakes.HTTPRequest.blank('/v3/fake/os-keypairs/FAKE')
|
||||
req = fakes.HTTPRequest.blank('/v3/keypairs/FAKE')
|
||||
res = self.KeyPairController.show(req, 'FAKE')
|
||||
self.assertTrue('keypair' in res)
|
||||
|
||||
def test_keypair_create_fail_policy(self):
|
||||
rules = policy.Rules({'compute_extension:v3:os-keypairs:create':
|
||||
rules = policy.Rules({'compute_extension:v3:keypairs:create':
|
||||
policy.parse_rule('role:admin')})
|
||||
policy.set_rules(rules)
|
||||
req = fakes.HTTPRequest.blank('/v3/fake/os-keypairs')
|
||||
req = fakes.HTTPRequest.blank('/v3/keypairs')
|
||||
req.method = 'POST'
|
||||
self.assertRaises(exception.NotAuthorized,
|
||||
self.KeyPairController.create,
|
||||
@@ -423,29 +423,29 @@ class KeypairPolicyTest(test.TestCase):
|
||||
|
||||
def test_keypair_create_pass_policy(self):
|
||||
body = {'keypair': {'name': 'create_test'}}
|
||||
rules = policy.Rules({'compute_extension:v3:os-keypairs:create':
|
||||
rules = policy.Rules({'compute_extension:v3:keypairs:create':
|
||||
policy.parse_rule('')})
|
||||
policy.set_rules(rules)
|
||||
req = fakes.HTTPRequest.blank('/v3/fake/os-keypairs')
|
||||
req = fakes.HTTPRequest.blank('/v3/keypairs')
|
||||
req.method = 'POST'
|
||||
res = self.KeyPairController.create(req, body)
|
||||
self.assertTrue('keypair' in res)
|
||||
|
||||
def test_keypair_delete_fail_policy(self):
|
||||
rules = policy.Rules({'compute_extension:v3:os-keypairs:delete':
|
||||
rules = policy.Rules({'compute_extension:v3:keypairs:delete':
|
||||
policy.parse_rule('role:admin')})
|
||||
policy.set_rules(rules)
|
||||
req = fakes.HTTPRequest.blank('/v3/fake/os-keypairs/FAKE')
|
||||
req = fakes.HTTPRequest.blank('/v3/keypairs/FAKE')
|
||||
req.method = 'DELETE'
|
||||
self.assertRaises(exception.NotAuthorized,
|
||||
self.KeyPairController.delete,
|
||||
req, 'FAKE')
|
||||
|
||||
def test_keypair_delete_pass_policy(self):
|
||||
rules = policy.Rules({'compute_extension:v3:os-keypairs:delete':
|
||||
rules = policy.Rules({'compute_extension:v3:keypairs:delete':
|
||||
policy.parse_rule('')})
|
||||
policy.set_rules(rules)
|
||||
req = fakes.HTTPRequest.blank('/v3/fake/os-keypairs/FAKE')
|
||||
req = fakes.HTTPRequest.blank('/v3/keypairs/FAKE')
|
||||
req.method = 'DELETE'
|
||||
res = self.KeyPairController.delete(req, 'FAKE')
|
||||
self.assertEqual(res.status_int, 202)
|
||||
|
@@ -216,11 +216,11 @@ policy_data = """
|
||||
"compute_extension:keypairs:create": "",
|
||||
"compute_extension:keypairs:delete": "",
|
||||
|
||||
"compute_extension:v3:os-keypairs": "",
|
||||
"compute_extension:v3:os-keypairs:index": "",
|
||||
"compute_extension:v3:os-keypairs:show": "",
|
||||
"compute_extension:v3:os-keypairs:create": "",
|
||||
"compute_extension:v3:os-keypairs:delete": "",
|
||||
"compute_extension:v3:keypairs": "",
|
||||
"compute_extension:v3:keypairs:index": "",
|
||||
"compute_extension:v3:keypairs:show": "",
|
||||
"compute_extension:v3:keypairs:create": "",
|
||||
"compute_extension:v3:keypairs:delete": "",
|
||||
"compute_extension:multinic": "",
|
||||
"compute_extension:v3:os-multinic": "",
|
||||
"compute_extension:networks": "",
|
||||
|
@@ -33,6 +33,7 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"key_name": null,
|
||||
"links": [
|
||||
{
|
||||
"href": "%(host)s/v3/servers/%(uuid)s",
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<server xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1" status="ACTIVE" updated="%(timestamp)s" user_id="fake" name="new-server-test" created="%(timestamp)s" tenant_id="openstack" access_ip_v4="" progress="0" host_id="%(hostid)s" id="%(id)s" access_ip_v6="">
|
||||
<server xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1" status="ACTIVE" updated="%(timestamp)s" user_id="fake" name="new-server-test" created="%(timestamp)s" tenant_id="openstack" access_ip_v4="" progress="0" host_id="%(hostid)s" id="%(id)s" access_ip_v6="" key_name="None">
|
||||
<image id="%(uuid)s">
|
||||
<atom:link href="%(glance_host)s/images/%(uuid)s" rel="bookmark"/>
|
||||
</image>
|
||||
|
@@ -34,6 +34,7 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"key_name": null,
|
||||
"links": [
|
||||
{
|
||||
"href": "%(host)s/v3/servers/%(uuid)s",
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<servers xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1">
|
||||
<server status="ACTIVE" updated="%(timestamp)s" host_id="%(hostid)s" name="new-server-test" created="%(timestamp)s" user_id="fake" tenant_id="openstack" access_ip_v4="" access_ip_v6="" progress="0" id="%(id)s">
|
||||
<server status="ACTIVE" updated="%(timestamp)s" host_id="%(hostid)s" name="new-server-test" created="%(timestamp)s" user_id="fake" tenant_id="openstack" access_ip_v4="" access_ip_v6="" key_name="None" progress="0" id="%(id)s">
|
||||
<image id="%(uuid)s">
|
||||
<atom:link href="%(glance_host)s/images/%(uuid)s" rel="bookmark"/>
|
||||
</image>
|
||||
|
Reference in New Issue
Block a user