summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/api/openstack/__init__.py3
-rw-r--r--nova/api/openstack/zones.py1
-rw-r--r--nova/tests/api/openstack/test_zones.py81
3 files changed, 78 insertions, 7 deletions
diff --git a/nova/api/openstack/__init__.py b/nova/api/openstack/__init__.py
index 8aeb69693..33d040ab3 100644
--- a/nova/api/openstack/__init__.py
+++ b/nova/api/openstack/__init__.py
@@ -82,8 +82,7 @@ class APIRouter(wsgi.Router):
server_members['resume'] = 'POST'
mapper.resource("zone", "zones", controller=zones.Controller(),
- collection={'detail': 'GET'},
- collection_name='zones')
+ collection={'detail': 'GET'})
mapper.resource("server", "servers", controller=servers.Controller(),
collection={'detail': 'GET'},
diff --git a/nova/api/openstack/zones.py b/nova/api/openstack/zones.py
index a12d1cc0c..e84b38fa9 100644
--- a/nova/api/openstack/zones.py
+++ b/nova/api/openstack/zones.py
@@ -13,6 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
+import common
import logging
from nova import flags
diff --git a/nova/tests/api/openstack/test_zones.py b/nova/tests/api/openstack/test_zones.py
index 8a817bebe..8dbdffa41 100644
--- a/nova/tests/api/openstack/test_zones.py
+++ b/nova/tests/api/openstack/test_zones.py
@@ -17,12 +17,50 @@ import unittest
import stubout
import webob
+import json
-import nova.api
+import nova.db
+from nova import context
+from nova import flags
from nova.api.openstack import zones
from nova.tests.api.openstack import fakes
+FLAGS = flags.FLAGS
+FLAGS.verbose = True
+
+
+def zone_get(context, zone_id):
+ return dict(id=1, api_url='http://foo.com', username='bob',
+ password='xxx')
+
+
+def zone_create(context, values):
+ zone = dict(id=1)
+ zone.update(values)
+ return zone
+
+
+def zone_update(context, zone_id, values):
+ zone = dict(id=zone_id, api_url='http://foo.com', username='bob',
+ password='xxx')
+ zone.update(values)
+ return zone
+
+
+def zone_delete(context, zone_id):
+ pass
+
+
+def zone_get_all(context):
+ return [
+ dict(id=1, api_url='http://foo.com', username='bob',
+ password='xxx'),
+ dict(id=2, api_url='http://blah.com', username='alice',
+ password='qwerty')
+ ]
+
+
class ZonesTest(unittest.TestCase):
def setUp(self):
self.stubs = stubout.StubOutForTesting()
@@ -32,42 +70,75 @@ class ZonesTest(unittest.TestCase):
fakes.stub_out_rate_limiting(self.stubs)
fakes.stub_out_auth(self.stubs)
+ self.allow_admin = FLAGS.allow_admin_api
+ FLAGS.allow_admin_api = True
+
+ self.stubs.Set(nova.db, 'zone_get', zone_get)
+ self.stubs.Set(nova.db, 'zone_get_all', zone_get_all)
+ self.stubs.Set(nova.db, 'zone_update', zone_update)
+ self.stubs.Set(nova.db, 'zone_create', zone_create)
+ self.stubs.Set(nova.db, 'zone_delete', zone_delete)
+
def tearDown(self):
self.stubs.UnsetAll()
+ FLAGS.allow_admin_api = self.allow_admin
def test_get_zone_list(self):
req = webob.Request.blank('/v1.0/zones')
res = req.get_response(fakes.wsgi_app())
+ res_dict = json.loads(res.body)
+
+ self.assertEqual(res.status_int, 200)
+ self.assertEqual(len(res_dict['zones']), 2)
def test_get_zone_by_id(self):
req = webob.Request.blank('/v1.0/zones/1')
res = req.get_response(fakes.wsgi_app())
+ res_dict = json.loads(res.body)
+
+ self.assertEqual(res_dict['zone']['id'], 1)
+ self.assertEqual(res_dict['zone']['api_url'], 'http://foo.com')
+ self.assertEqual(res_dict['zone']['username'], 'bob')
+ self.assertEqual(res_dict['zone']['password'], 'xxx')
+
+ self.assertEqual(res.status_int, 200)
def test_zone_delete(self):
req = webob.Request.blank('/v1.0/zones/1')
res = req.get_response(fakes.wsgi_app())
+ self.assertEqual(res.status_int, 200)
+
def test_zone_create(self):
- body = dict(server=dict(api_url='http://blah.zoo', username='bob',
- password='qwerty'))
+ body = dict(zone=dict(api_url='http://blah.zoo', username='fred',
+ password='fubar'))
req = webob.Request.blank('/v1.0/zones')
req.method = 'POST'
req.body = json.dumps(body)
res = req.get_response(fakes.wsgi_app())
+ res_dict = json.loads(res.body)
self.assertEqual(res.status_int, 200)
+ self.assertEqual(res_dict['zone']['id'], 1)
+ self.assertEqual(res_dict['zone']['api_url'], 'http://blah.zoo')
+ self.assertEqual(res_dict['zone']['username'], 'fred')
+ self.assertEqual(res_dict['zone']['password'], 'fubar')
def test_zone_update(self):
- body = dict(server=dict(api_url='http://blah.zoo', username='zeb',
- password='sneaky'))
+ body = dict(zone=dict(username='zeb', password='sneaky'))
req = webob.Request.blank('/v1.0/zones/1')
req.method = 'PUT'
req.body = json.dumps(body)
res = req.get_response(fakes.wsgi_app())
+ res_dict = json.loads(res.body)
self.assertEqual(res.status_int, 200)
+ self.assertEqual(res_dict['zone']['id'], 1)
+ self.assertEqual(res_dict['zone']['api_url'], 'http://foo.com')
+ self.assertEqual(res_dict['zone']['username'], 'zeb')
+ self.assertEqual(res_dict['zone']['password'], 'sneaky')
if __name__ == '__main__':