Example #1
0
    def setUp(self):
        super(ServerDiagnosticsTest, self).setUp()
        self.flags(allow_admin_api=True)
        self.flags(verbose=True)
        self.stubs.Set(nova.compute.API, 'get_diagnostics',
                       fake_get_diagnostics)
        self.stubs.Set(nova.compute.API, 'get', fake_instance_get)
        self.compute_api = nova.compute.API()

        self.router = compute.APIRouter()
        ext_middleware = extensions.ExtensionMiddleware(self.router)
        self.app = wsgi.LazySerializationMiddleware(ext_middleware)
Example #2
0
    def setUp(self):
        super(ServerDiagnosticsTest, self).setUp()
        self.flags(verbose=True,
                   osapi_compute_extension=[
                       'nova.api.openstack.compute.contrib.select_extensions'
                   ],
                   osapi_compute_ext_list=['Server_diagnostics'])
        self.stubs.Set(compute_api.API, 'get_diagnostics',
                       fake_get_diagnostics)
        self.stubs.Set(compute_api.API, 'get', fake_instance_get)

        self.router = compute.APIRouter(init_only=('servers', 'diagnostics'))
Example #3
0
    def setUp(self):
        super(CreateBackupTests, self).setUp()

        self.stubs.Set(compute.API, 'get', fake_compute_api_get)
        self.backup_stubs = fakes.stub_out_compute_api_backup(self.stubs)

        self.flags(allow_admin_api=True)
        router = compute_api.APIRouter()
        ext_middleware = extensions.ExtensionMiddleware(router)
        self.app = wsgi.LazySerializationMiddleware(ext_middleware)

        self.uuid = utils.gen_uuid()
    def _bounce_id(self, test_id):

        class BounceController(object):
            def show(self, req, id):
                return id
        res_ext = base_extensions.ResourceExtension('bounce',
                                                    BounceController())
        manager = StubExtensionManager(res_ext)
        app = compute.APIRouter(manager)
        request = webob.Request.blank("/fake/bounce/%s" % test_id)
        response = request.get_response(app)
        return response.body
    def test_get_extension_json(self):
        app = compute.APIRouter(init_only=('extensions',))
        request = webob.Request.blank("/fake/extensions/FOXNSOX")
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)

        data = jsonutils.loads(response.body)
        self.assertEqual({
            "namespace": "http://www.fox.in.socks/api/ext/pie/v1.0",
            "name": "Fox In Socks",
            "updated": "2011-01-22T13:25:27-06:00",
            "description": "The Fox In Socks Extension.",
            "alias": "FOXNSOX",
            "links": []}, data['extension'])
 def test_controller_extension_early(self):
     controller = StubController(response_body)
     res_ext = base_extensions.ResourceExtension('tweedles', controller)
     ext_controller = StubEarlyExtensionController(extension_body)
     extension = StubControllerExtension()
     cont_ext = base_extensions.ControllerExtension(extension, 'tweedles',
                                                    ext_controller)
     manager = StubExtensionManager(resource_ext=res_ext,
                                    controller_ext=cont_ext)
     app = compute.APIRouter(manager)
     request = webob.Request.blank("/fake/tweedles")
     response = request.get_response(app)
     self.assertEqual(200, response.status_int)
     self.assertEqual(extension_body, response.body)
 def test_non_exist_resource(self):
     res_ext = base_extensions.ResourceExtension('tweedles',
                                            StubController(response_body))
     manager = StubExtensionManager(res_ext)
     app = compute.APIRouter(manager)
     request = webob.Request.blank("/fake/tweedles/1")
     response = request.get_response(app)
     self.assertEqual(404, response.status_int)
     self.assertEqual('application/json', response.content_type)
     body = jsonutils.loads(response.body)
     expected = {
         "itemNotFound": {
             "message": "The resource could not be found.",
             "code": 404
         }
     }
     self.assertThat(expected, matchers.DictMatches(body))
    def test_controller_extension_late(self):
        # Need a dict for the body to convert to a ResponseObject
        controller = StubController(dict(foo=response_body))
        res_ext = base_extensions.ResourceExtension('tweedles', controller)

        ext_controller = StubLateExtensionController(extension_body)
        extension = StubControllerExtension()
        cont_ext = base_extensions.ControllerExtension(extension, 'tweedles',
                                                       ext_controller)

        manager = StubExtensionManager(resource_ext=res_ext,
                                       controller_ext=cont_ext)
        app = compute.APIRouter(manager)
        request = webob.Request.blank("/fake/tweedles")
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)
        self.assertEqual(extension_body, response.body)
