Пример #1
0
 def get_v1_endpoint():
     """Entry point for API v1"""
     if not auth.is_authenticated():
         return make_json_response(v1_root)
     result = v1_root.copy()
     result['services'] = {
         'keystone': app.config['KEYSTONE_URI'],
         'nova-billing': _get_os_service_url('nova-billing')
     }
     return make_json_response(result)
Пример #2
0
 def get_v1_endpoint():
     """Entry point for API v1"""
     if not auth.is_authenticated():
         return make_json_response(v1_root)
     result = v1_root.copy()
     result['services'] = {
         'keystone': app.config['KEYSTONE_URI'],
         'nova-billing': _get_os_service_url('nova-billing')
     }
     return make_json_response(result)
Пример #3
0
    def test_raises_nicely(self):
        class TestClass(object):
            def __repr__(self):
                return "TEST CLASS"

        with self.app.test_request_context():
            try:
                make_json_response({"a": TestClass()})
            except TypeError, error:
                pass
            else:
Пример #4
0
    def test_raises_nicely(self):
        class TestClass(object):
            def __repr__(self):
                return 'TEST CLASS'

        with self.app.test_request_context():
            try:
                make_json_response({'a': TestClass()})
            except TypeError, error:
                pass
            else:
Пример #5
0
def reset_password():
    if not g.config('password-reset', 'enabled'):
        abort(404)
    data = parse_request_data(allowed=_RESET_SCHEMA)
    user = _find_user(data)
    if user is None:
        return make_json_response(None, status_code=204)
    token = ResetTokensDAO.create(user.id, user.email)
    send_reset_password(user.email, token.code, user.name,
                        link_template=data.get('link-template'),
                        greeting=getattr(user, 'fullname', ''))
    return make_json_response(None, status_code=204)
Пример #6
0
def reset_password():
    if not g.config('password-reset', 'enabled'):
        abort(404)
    data = parse_request_data(allowed=_RESET_SCHEMA)
    user = _find_user(data)
    if user is None:
        return make_json_response(None, status_code=204)
    token = ResetTokensDAO.create(user.id, user.email)
    send_reset_password(user.email,
                        token.code,
                        user.name,
                        link_template=data.get('link-template'),
                        greeting=getattr(user, 'fullname', ''))
    return make_json_response(None, status_code=204)
Пример #7
0
 def test_dates_in_response(self):
     self.app.config["PRETTY_PRINT_JSON"] = False
     timestamp = datetime(2012, 9, 13, 15, 03, 42)
     with self.app.test_request_context():
         resp = make_json_response({"created": timestamp})
     expected = '{"created":"2012-09-13T15:03:42.000000Z"}'
     self.assertEquals(resp.data, expected)
Пример #8
0
 def test_dates_in_response(self):
     self.app.config['PRETTY_PRINT_JSON'] = False
     timestamp = datetime(2012, 9, 13, 15, 03, 42)
     with self.app.test_request_context():
         resp = make_json_response({'created': timestamp})
     expected = '{"created":"2012-09-13T15:03:42.000000Z"}'
     self.assertEquals(resp.data, expected)
Пример #9
0
    def test_pretty_response(self):
        self.app.config['PRETTY_PRINT_JSON'] = True

        with self.app.test_request_context():
            resp = make_json_response({'one': 1})
        self.assertEquals(resp.data, '{\n    "one": 1\n}\n')
        self.assertEquals(resp.status_code, 200)
        self.assertEquals(resp.headers.get('Content-type'), 'application/json')
Пример #10
0
    def test_pretty_response(self):
        self.app.config["PRETTY_PRINT_JSON"] = True

        with self.app.test_request_context():
            resp = make_json_response({"one": 1})
        self.assertEquals(resp.data, '{\n    "one": 1\n}\n')
        self.assertEquals(resp.status_code, 200)
        self.assertEquals(resp.headers.get("Content-type"), "application/json")
Пример #11
0
def drop_invite(code):
    """Refuse to accept invite"""
    invite, user = _invite_and_user(code)
    try:
        user.delete()
    except osc_exc.NotFound:
        abort(404)

    InvitesDAO.complete_for_user(invite.user_id)
    return make_json_response(None, status_code=204)
