adding project_id to flavor, server, and image links for /servers requests
This commit is contained in:
@@ -596,14 +596,16 @@ class ControllerV11(Controller):
|
||||
return common.get_id_from_href(flavor_ref)
|
||||
|
||||
def _build_view(self, req, instance, is_detail=False):
|
||||
project_id = req.environ['nova.context'].project_id
|
||||
base_url = req.application_url
|
||||
flavor_builder = nova.api.openstack.views.flavors.ViewBuilderV11(
|
||||
base_url)
|
||||
base_url, project_id)
|
||||
image_builder = nova.api.openstack.views.images.ViewBuilderV11(
|
||||
base_url)
|
||||
base_url, project_id)
|
||||
addresses_builder = nova.api.openstack.views.addresses.ViewBuilderV11()
|
||||
builder = nova.api.openstack.views.servers.ViewBuilderV11(
|
||||
addresses_builder, flavor_builder, image_builder, base_url)
|
||||
addresses_builder, flavor_builder, image_builder,
|
||||
base_url, project_id)
|
||||
|
||||
return builder.build(instance, is_detail=is_detail)
|
||||
|
||||
|
||||
@@ -15,6 +15,9 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import os.path
|
||||
|
||||
|
||||
from nova.api.openstack import common
|
||||
|
||||
|
||||
@@ -59,11 +62,12 @@ class ViewBuilder(object):
|
||||
class ViewBuilderV11(ViewBuilder):
|
||||
"""Openstack API v1.1 flavors view builder."""
|
||||
|
||||
def __init__(self, base_url):
|
||||
def __init__(self, base_url, project_id=""):
|
||||
"""
|
||||
:param base_url: url of the root wsgi application
|
||||
"""
|
||||
self.base_url = base_url
|
||||
self.project_id = project_id
|
||||
|
||||
def _build_extra(self, flavor_obj):
|
||||
flavor_obj["links"] = self._build_links(flavor_obj)
|
||||
@@ -88,11 +92,10 @@ class ViewBuilderV11(ViewBuilder):
|
||||
|
||||
def generate_href(self, flavor_id):
|
||||
"""Create an url that refers to a specific flavor id."""
|
||||
return "%s/flavors/%s" % (self.base_url, flavor_id)
|
||||
return os.path.join(self.base_url, self.project_id,
|
||||
"flavors", str(flavor_id))
|
||||
|
||||
def generate_bookmark(self, flavor_id):
|
||||
"""Create an url that refers to a specific flavor id."""
|
||||
return "%s/flavors/%s" % (
|
||||
common.remove_version_from_href(self.base_url),
|
||||
flavor_id,
|
||||
)
|
||||
return os.path.join(common.remove_version_from_href(self.base_url),
|
||||
self.project_id, "flavors", str(flavor_id))
|
||||
|
||||
@@ -23,9 +23,10 @@ from nova.api.openstack import common
|
||||
class ViewBuilder(object):
|
||||
"""Base class for generating responses to OpenStack API image requests."""
|
||||
|
||||
def __init__(self, base_url):
|
||||
def __init__(self, base_url, project_id=""):
|
||||
"""Initialize new `ViewBuilder`."""
|
||||
self._url = base_url
|
||||
self.base_url = base_url
|
||||
self.project_id = project_id
|
||||
|
||||
def _format_dates(self, image):
|
||||
"""Update all date fields to ensure standardized formatting."""
|
||||
@@ -54,7 +55,7 @@ class ViewBuilder(object):
|
||||
|
||||
def generate_href(self, image_id):
|
||||
"""Return an href string pointing to this object."""
|
||||
return os.path.join(self._url, "images", str(image_id))
|
||||
return os.path.join(self.base_url, "images", str(image_id))
|
||||
|
||||
def build(self, image_obj, detail=False):
|
||||
"""Return a standardized image structure for display by the API."""
|
||||
@@ -117,6 +118,11 @@ class ViewBuilderV11(ViewBuilder):
|
||||
except KeyError:
|
||||
return
|
||||
|
||||
def generate_href(self, image_id):
|
||||
"""Return an href string pointing to this object."""
|
||||
return os.path.join(self.base_url, self.project_id,
|
||||
"images", str(image_id))
|
||||
|
||||
def build(self, image_obj, detail=False):
|
||||
"""Return a standardized image structure for display by the API."""
|
||||
image = ViewBuilder.build(self, image_obj, detail)
|
||||
@@ -142,5 +148,5 @@ class ViewBuilderV11(ViewBuilder):
|
||||
|
||||
def generate_bookmark(self, image_id):
|
||||
"""Create an url that refers to a specific flavor id."""
|
||||
return os.path.join(common.remove_version_from_href(self._url),
|
||||
"images", str(image_id))
|
||||
return os.path.join(common.remove_version_from_href(self.base_url),
|
||||
self.project_id, "images", str(image_id))
|
||||
|
||||
@@ -142,11 +142,12 @@ class ViewBuilderV10(ViewBuilder):
|
||||
class ViewBuilderV11(ViewBuilder):
|
||||
"""Model an Openstack API V1.0 server response."""
|
||||
def __init__(self, addresses_builder, flavor_builder, image_builder,
|
||||
base_url):
|
||||
base_url, project_id=""):
|
||||
ViewBuilder.__init__(self, addresses_builder)
|
||||
self.flavor_builder = flavor_builder
|
||||
self.image_builder = image_builder
|
||||
self.base_url = base_url
|
||||
self.project_id = project_id
|
||||
|
||||
def _build_detail(self, inst):
|
||||
response = super(ViewBuilderV11, self)._build_detail(inst)
|
||||
@@ -216,9 +217,10 @@ class ViewBuilderV11(ViewBuilder):
|
||||
|
||||
def generate_href(self, server_id):
|
||||
"""Create an url that refers to a specific server id."""
|
||||
return os.path.join(self.base_url, "servers", str(server_id))
|
||||
return os.path.join(self.base_url, self.project_id,
|
||||
"servers", str(server_id))
|
||||
|
||||
def generate_bookmark(self, server_id):
|
||||
"""Create an url that refers to a specific flavor id."""
|
||||
return os.path.join(common.remove_version_from_href(self.base_url),
|
||||
"servers", str(server_id))
|
||||
self.project_id, "servers", str(server_id))
|
||||
|
||||
@@ -55,7 +55,7 @@ class FixedIpTest(test.TestCase):
|
||||
last_add_fixed_ip = (None, None)
|
||||
|
||||
body = dict(addFixedIp=dict(networkId='test_net'))
|
||||
req = webob.Request.blank('/v1.1/servers/test_inst/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/test_inst/action')
|
||||
req.method = 'POST'
|
||||
req.body = json.dumps(body)
|
||||
req.headers['content-type'] = 'application/json'
|
||||
@@ -69,7 +69,7 @@ class FixedIpTest(test.TestCase):
|
||||
last_add_fixed_ip = (None, None)
|
||||
|
||||
body = dict(addFixedIp=dict())
|
||||
req = webob.Request.blank('/v1.1/servers/test_inst/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/test_inst/action')
|
||||
req.method = 'POST'
|
||||
req.body = json.dumps(body)
|
||||
req.headers['content-type'] = 'application/json'
|
||||
@@ -83,7 +83,7 @@ class FixedIpTest(test.TestCase):
|
||||
last_remove_fixed_ip = (None, None)
|
||||
|
||||
body = dict(removeFixedIp=dict(address='10.10.10.1'))
|
||||
req = webob.Request.blank('/v1.1/servers/test_inst/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/test_inst/action')
|
||||
req.method = 'POST'
|
||||
req.body = json.dumps(body)
|
||||
req.headers['content-type'] = 'application/json'
|
||||
@@ -97,7 +97,7 @@ class FixedIpTest(test.TestCase):
|
||||
last_remove_fixed_ip = (None, None)
|
||||
|
||||
body = dict(removeFixedIp=dict())
|
||||
req = webob.Request.blank('/v1.1/servers/test_inst/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/test_inst/action')
|
||||
req.method = 'POST'
|
||||
req.body = json.dumps(body)
|
||||
req.headers['content-type'] = 'application/json'
|
||||
|
||||
@@ -90,7 +90,7 @@ class ImageMetaDataTest(test.TestCase):
|
||||
fakes.stub_out_glance(self.stubs, self.IMAGE_FIXTURES)
|
||||
|
||||
def test_index(self):
|
||||
req = webob.Request.blank('/v1.1/images/1/metadata')
|
||||
req = webob.Request.blank('/v1.1/123/images/1/metadata')
|
||||
res = req.get_response(fakes.wsgi_app())
|
||||
res_dict = json.loads(res.body)
|
||||
self.assertEqual(200, res.status_int)
|
||||
@@ -100,7 +100,7 @@ class ImageMetaDataTest(test.TestCase):
|
||||
self.assertEqual(value, res_dict['metadata'][key])
|
||||
|
||||
def test_show(self):
|
||||
req = webob.Request.blank('/v1.1/images/1/metadata/key1')
|
||||
req = webob.Request.blank('/v1.1/fake/images/1/metadata/key1')
|
||||
res = req.get_response(fakes.wsgi_app())
|
||||
res_dict = json.loads(res.body)
|
||||
self.assertEqual(200, res.status_int)
|
||||
@@ -109,12 +109,12 @@ class ImageMetaDataTest(test.TestCase):
|
||||
self.assertEqual('value1', res_dict['meta']['key1'])
|
||||
|
||||
def test_show_not_found(self):
|
||||
req = webob.Request.blank('/v1.1/images/1/metadata/key9')
|
||||
req = webob.Request.blank('/v1.1/fake/images/1/metadata/key9')
|
||||
res = req.get_response(fakes.wsgi_app())
|
||||
self.assertEqual(404, res.status_int)
|
||||
|
||||
def test_create(self):
|
||||
req = webob.Request.blank('/v1.1/images/2/metadata')
|
||||
req = webob.Request.blank('/v1.1/fake/images/2/metadata')
|
||||
req.method = 'POST'
|
||||
req.body = '{"metadata": {"key9": "value9"}}'
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -134,7 +134,7 @@ class ImageMetaDataTest(test.TestCase):
|
||||
self.assertEqual(expected_output, actual_output)
|
||||
|
||||
def test_update_all(self):
|
||||
req = webob.Request.blank('/v1.1/images/2/metadata')
|
||||
req = webob.Request.blank('/v1.1/fake/images/1/metadata')
|
||||
req.method = 'PUT'
|
||||
req.body = '{"metadata": {"key9": "value9"}}'
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -152,7 +152,7 @@ class ImageMetaDataTest(test.TestCase):
|
||||
self.assertEqual(expected_output, actual_output)
|
||||
|
||||
def test_update_item(self):
|
||||
req = webob.Request.blank('/v1.1/images/1/metadata/key1')
|
||||
req = webob.Request.blank('/v1.1/fake/images/1/metadata/key1')
|
||||
req.method = 'PUT'
|
||||
req.body = '{"meta": {"key1": "zz"}}'
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -168,7 +168,7 @@ class ImageMetaDataTest(test.TestCase):
|
||||
self.assertEqual(actual_output, expected_output)
|
||||
|
||||
def test_update_item_bad_body(self):
|
||||
req = webob.Request.blank('/v1.1/images/1/metadata/key1')
|
||||
req = webob.Request.blank('/v1.1/fake/images/1/metadata/key1')
|
||||
req.method = 'PUT'
|
||||
req.body = '{"key1": "zz"}'
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -176,7 +176,7 @@ class ImageMetaDataTest(test.TestCase):
|
||||
self.assertEqual(400, res.status_int)
|
||||
|
||||
def test_update_item_too_many_keys(self):
|
||||
req = webob.Request.blank('/v1.1/images/1/metadata/key1')
|
||||
req = webob.Request.blank('/v1.1/fake/images/1/metadata/key1')
|
||||
req.method = 'PUT'
|
||||
req.body = '{"meta": {"key1": "value1", "key2": "value2"}}'
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -184,7 +184,7 @@ class ImageMetaDataTest(test.TestCase):
|
||||
self.assertEqual(400, res.status_int)
|
||||
|
||||
def test_update_item_body_uri_mismatch(self):
|
||||
req = webob.Request.blank('/v1.1/images/1/metadata/bad')
|
||||
req = webob.Request.blank('/v1.1/fake/images/1/metadata/bad')
|
||||
req.method = 'PUT'
|
||||
req.body = '{"meta": {"key1": "value1"}}'
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -192,7 +192,7 @@ class ImageMetaDataTest(test.TestCase):
|
||||
self.assertEqual(400, res.status_int)
|
||||
|
||||
def test_update_item_xml(self):
|
||||
req = webob.Request.blank('/v1.1/images/1/metadata/key1')
|
||||
req = webob.Request.blank('/v1.1/fake/images/1/metadata/key1')
|
||||
req.method = 'PUT'
|
||||
req.body = '<meta key="key1">five</meta>'
|
||||
req.headers["content-type"] = "application/xml"
|
||||
@@ -208,14 +208,14 @@ class ImageMetaDataTest(test.TestCase):
|
||||
self.assertEqual(actual_output, expected_output)
|
||||
|
||||
def test_delete(self):
|
||||
req = webob.Request.blank('/v1.1/images/2/metadata/key1')
|
||||
req = webob.Request.blank('/v1.1/fake/images/2/metadata/key1')
|
||||
req.method = 'DELETE'
|
||||
res = req.get_response(fakes.wsgi_app())
|
||||
self.assertEqual(204, res.status_int)
|
||||
self.assertEqual('', res.body)
|
||||
|
||||
def test_delete_not_found(self):
|
||||
req = webob.Request.blank('/v1.1/images/2/metadata/blah')
|
||||
req = webob.Request.blank('/v1.1/fake/images/2/metadata/blah')
|
||||
req.method = 'DELETE'
|
||||
res = req.get_response(fakes.wsgi_app())
|
||||
self.assertEqual(404, res.status_int)
|
||||
@@ -225,7 +225,7 @@ class ImageMetaDataTest(test.TestCase):
|
||||
for num in range(FLAGS.quota_metadata_items + 1):
|
||||
data['metadata']['key%i' % num] = "blah"
|
||||
json_string = str(data).replace("\'", "\"")
|
||||
req = webob.Request.blank('/v1.1/images/2/metadata')
|
||||
req = webob.Request.blank('/v1.1/fake/images/2/metadata')
|
||||
req.method = 'POST'
|
||||
req.body = json_string
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -233,7 +233,7 @@ class ImageMetaDataTest(test.TestCase):
|
||||
self.assertEqual(400, res.status_int)
|
||||
|
||||
def test_too_many_metadata_items_on_put(self):
|
||||
req = webob.Request.blank('/v1.1/images/3/metadata/blah')
|
||||
req = webob.Request.blank('/v1.1/fake/images/3/metadata/blah')
|
||||
req.method = 'PUT'
|
||||
req.body = '{"meta": {"blah": "blah"}}'
|
||||
req.headers["content-type"] = "application/json"
|
||||
|
||||
@@ -491,7 +491,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
mock_method = MockSetAdminPassword()
|
||||
self.stubs.Set(nova.compute.api.API, 'set_admin_password', mock_method)
|
||||
body = {'changePassword': {'adminPass': '1234pass'}}
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = 'application/json'
|
||||
req.body = json.dumps(body)
|
||||
@@ -503,7 +503,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
def test_server_change_password_xml(self):
|
||||
mock_method = MockSetAdminPassword()
|
||||
self.stubs.Set(nova.compute.api.API, 'set_admin_password', mock_method)
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = "application/xml"
|
||||
req.body = """<?xml version="1.0" encoding="UTF-8"?>
|
||||
@@ -517,7 +517,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
|
||||
def test_server_change_password_not_a_string(self):
|
||||
body = {'changePassword': {'adminPass': 1234}}
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = 'application/json'
|
||||
req.body = json.dumps(body)
|
||||
@@ -526,7 +526,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
|
||||
def test_server_change_password_bad_request(self):
|
||||
body = {'changePassword': {'pass': '12345'}}
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = 'application/json'
|
||||
req.body = json.dumps(body)
|
||||
@@ -535,7 +535,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
|
||||
def test_server_change_password_empty_string(self):
|
||||
body = {'changePassword': {'adminPass': ''}}
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = 'application/json'
|
||||
req.body = json.dumps(body)
|
||||
@@ -544,7 +544,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
|
||||
def test_server_change_password_none(self):
|
||||
body = {'changePassword': {'adminPass': None}}
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = 'application/json'
|
||||
req.body = json.dumps(body)
|
||||
@@ -553,7 +553,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
|
||||
def test_server_reboot_hard(self):
|
||||
body = dict(reboot=dict(type="HARD"))
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = 'application/json'
|
||||
req.body = json.dumps(body)
|
||||
@@ -562,7 +562,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
|
||||
def test_server_reboot_soft(self):
|
||||
body = dict(reboot=dict(type="SOFT"))
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = 'application/json'
|
||||
req.body = json.dumps(body)
|
||||
@@ -571,7 +571,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
|
||||
def test_server_reboot_incorrect_type(self):
|
||||
body = dict(reboot=dict(type="NOT_A_TYPE"))
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = 'application/json'
|
||||
req.body = json.dumps(body)
|
||||
@@ -580,7 +580,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
|
||||
def test_server_reboot_missing_type(self):
|
||||
body = dict(reboot=dict())
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = 'application/json'
|
||||
req.body = json.dumps(body)
|
||||
@@ -594,7 +594,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = 'application/json'
|
||||
req.body = json.dumps(body)
|
||||
@@ -615,7 +615,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
self.stubs.Set(nova.db, 'instance_get_by_uuid',
|
||||
return_server_with_uuid_and_power_state(state))
|
||||
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = 'application/json'
|
||||
req.body = json.dumps(body)
|
||||
@@ -633,7 +633,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = 'application/json'
|
||||
req.body = json.dumps(body)
|
||||
@@ -649,7 +649,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = 'application/json'
|
||||
req.body = json.dumps(body)
|
||||
@@ -664,7 +664,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = 'application/json'
|
||||
req.body = json.dumps(body)
|
||||
@@ -683,7 +683,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = 'application/json'
|
||||
req.body = json.dumps(body)
|
||||
@@ -702,7 +702,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.content_type = 'application/json'
|
||||
req.body = json.dumps(body)
|
||||
@@ -712,7 +712,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
|
||||
def test_resize_server(self):
|
||||
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.content_type = 'application/json'
|
||||
req.method = 'POST'
|
||||
body_dict = dict(resize=dict(flavorRef="http://localhost/3"))
|
||||
@@ -730,7 +730,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
self.assertEqual(self.resize_called, True)
|
||||
|
||||
def test_resize_server_no_flavor(self):
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.content_type = 'application/json'
|
||||
req.method = 'POST'
|
||||
body_dict = dict(resize=dict())
|
||||
@@ -740,7 +740,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
self.assertEqual(res.status_int, 400)
|
||||
|
||||
def test_resize_server_no_flavor_ref(self):
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.content_type = 'application/json'
|
||||
req.method = 'POST'
|
||||
body_dict = dict(resize=dict(flavorRef=None))
|
||||
@@ -750,7 +750,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
self.assertEqual(res.status_int, 400)
|
||||
|
||||
def test_confirm_resize_server(self):
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.content_type = 'application/json'
|
||||
req.method = 'POST'
|
||||
body_dict = dict(confirmResize=None)
|
||||
@@ -768,7 +768,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
self.assertEqual(self.confirm_resize_called, True)
|
||||
|
||||
def test_revert_resize_server(self):
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.content_type = 'application/json'
|
||||
req.method = 'POST'
|
||||
body_dict = dict(revertResize=None)
|
||||
@@ -791,7 +791,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
'name': 'Snapshot 1',
|
||||
},
|
||||
}
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.body = json.dumps(body)
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -810,7 +810,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
'name': 'Snapshot 1',
|
||||
},
|
||||
}
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.body = json.dumps(body)
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -824,7 +824,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
'metadata': {'key': 'asdf'},
|
||||
},
|
||||
}
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.body = json.dumps(body)
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -842,7 +842,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
}
|
||||
for num in range(FLAGS.quota_metadata_items + 1):
|
||||
body['createImage']['metadata']['foo%i' % num] = "bar"
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.body = json.dumps(body)
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -853,7 +853,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
body = {
|
||||
'createImage': {},
|
||||
}
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.body = json.dumps(body)
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -867,7 +867,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
'metadata': 'henry',
|
||||
},
|
||||
}
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.body = json.dumps(body)
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -886,7 +886,7 @@ class ServerActionsTestV11(test.TestCase):
|
||||
},
|
||||
}
|
||||
|
||||
req = webob.Request.blank('/v1.1/servers/1/action')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/action')
|
||||
req.method = 'POST'
|
||||
req.body = json.dumps(body)
|
||||
req.headers["content-type"] = "application/json"
|
||||
|
||||
@@ -83,7 +83,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
def test_index(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_get',
|
||||
return_server_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata')
|
||||
res = req.get_response(fakes.wsgi_app())
|
||||
self.assertEqual(200, res.status_int)
|
||||
res_dict = json.loads(res.body)
|
||||
@@ -100,7 +100,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
def test_index_xml(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_get',
|
||||
return_server_metadata)
|
||||
request = webob.Request.blank("/v1.1/servers/1/metadata")
|
||||
request = webob.Request.blank("/v1.1/fake/servers/1/metadata")
|
||||
request.accept = "application/xml"
|
||||
response = request.get_response(fakes.wsgi_app())
|
||||
self.assertEqual(200, response.status_int)
|
||||
@@ -120,14 +120,14 @@ class ServerMetaDataTest(test.TestCase):
|
||||
|
||||
def test_index_nonexistant_server(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_get', return_server_nonexistant)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata')
|
||||
res = req.get_response(fakes.wsgi_app())
|
||||
self.assertEqual(404, res.status_int)
|
||||
|
||||
def test_index_no_data(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_get',
|
||||
return_empty_server_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata')
|
||||
res = req.get_response(fakes.wsgi_app())
|
||||
self.assertEqual(200, res.status_int)
|
||||
res_dict = json.loads(res.body)
|
||||
@@ -137,7 +137,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
def test_show(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_get',
|
||||
return_server_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata/key2')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata/key2')
|
||||
res = req.get_response(fakes.wsgi_app())
|
||||
res_dict = json.loads(res.body)
|
||||
self.assertEqual(200, res.status_int)
|
||||
@@ -147,7 +147,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
def test_show_xml(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_get',
|
||||
return_server_metadata)
|
||||
request = webob.Request.blank("/v1.1/servers/1/metadata/key2")
|
||||
request = webob.Request.blank("/v1.1/fake/servers/1/metadata/key2")
|
||||
request.accept = "application/xml"
|
||||
response = request.get_response(fakes.wsgi_app())
|
||||
self.assertEqual(200, response.status_int)
|
||||
@@ -164,14 +164,14 @@ class ServerMetaDataTest(test.TestCase):
|
||||
|
||||
def test_show_nonexistant_server(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_get', return_server_nonexistant)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata/key2')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata/key2')
|
||||
res = req.get_response(fakes.wsgi_app())
|
||||
self.assertEqual(404, res.status_int)
|
||||
|
||||
def test_show_meta_not_found(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_get',
|
||||
return_empty_server_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata/key6')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata/key6')
|
||||
res = req.get_response(fakes.wsgi_app())
|
||||
self.assertEqual(404, res.status_int)
|
||||
|
||||
@@ -180,7 +180,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
return_server_metadata)
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_delete',
|
||||
delete_server_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata/key2')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata/key2')
|
||||
req.method = 'DELETE'
|
||||
res = req.get_response(fakes.wsgi_app())
|
||||
self.assertEqual(204, res.status_int)
|
||||
@@ -188,7 +188,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
|
||||
def test_delete_nonexistant_server(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_get', return_server_nonexistant)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata/key1')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata/key1')
|
||||
req.method = 'DELETE'
|
||||
res = req.get_response(fakes.wsgi_app())
|
||||
self.assertEqual(404, res.status_int)
|
||||
@@ -196,7 +196,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
def test_delete_meta_not_found(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_get',
|
||||
return_empty_server_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata/key6')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata/key6')
|
||||
req.method = 'DELETE'
|
||||
res = req.get_response(fakes.wsgi_app())
|
||||
self.assertEqual(404, res.status_int)
|
||||
@@ -206,7 +206,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
return_server_metadata)
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_update',
|
||||
return_create_instance_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata')
|
||||
req.method = 'POST'
|
||||
req.content_type = "application/json"
|
||||
input = {"metadata": {"key9": "value9"}}
|
||||
@@ -227,7 +227,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
return_server_metadata)
|
||||
self.stubs.Set(nova.db.api, "instance_metadata_update",
|
||||
return_create_instance_metadata)
|
||||
req = webob.Request.blank("/v1.1/servers/1/metadata")
|
||||
req = webob.Request.blank("/v1.1/fake/servers/1/metadata")
|
||||
req.method = "POST"
|
||||
req.content_type = "application/xml"
|
||||
req.accept = "application/xml"
|
||||
@@ -258,7 +258,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
def test_create_empty_body(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_update',
|
||||
return_create_instance_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata')
|
||||
req.method = 'POST'
|
||||
req.headers["content-type"] = "application/json"
|
||||
res = req.get_response(fakes.wsgi_app())
|
||||
@@ -266,7 +266,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
|
||||
def test_create_nonexistant_server(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_get', return_server_nonexistant)
|
||||
req = webob.Request.blank('/v1.1/servers/100/metadata')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/100/metadata')
|
||||
req.method = 'POST'
|
||||
req.body = '{"metadata": {"key1": "value1"}}'
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -276,7 +276,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
def test_update_all(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_update',
|
||||
return_create_instance_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata')
|
||||
req.method = 'PUT'
|
||||
req.content_type = "application/json"
|
||||
expected = {
|
||||
@@ -294,7 +294,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
def test_update_all_empty_container(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_update',
|
||||
return_create_instance_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata')
|
||||
req.method = 'PUT'
|
||||
req.content_type = "application/json"
|
||||
expected = {'metadata': {}}
|
||||
@@ -307,7 +307,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
def test_update_all_malformed_container(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_update',
|
||||
return_create_instance_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata')
|
||||
req.method = 'PUT'
|
||||
req.content_type = "application/json"
|
||||
expected = {'meta': {}}
|
||||
@@ -318,7 +318,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
def test_update_all_malformed_data(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_update',
|
||||
return_create_instance_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata')
|
||||
req.method = 'PUT'
|
||||
req.content_type = "application/json"
|
||||
expected = {'metadata': ['asdf']}
|
||||
@@ -328,7 +328,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
|
||||
def test_update_all_nonexistant_server(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_get', return_server_nonexistant)
|
||||
req = webob.Request.blank('/v1.1/servers/100/metadata')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/100/metadata')
|
||||
req.method = 'PUT'
|
||||
req.content_type = "application/json"
|
||||
req.body = json.dumps({'metadata': {'key10': 'value10'}})
|
||||
@@ -338,7 +338,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
def test_update_item(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_update',
|
||||
return_create_instance_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata/key1')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata/key1')
|
||||
req.method = 'PUT'
|
||||
req.body = '{"meta": {"key1": "value1"}}'
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -352,7 +352,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
def test_update_item_xml(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_update',
|
||||
return_create_instance_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata/key9')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata/key9')
|
||||
req.method = 'PUT'
|
||||
req.accept = "application/json"
|
||||
req.content_type = "application/xml"
|
||||
@@ -369,7 +369,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
|
||||
def test_update_item_nonexistant_server(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_get', return_server_nonexistant)
|
||||
req = webob.Request.blank('/v1.1/servers/asdf/metadata/key1')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/asdf/metadata/key1')
|
||||
req.method = 'PUT'
|
||||
req.body = '{"meta":{"key1": "value1"}}'
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -379,7 +379,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
def test_update_item_empty_body(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_update',
|
||||
return_create_instance_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata/key1')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata/key1')
|
||||
req.method = 'PUT'
|
||||
req.headers["content-type"] = "application/json"
|
||||
res = req.get_response(fakes.wsgi_app())
|
||||
@@ -388,7 +388,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
def test_update_item_too_many_keys(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_update',
|
||||
return_create_instance_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata/key1')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata/key1')
|
||||
req.method = 'PUT'
|
||||
req.body = '{"meta": {"key1": "value1", "key2": "value2"}}'
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -398,7 +398,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
def test_update_item_body_uri_mismatch(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_update',
|
||||
return_create_instance_metadata)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata/bad')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata/bad')
|
||||
req.method = 'PUT'
|
||||
req.body = '{"meta": {"key1": "value1"}}'
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -412,7 +412,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
for num in range(FLAGS.quota_metadata_items + 1):
|
||||
data['metadata']['key%i' % num] = "blah"
|
||||
json_string = str(data).replace("\'", "\"")
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata')
|
||||
req.method = 'POST'
|
||||
req.body = json_string
|
||||
req.headers["content-type"] = "application/json"
|
||||
@@ -422,7 +422,7 @@ class ServerMetaDataTest(test.TestCase):
|
||||
def test_to_many_metadata_items_on_update_item(self):
|
||||
self.stubs.Set(nova.db.api, 'instance_metadata_update',
|
||||
return_create_instance_metadata_max)
|
||||
req = webob.Request.blank('/v1.1/servers/1/metadata/key1')
|
||||
req = webob.Request.blank('/v1.1/fake/servers/1/metadata/key1')
|
||||
req.method = 'PUT'
|
||||
req.body = '{"meta": {"a new key": "a new value"}}'
|
||||
req.headers["content-type"] = "application/json"
|
||||
|
||||
@@ -296,10 +296,10 @@ class ServersTest(test.TestCase):
|
||||
self.assertEqual(res_dict['server']['name'], 'server1')
|
||||
|
||||
def test_get_server_by_id_v1_1(self):
|
||||
image_bookmark = "http://localhost/images/10"
|
||||
flavor_ref = "http://localhost/v1.1/flavors/1"
|
||||
image_bookmark = "http://localhost/fake/images/10"
|
||||
flavor_ref = "http://localhost/v1.1/fake/flavors/1"
|
||||
flavor_id = "1"
|
||||
flavor_bookmark = "http://localhost/flavors/1"
|
||||
flavor_bookmark = "http://localhost/fake/flavors/1"
|
||||
|
||||
public_ip = '192.168.0.3'
|
||||
private_ip = '172.19.0.1'
|
||||
@@ -373,11 +373,11 @@ class ServersTest(test.TestCase):
|
||||
{
|
||||
"rel": "self",
|
||||
#FIXME(wwolf) Do we want the links to be id or uuid?
|
||||
"href": "http://localhost/v1.1/servers/1",
|
||||
"href": "http://localhost/v1.1/fake/servers/1",
|
||||
},
|
||||
{
|
||||
"rel": "bookmark",
|
||||
"href": "http://localhost/servers/1",
|
||||
"href": "http://localhost/fake/servers/1",
|
||||
},
|
||||
],
|
||||
}
|
||||
@@ -386,12 +386,12 @@ class ServersTest(test.TestCase):
|
||||
self.assertDictMatch(res_dict, expected_server)
|
||||
|
||||
def test_get_server_by_id_v1_1_xml(self):
|
||||
image_bookmark = "http://localhost/images/10"
|
||||
flavor_ref = "http://localhost/v1.1/flavors/1"
|
||||
image_bookmark = "http://localhost/fake/images/10"
|
||||
flavor_ref = "http://localhost/v1.1/fake/flavors/1"
|
||||
flavor_id = "1"
|
||||
flavor_bookmark = "http://localhost/flavors/1"
|
||||
server_href = "http://localhost/v1.1/servers/1"
|
||||
server_bookmark = "http://localhost/servers/1"
|
||||
flavor_bookmark = "http://localhost/fake/flavors/1"
|
||||
server_href = "http://localhost/v1.1/fake/servers/1"
|
||||
server_bookmark = "http://localhost/fake/servers/1"
|
||||
|
||||
public_ip = '192.168.0.3'
|
||||
private_ip = '172.19.0.1'
|
||||
@@ -458,10 +458,10 @@ class ServersTest(test.TestCase):
|
||||
self.assertEqual(expected.toxml(), actual.toxml())
|
||||
|
||||
def test_get_server_with_active_status_by_id_v1_1(self):
|
||||
image_bookmark = "http://localhost/images/10"
|
||||
flavor_ref = "http://localhost/v1.1/flavors/1"
|
||||
image_bookmark = "http://localhost/fake/images/10"
|
||||
flavor_ref = "http://localhost/v1.1/fake/flavors/1"
|
||||
flavor_id = "1"
|
||||
flavor_bookmark = "http://localhost/flavors/1"
|
||||
flavor_bookmark = "http://localhost/fake/flavors/1"
|
||||
private_ip = "192.168.0.3"
|
||||
public_ip = "1.2.3.4"
|
||||
|
||||
@@ -534,11 +534,11 @@ class ServersTest(test.TestCase):
|
||||
"links": [
|
||||
{
|
||||
"rel": "self",
|
||||
"href": "http://localhost/v1.1/servers/1",
|
||||
"href": "http://localhost/v1.1/fake/servers/1",
|
||||
},
|
||||
{
|
||||
"rel": "bookmark",
|
||||
"href": "http://localhost/servers/1",
|
||||
"href": "http://localhost/fake/servers/1",
|
||||
},
|
||||
],
|
||||
}
|
||||
@@ -548,10 +548,10 @@ class ServersTest(test.TestCase):
|
||||
|
||||
def test_get_server_with_id_image_ref_by_id_v1_1(self):
|
||||
image_ref = "10"
|
||||
image_bookmark = "http://localhost/images/10"
|
||||
flavor_ref = "http://localhost/v1.1/flavors/1"
|
||||
image_bookmark = "http://localhost/fake/images/10"
|
||||
flavor_ref = "http://localhost/v1.1/fake/flavors/1"
|
||||
flavor_id = "1"
|
||||
flavor_bookmark = "http://localhost/flavors/1"
|
||||
flavor_bookmark = "http://localhost/fake/flavors/1"
|
||||
private_ip = "192.168.0.3"
|
||||
public_ip = "1.2.3.4"
|
||||
|
||||
@@ -625,11 +625,11 @@ class ServersTest(test.TestCase):
|
||||
"links": [
|
||||
{
|
||||
"rel": "self",
|
||||
"href": "http://localhost/v1.1/servers/1",
|
||||
"href": "http://localhost/v1.1/fake/servers/1",
|
||||
},
|
||||
{
|
||||
"rel": "bookmark",
|
||||
"href": "http://localhost/servers/1",
|
||||
"href": "http://localhost/fake/servers/1",
|
||||
},
|
||||
],
|
||||
}
|
||||
@@ -1030,11 +1030,11 @@ class ServersTest(test.TestCase):
|
||||
expected_links = [
|
||||
{
|
||||
"rel": "self",
|
||||
"href": "http://localhost/v1.1/servers/%s" % s['id'],
|
||||
"href": "http://localhost/v1.1/fake/servers/%s" % s['id'],
|
||||
},
|
||||
{
|
||||
"rel": "bookmark",
|
||||
"href": "http://localhost/servers/%s" % s['id'],
|
||||
"href": "http://localhost/fake/servers/%s" % s['id'],
|
||||
},
|
||||
]
|
||||
|
||||
@@ -1318,7 +1318,7 @@ class ServersTest(test.TestCase):
|
||||
"links": [
|
||||
{
|
||||
"rel": "bookmark",
|
||||
"href": 'http://localhost/flavors/3',
|
||||
"href": 'http://localhost/fake/flavors/3',
|
||||
},
|
||||
],
|
||||
}
|
||||
@@ -1327,7 +1327,7 @@ class ServersTest(test.TestCase):
|
||||
"links": [
|
||||
{
|
||||
"rel": "bookmark",
|
||||
"href": 'http://localhost/images/2',
|
||||
"href": 'http://localhost/fake/images/2',
|
||||
},
|
||||
],
|
||||
}
|
||||
@@ -1423,7 +1423,7 @@ class ServersTest(test.TestCase):
|
||||
"links": [
|
||||
{
|
||||
"rel": "bookmark",
|
||||
"href": 'http://localhost/flavors/3',
|
||||
"href": 'http://localhost/fake/flavors/3',
|
||||
},
|
||||
],
|
||||
}
|
||||
@@ -1432,7 +1432,7 @@ class ServersTest(test.TestCase):
|
||||
"links": [
|
||||
{
|
||||
"rel": "bookmark",
|
||||
"href": 'http://localhost/images/2',
|
||||
"href": 'http://localhost/fake/images/2',
|
||||
},
|
||||
],
|
||||
}
|
||||
@@ -1682,7 +1682,7 @@ class ServersTest(test.TestCase):
|
||||
"links": [
|
||||
{
|
||||
"rel": "bookmark",
|
||||
"href": 'http://localhost/flavors/1',
|
||||
"href": 'http://localhost/fake/flavors/1',
|
||||
},
|
||||
],
|
||||
}
|
||||
@@ -1691,7 +1691,7 @@ class ServersTest(test.TestCase):
|
||||
"links": [
|
||||
{
|
||||
"rel": "bookmark",
|
||||
"href": 'http://localhost/images/10',
|
||||
"href": 'http://localhost/fake/images/10',
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
@@ -122,12 +122,18 @@ class TestOpenStackClient(object):
|
||||
self.auth_result = auth_headers
|
||||
return self.auth_result
|
||||
|
||||
def api_request(self, relative_uri, check_response_status=None, **kwargs):
|
||||
def api_request(self, relative_uri, check_response_status=None,
|
||||
use_project_id=True, **kwargs):
|
||||
auth_result = self._authenticate()
|
||||
|
||||
# NOTE(justinsb): httplib 'helpfully' converts headers to lower case
|
||||
base_uri = auth_result['x-server-management-url']
|
||||
full_uri = base_uri + relative_uri
|
||||
|
||||
if use_project_id:
|
||||
# /fake is the project_id
|
||||
full_uri = base_uri + '/fake' + relative_uri
|
||||
else:
|
||||
full_uri = base_uri + relative_uri
|
||||
|
||||
headers = kwargs.setdefault('headers', {})
|
||||
headers['X-Auth-Token'] = auth_result['x-auth-token']
|
||||
@@ -234,30 +240,36 @@ class TestOpenStackClient(object):
|
||||
return self.api_delete('/flavors/%s' % flavor_id)
|
||||
|
||||
def get_volume(self, volume_id):
|
||||
return self.api_get('/os-volumes/%s' % volume_id)['volume']
|
||||
return self.api_get('/os-volumes/%s' % volume_id,
|
||||
use_project_id=False)['volume']
|
||||
|
||||
def get_volumes(self, detail=True):
|
||||
rel_url = '/os-volumes/detail' if detail else '/os-volumes'
|
||||
return self.api_get(rel_url)['volumes']
|
||||
return self.api_get(rel_url, use_project_id=False)['volumes']
|
||||
|
||||
def post_volume(self, volume):
|
||||
return self.api_post('/os-volumes', volume)['volume']
|
||||
return self.api_post('/os-volumes', volume,
|
||||
use_project_id=False)['volume']
|
||||
|
||||
def delete_volume(self, volume_id):
|
||||
return self.api_delete('/os-volumes/%s' % volume_id)
|
||||
return self.api_delete('/os-volumes/%s' % volume_id,
|
||||
use_project_id=False)
|
||||
|
||||
def get_server_volume(self, server_id, attachment_id):
|
||||
return self.api_get('/servers/%s/os-volume_attachments/%s' %
|
||||
(server_id, attachment_id))['volumeAttachment']
|
||||
(server_id, attachment_id), use_project_id=False
|
||||
)['volumeAttachment']
|
||||
|
||||
def get_server_volumes(self, server_id):
|
||||
return self.api_get('/servers/%s/os-volume_attachments' %
|
||||
(server_id))['volumeAttachments']
|
||||
(server_id), use_project_id=False
|
||||
)['volumeAttachments']
|
||||
|
||||
def post_server_volume(self, server_id, volume_attachment):
|
||||
return self.api_post('/servers/%s/os-volume_attachments' %
|
||||
(server_id), volume_attachment)['volumeAttachment']
|
||||
(server_id), volume_attachment,
|
||||
use_project_id=False)['volumeAttachment']
|
||||
|
||||
def delete_server_volume(self, server_id, attachment_id):
|
||||
return self.api_delete('/servers/%s/os-volume_attachments/%s' %
|
||||
(server_id, attachment_id))
|
||||
(server_id, attachment_id), use_project_id=False)
|
||||
|
||||
@@ -33,7 +33,7 @@ class ExtensionsTest(integrated_helpers._IntegratedTestBase):
|
||||
|
||||
def test_get_foxnsocks(self):
|
||||
"""Simple check that fox-n-socks works."""
|
||||
response = self.api.api_request('/foxnsocks')
|
||||
response = self.api.api_request('/foxnsocks', use_project_id=False)
|
||||
foxnsocks = response.read()
|
||||
LOG.debug("foxnsocks: %s" % foxnsocks)
|
||||
self.assertEqual('Try to say this Mr. Knox, sir...', foxnsocks)
|
||||
|
||||
Reference in New Issue
Block a user