Example #9
0
    def test_get_extension_json(self):
        app = compute.APIRouter()
        ext_midware = compute_extensions.ExtensionMiddleware(app)
        ser_midware = wsgi.LazySerializationMiddleware(ext_midware)
        request = webob.Request.blank("/fake/extensions/FOXNSOX")
        response = request.get_response(ser_midware)
        self.assertEqual(200, response.status_int)

        data = json.loads(response.body)
        self.assertEqual(
            data['extension'], {
                "namespace": "http://www.fox.in.socks/api/ext/pie/v1.0",
                "name": "Fox In Socks",
                "updated": "2011-01-22T13:25:27-06:00",
                "description": "The Fox In Socks Extension",
                "alias": "FOXNSOX",
                "links": []
            })
 def test_bad_request(self):
     res_ext = base_extensions.ResourceExtension('tweedles',
                               StubController(response_body))
     manager = StubExtensionManager(res_ext)
     app = compute.APIRouter(manager)
     request = webob.Request.blank("/fake/tweedles")
     request.method = "POST"
     response = request.get_response(app)
     self.assertEqual(400, response.status_int)
     self.assertEqual('application/json', response.content_type)
     body = jsonutils.loads(response.body)
     expected = {
         "badRequest": {
             "message": "All aboard the fail train!",
             "code": 400
         }
     }
     self.assertThat(expected, matchers.DictMatches(body))
Example #11
0
 def test_non_exist_resource(self):
     res_ext = base_extensions.ResourceExtension(
         'tweedles', StubController(response_body))
     manager = StubExtensionManager(res_ext)
     app = compute.APIRouter(manager)
     ext_midware = compute_extensions.ExtensionMiddleware(app, manager)
     ser_midware = wsgi.LazySerializationMiddleware(ext_midware)
     request = webob.Request.blank("/fake/tweedles/1")
     response = request.get_response(ser_midware)
     self.assertEqual(404, response.status_int)
     self.assertEqual('application/json', response.content_type)
     body = json.loads(response.body)
     expected = {
         "itemNotFound": {
             "message": "The resource could not be found.",
             "code": 404
         }
     }
     self.assertDictMatch(expected, body)
Example #12
0
    def test_get_extension_xml(self):
        app = compute.APIRouter()
        request = webob.Request.blank("/fake/extensions/FOXNSOX")
        request.accept = "application/xml"
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)
        xml = response.body

        root = etree.XML(xml)
        self.assertEqual(root.tag.split('extension')[0], NS)
        self.assertEqual(root.get('alias'), 'FOXNSOX')
        self.assertEqual(root.get('name'), 'Fox In Socks')
        self.assertEqual(root.get('namespace'),
                         'http://www.fox.in.socks/api/ext/pie/v1.0')
        self.assertEqual(root.get('updated'), '2011-01-22T13:25:27-06:00')
        self.assertEqual(root.findtext('{0}description'.format(NS)),
                         'The Fox In Socks Extension')

        xmlutil.validate_schema(root, 'extension')
 def test_controller_action_extension_early(self):
     controller = StubActionController(response_body)
     actions = dict(action='POST')
     res_ext = base_extensions.ResourceExtension('tweedles', controller,
                                                 member_actions=actions)
     ext_controller = StubEarlyExtensionController(extension_body)
     extension = StubControllerExtension()
     cont_ext = base_extensions.ControllerExtension(extension, 'tweedles',
                                                    ext_controller)
     manager = StubExtensionManager(resource_ext=res_ext,
                                    controller_ext=cont_ext)
     app = compute.APIRouter(manager)
     request = webob.Request.blank("/fake/tweedles/foo/action")
     request.method = 'POST'
     request.headers['Content-Type'] = 'application/json'
     request.body = jsonutils.dumps(dict(fooAction=True))
     response = request.get_response(app)
     self.assertEqual(200, response.status_int)
     self.assertEqual(extension_body, response.body)
Example #14
0
 def test_bad_request(self):
     res_ext = base_extensions.ResourceExtension(
         'tweedles', StubController(response_body))
     manager = StubExtensionManager(res_ext)
     app = compute.APIRouter(manager)
     ext_midware = compute_extensions.ExtensionMiddleware(app, manager)
     ser_midware = wsgi.LazySerializationMiddleware(ext_midware)
     request = webob.Request.blank("/fake/tweedles")
     request.method = "POST"
     response = request.get_response(ser_midware)
     self.assertEqual(400, response.status_int)
     self.assertEqual('application/json', response.content_type)
     body = json.loads(response.body)
     expected = {
         "badRequest": {
             "message": "All aboard the fail train!",
             "code": 400
         }
     }
     self.assertDictMatch(expected, body)