Пример #12
0
def drop_invite(code):
    """Refuse to accept invite"""
    invite, user = _invite_and_user(code)
    try:
        user.delete()
    except osc_exc.NotFound:
        abort(404)

    InvitesDAO.complete_for_user(invite.user_id)
    return make_json_response(None, status_code=204)
Пример #13
0
def apply_password_reset(code):
    if not g.config('password-reset', 'enabled'):
        abort(404)
    data = parse_request_data(required=_APPLY_SCHEMA)
    token = ResetTokensDAO.get(code)
    if not token or token.complete:
        abort(404)
    user = fetch_user(token.user_id, admin_mode=True)
    update_user_data(user, data)
    ResetTokensDAO.complete_for_user(token.user_id)
    return make_json_response(None, status_code=204)
Пример #14
0
def apply_password_reset(code):
    if not g.config('password-reset', 'enabled'):
        abort(404)
    data = parse_request_data(required=_APPLY_SCHEMA)
    token = ResetTokensDAO.get(code)
    if not token or token.complete:
        abort(404)
    user = fetch_user(token.user_id, admin_mode=True)
    update_user_data(user, data)
    ResetTokensDAO.complete_for_user(token.user_id)
    return make_json_response(None, status_code=204)
Пример #15
0
def accept_invite(code):
    data = parse_request_data(_ACCEPT_SCHEMA, _ACCEPT_REQUIRES)
    invite, user = _invite_and_user(code)

    data['enabled'] = True
    try:
        update_user_data(user, data)
        user = auth.admin_client_set().identity_admin.users.get(user.id)
    except osc_exc.NotFound:
        abort(404)

    InvitesDAO.complete_for_user(user.id)
    return make_json_response(user_to_view(user, invite), 200)
Пример #16
0
    def _exception_response(self, error, response, code, add_headers):
        if not isinstance(response, dict):  # pragma: nocover
            response = { 'message': str(response) }
        response['path'] = flask.request.path
        response['method'] = flask.request.method

        tb_mode = self.config['TRACEBACK_IN_RESPONSE']
        if tb_mode == 'always' or (tb_mode == 'auth_500' and code == 500
                                   and auth.is_authenticated()):
            tb = _traceback_to_json(error)
            if tb:
                response['traceback'] = tb
        return make_json_response(response, code, add_headers)
Пример #17
0
def accept_invite(code):
    data = parse_request_data(_ACCEPT_SCHEMA, _ACCEPT_REQUIRES)
    invite, user = _invite_and_user(code)

    data['enabled'] = True
    try:
        update_user_data(user, data)
        user = auth.admin_client_set().identity_admin.users.get(user.id)
    except osc_exc.NotFound:
        abort(404)

    InvitesDAO.complete_for_user(user.id)
    return make_json_response(user_to_view(user, invite), 200)
Пример #18
0
def altai_stats():
    cs = auth.admin_client_set()
    tenants = cs.identity_admin.tenants.list()
    users = cs.identity_admin.users.list()

    # TODO(imelnikov): should we ignore servers in systenant?
    servers = cs.compute.servers.list(search_opts={'all_tenants': 1})
    images = list_all_images(cs.image.images)
    global_images = [image for image in images if image.is_public]

    return make_json_response({
        'projects': len(tenants) - 1,  # not counting systenant
        'instances': len(servers),
        'users': len(users),
        'total-images': len(images),
        'global-images': len(global_images),
        'by-project-stats-href': url_for('stats.list_stats_by_project')
    })
Пример #19
0
def get_project_stats(project_id):
    tenant = get_tenant(project_id)
    acs = auth.admin_client_set()
    users = acs.identity_admin.tenants.list_users(tenant.id)

    tcs = auth.client_set_for_tenant(project_id, fallback_to_api=g.is_admin)
    servers = tcs.compute.servers.list()
    images = tcs.image.images.list()
    local_images = [image for image in images
                    if image.owner == tenant.id]

    return make_json_response({
        u'project': link_for_tenant(tenant),
        u'instances': len(servers),
        u'members': len(users),
        u'local-images': len(local_images),
        u'total-images': len(images),
        'href': url_for('stats.get_project_stats',
                        project_id=tenant.id)
    })