Example #15
0
def wsgi_app(inner_app_v2=None, fake_auth_context=None,
        use_no_auth=False, ext_mgr=None, init_only=None):
    if not inner_app_v2:
        inner_app_v2 = compute.APIRouter(ext_mgr, init_only)

    if use_no_auth:
        api_v2 = openstack_api.FaultWrapper(auth.NoAuthMiddleware(
              limits.RateLimitingMiddleware(inner_app_v2)))
    else:
        if fake_auth_context is not None:
            ctxt = fake_auth_context
        else:
            ctxt = context.RequestContext('fake', 'fake', auth_token=True)
        api_v2 = openstack_api.FaultWrapper(api_auth.InjectContext(ctxt,
              limits.RateLimitingMiddleware(inner_app_v2)))

    mapper = urlmap.URLMap()
    mapper['/v2'] = api_v2
    mapper['/'] = openstack_api.FaultWrapper(versions.Versions())
    return mapper
Example #16
0
    def test_list_extensions_json(self):
        app = compute.APIRouter()
        request = webob.Request.blank("/fake/extensions")
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)

        # Make sure we have all the extensions, extra extensions being OK.
        data = jsonutils.loads(response.body)
        names = [
            str(x['name']) for x in data['extensions']
            if str(x['name']) in self.ext_list
        ]
        names.sort()
        self.assertEqual(names, self.ext_list)

        # Ensure all the timestamps are valid according to iso8601
        for ext in data['extensions']:
            iso8601.parse_date(ext['updated'])

        # Make sure that at least Fox in Sox is correct.
        (fox_ext, ) = [
            x for x in data['extensions'] if x['alias'] == 'FOXNSOX'
        ]
        self.assertEqual(
            fox_ext,
            {
                'namespace': 'http://www.fox.in.socks/api/ext/pie/v1.0',
                'name': 'Fox In Socks',
                'updated': '2011-01-22T13:25:27-06:00',
                'description': 'The Fox In Socks Extension',
                'alias': 'FOXNSOX',
                'links': []
            },
        )

        for ext in data['extensions']:
            url = '/fake/extensions/%s' % ext['alias']
            request = webob.Request.blank(url)
            response = request.get_response(app)
            output = jsonutils.loads(response.body)
            self.assertEqual(output['extension']['alias'], ext['alias'])
Example #17
0
    def test_list_extensions_xml(self):
        app = compute.APIRouter()
        request = webob.Request.blank("/fake/extensions")
        request.accept = "application/xml"
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)

        root = etree.XML(response.body)
        self.assertEqual(root.tag.split('extensions')[0], NS)

        # Make sure we have all the extensions, extras extensions being OK.
        exts = root.findall('{0}extension'.format(NS))
        self.assert_(len(exts) >= len(self.ext_list))

        # Make sure that at least Fox in Sox is correct.
        (fox_ext, ) = [x for x in exts if x.get('alias') == 'FOXNSOX']
        self.assertEqual(fox_ext.get('name'), 'Fox In Socks')
        self.assertEqual(fox_ext.get('namespace'),
                         'http://www.fox.in.socks/api/ext/pie/v1.0')
        self.assertEqual(fox_ext.get('updated'), '2011-01-22T13:25:27-06:00')
        self.assertEqual(fox_ext.findtext('{0}description'.format(NS)),
                         'The Fox In Socks Extension')

        xmlutil.validate_schema(root, 'extensions')
 def test_get_resources(self):
     app = compute.APIRouter()
     request = webob.Request.blank("/fake/foxnsocks")
     response = request.get_response(app)
     self.assertEqual(200, response.status_int)
     self.assertEqual(response_body, response.body)
Example #19
0
 def setUp(self):
     super(SchedulerHintsTestCase, self).setUp()
     self.fake_instance = fakes.stub_instance(1, uuid=UUID)
     self.app = compute.APIRouter()
 def test_no_extension_present(self):
     manager = StubExtensionManager(None)
     app = compute.APIRouter(manager)
     request = webob.Request.blank("/blah")
     response = request.get_response(app)
     self.assertEqual(404, response.status_int)