Пример #20
0
def get_project_stats(project_id):
    tenant = get_tenant(project_id)
    acs = auth.admin_client_set()
    users = acs.identity_admin.tenants.list_users(tenant.id)

    tcs = auth.client_set_for_tenant(project_id, fallback_to_api=g.is_admin)
    servers = tcs.compute.servers.list()
    images = tcs.image.images.list()
    local_images = [image for image in images if image.owner == tenant.id]

    return make_json_response({
        u'project':
        link_for_tenant(tenant),
        u'instances':
        len(servers),
        u'members':
        len(users),
        u'local-images':
        len(local_images),
        u'total-images':
        len(images),
        'href':
        url_for('stats.get_project_stats', project_id=tenant.id)
    })
Пример #21
0
def altai_stats():
    cs = auth.admin_client_set()
    tenants = cs.identity_admin.tenants.list()
    users = cs.identity_admin.users.list()

    # TODO(imelnikov): should we ignore servers in systenant?
    servers = cs.compute.servers.list(search_opts={'all_tenants': 1})
    images = list_all_images(cs.image.images)
    global_images = [image for image in images if image.is_public]

    return make_json_response({
        'projects':
        len(tenants) - 1,  # not counting systenant
        'instances':
        len(servers),
        'users':
        len(users),
        'total-images':
        len(images),
        'global-images':
        len(global_images),
        'by-project-stats-href':
        url_for('stats.list_stats_by_project')
    })
Пример #22
0
def get_user_by_code(code):
    invite, user = _invite_and_user(code)
    return make_json_response(user_to_view(user, invite))
Пример #23
0
 def test_dates_in_pretty_response(self):
     self.app.config['PRETTY_PRINT_JSON'] = True
     timestamp = datetime(2012, 9, 13, 15, 03, 42)
     with self.app.test_request_context():
         resp = make_json_response({'created': timestamp})
     self.assertTrue('"2012-09-13T15:03:42.000000Z"' in resp.data)
Пример #24
0
def get_user_by_code(code):
    invite, user = _invite_and_user(code)
    return make_json_response(user_to_view(user, invite))
Пример #25
0
 def test_empty_400_response(self):
     with self.app.test_request_context():
         resp = make_json_response(None, status_code=400)
     self.assertEquals(resp.data, '')
     self.assertEquals(resp.status_code, 400)
     self.assertEquals(resp.headers.get('Content-type'), 'application/json')
Пример #26
0
 def test_empty_400_response(self):
     with self.app.test_request_context():
         resp = make_json_response(None, status_code=400)
     self.assertEquals(resp.data, "")
     self.assertEquals(resp.status_code, 400)
     self.assertEquals(resp.headers.get("Content-type"), "application/json")
Пример #27
0
 def get_versions():
     """REST API entry point."""
     return make_json_response(versions)
Пример #28
0
def get_node(name):
    try:
        hosts = g.client_set.compute.hosts.get(name)
    except osc_exc.NotFound:
        abort(404)
    return make_json_response(_node_to_view(name, hosts))
Пример #29
0
 def get_versions():
     """REST API entry point."""
     return make_json_response(versions)
Пример #30
0
 def test_dates_in_pretty_response(self):
     self.app.config["PRETTY_PRINT_JSON"] = True
     timestamp = datetime(2012, 9, 13, 15, 03, 42)
     with self.app.test_request_context():
         resp = make_json_response({"created": timestamp})
     self.assertTrue('"2012-09-13T15:03:42.000000Z"' in resp.data)
Пример #31
0
def get_log_record(record_id):
    result = record_to_view(AuditDAO.get(record_id))
    return make_json_response(result)
Пример #32
0
def get_node(name):
    try:
        hosts = g.client_set.compute.hosts.get(name)
    except osc_exc.NotFound:
        abort(404)
    return make_json_response(_node_to_view(name, hosts))