Example #21
0
    def setUp(self):
        super(DiskConfigTestCase, self).setUp()
        self.flags(verbose=True)
        fakes.stub_out_nw_api(self.stubs)

        FAKE_INSTANCES = [
            fakes.stub_instance(1,
                                uuid=MANUAL_INSTANCE_UUID,
                                auto_disk_config=False),
            fakes.stub_instance(2,
                                uuid=AUTO_INSTANCE_UUID,
                                auto_disk_config=True)
        ]

        def fake_instance_get(context, id_):
            for instance in FAKE_INSTANCES:
                if id_ == instance['id']:
                    return instance

        self.stubs.Set(nova.db, 'instance_get', fake_instance_get)

        def fake_instance_get_by_uuid(context, uuid):
            for instance in FAKE_INSTANCES:
                if uuid == instance['uuid']:
                    return instance

        self.stubs.Set(nova.db, 'instance_get_by_uuid',
                       fake_instance_get_by_uuid)

        def fake_instance_get_all(context, *args, **kwargs):
            return FAKE_INSTANCES

        self.stubs.Set(nova.db, 'instance_get_all', fake_instance_get_all)
        self.stubs.Set(nova.db, 'instance_get_all_by_filters',
                       fake_instance_get_all)

        def fake_instance_create(context, inst_, session=None):
            class FakeModel(dict):
                def save(self, session=None):
                    pass

            inst = FakeModel(**inst_)
            inst['id'] = 1
            inst['uuid'] = AUTO_INSTANCE_UUID
            inst['created_at'] = datetime.datetime(2010, 10, 10, 12, 0, 0)
            inst['updated_at'] = datetime.datetime(2010, 10, 10, 12, 0, 0)
            inst['progress'] = 0
            inst['name'] = 'instance-1'  # this is a property

            def fake_instance_get_for_create(context, id_, *args, **kwargs):
                return inst

            self.stubs.Set(nova.db, 'instance_get',
                          fake_instance_get_for_create)
            self.stubs.Set(nova.db, 'instance_update',
                          fake_instance_get_for_create)

            def fake_instance_get_all_for_create(context, *args, **kwargs):
                return [inst]
            self.stubs.Set(nova.db, 'instance_get_all',
                           fake_instance_get_all_for_create)
            self.stubs.Set(nova.db, 'instance_get_all_by_filters',
                           fake_instance_get_all_for_create)

            def fake_instance_add_security_group(context, instance_id,
                                                 security_group_id):
                pass

            self.stubs.Set(nova.db,
                           'instance_add_security_group',
                           fake_instance_add_security_group)

            return inst

        self.stubs.Set(nova.db, 'instance_create', fake_instance_create)

        app = compute.APIRouter()
        app = extensions.ExtensionMiddleware(app)
        app = wsgi.LazySerializationMiddleware(app)
        self.app = app
Example #22
0
 def _set_up_router(self):
     self.flags(osapi_compute_extension=[
         'nova.api.openstack.compute.contrib.select_extensions'
     ],
                osapi_compute_ext_list=['Scheduler_hints'])
     self.app = compute.APIRouter(init_only=('servers', ))
Example #23
0
 def test_get_non_existing_extension_json(self):
     app = compute.APIRouter()
     ext_midware = compute_extensions.ExtensionMiddleware(app)
     request = webob.Request.blank("/fake/extensions/4")
     response = request.get_response(ext_midware)
     self.assertEqual(404, response.status_int)
Example #24
0
    def setUp(self):
        super(DiskConfigTestCase, self).setUp()
        self.flags(verbose=True,
            osapi_compute_extension=[
                'nova.api.openstack.compute.contrib.select_extensions'],
            osapi_compute_ext_list=['Disk_config'])
        nova.tests.image.fake.stub_out_image_service(self.stubs)

        fakes.stub_out_nw_api(self.stubs)

        FAKE_INSTANCES = [
            fakes.stub_instance(1,
                                uuid=MANUAL_INSTANCE_UUID,
                                auto_disk_config=False),
            fakes.stub_instance(2,
                                uuid=AUTO_INSTANCE_UUID,
                                auto_disk_config=True)
        ]

        def fake_instance_get(context, id_):
            for instance in FAKE_INSTANCES:
                if id_ == instance['id']:
                    return instance

        self.stubs.Set(nova.db, 'instance_get', fake_instance_get)

        def fake_instance_get_by_uuid(context, uuid):
            for instance in FAKE_INSTANCES:
                if uuid == instance['uuid']:
                    return instance

        self.stubs.Set(nova.db, 'instance_get_by_uuid',
                       fake_instance_get_by_uuid)

        def fake_instance_get_all(context, *args, **kwargs):
            return FAKE_INSTANCES

        self.stubs.Set(nova.db, 'instance_get_all', fake_instance_get_all)
        self.stubs.Set(nova.db, 'instance_get_all_by_filters',
                       fake_instance_get_all)

        def fake_instance_create(context, inst_, session=None):
            class FakeModel(dict):
                def save(self, session=None):
                    pass

            inst = FakeModel(**inst_)
            inst['id'] = 1
            inst['uuid'] = AUTO_INSTANCE_UUID
            inst['created_at'] = datetime.datetime(2010, 10, 10, 12, 0, 0)
            inst['updated_at'] = datetime.datetime(2010, 10, 10, 12, 0, 0)
            inst['progress'] = 0
            inst['name'] = 'instance-1'  # this is a property
            inst['task_state'] = ''
            inst['vm_state'] = ''
            # NOTE(vish): db create translates security groups into model
            #             objects. Translate here so tests pass
            inst['security_groups'] = [{'name': group}
                                       for group in inst['security_groups']]

            def fake_instance_get_for_create(context, id_, *args, **kwargs):
                return (inst, inst)

            self.stubs.Set(nova.db, 'instance_update_and_get_original',
                          fake_instance_get_for_create)

            def fake_instance_get_all_for_create(context, *args, **kwargs):
                return [inst]
            self.stubs.Set(nova.db, 'instance_get_all',
                           fake_instance_get_all_for_create)
            self.stubs.Set(nova.db, 'instance_get_all_by_filters',
                           fake_instance_get_all_for_create)

            def fake_instance_add_security_group(context, instance_id,
                                                 security_group_id):
                pass

            self.stubs.Set(nova.db,
                           'instance_add_security_group',
                           fake_instance_add_security_group)

            return inst

        self.stubs.Set(nova.db, 'instance_create', fake_instance_create)

        self.app = compute.APIRouter(init_only=('servers', 'images'))
 def test_get_non_existing_extension_json(self):
     app = compute.APIRouter(init_only=('extensions',))
     request = webob.Request.blank("/fake/extensions/4")
     response = request.get_response(app)
     self.assertEqual(404, response.status_int)
Example #26
0
    def setUp(self):
        super(DiskConfigTestCase, self).setUp()
        self.flags(verbose=True,
                   osapi_compute_extension=[
                       'nova.api.openstack.compute.contrib.select_extensions'
                   ],
                   osapi_compute_ext_list=['Disk_config'])
        self._setup_fake_image_service()

        fakes.stub_out_nw_api(self.stubs)

        FAKE_INSTANCES = [
            fakes.stub_instance(1,
                                uuid=MANUAL_INSTANCE_UUID,
                                auto_disk_config=False),
            fakes.stub_instance(2,
                                uuid=AUTO_INSTANCE_UUID,
                                auto_disk_config=True)
        ]

        def fake_instance_get(context, id_):
            for instance in FAKE_INSTANCES:
                if id_ == instance['id']:
                    return instance

        self.stubs.Set(db, 'instance_get', fake_instance_get)

        def fake_instance_get_by_uuid(context, uuid, columns_to_join=None):
            for instance in FAKE_INSTANCES:
                if uuid == instance['uuid']:
                    return instance

        self.stubs.Set(db, 'instance_get_by_uuid', fake_instance_get_by_uuid)

        def fake_instance_get_all(context, *args, **kwargs):
            return FAKE_INSTANCES

        self.stubs.Set(db, 'instance_get_all', fake_instance_get_all)
        self.stubs.Set(db, 'instance_get_all_by_filters',
                       fake_instance_get_all)

        def fake_instance_create(context, inst_, session=None):
            inst = fake_instance.fake_db_instance(
                **{
                    'id': 1,
                    'uuid': AUTO_INSTANCE_UUID,
                    'created_at': datetime.datetime(2010, 10, 10, 12, 0, 0),
                    'updated_at': datetime.datetime(2010, 10, 10, 12, 0, 0),
                    'progress': 0,
                    'name': 'instance-1',  # this is a property
                    'task_state': '',
                    'vm_state': '',
                    'auto_disk_config': inst_['auto_disk_config'],
                    'security_groups': inst_['security_groups'],
                })

            def fake_instance_get_for_create(context, id_, *args, **kwargs):
                return (inst, inst)

            self.stubs.Set(db, 'instance_update_and_get_original',
                           fake_instance_get_for_create)

            def fake_instance_get_all_for_create(context, *args, **kwargs):
                return [inst]

            self.stubs.Set(db, 'instance_get_all',
                           fake_instance_get_all_for_create)
            self.stubs.Set(db, 'instance_get_all_by_filters',
                           fake_instance_get_all_for_create)

            def fake_instance_add_security_group(context, instance_id,
                                                 security_group_id):
                pass

            self.stubs.Set(db, 'instance_add_security_group',
                           fake_instance_add_security_group)

            return inst

        self.stubs.Set(db, 'instance_create', fake_instance_create)

        self.app = compute.APIRouter(init_only=('servers', 'images'))