adsabs / adsws

ADS web services
Other
2 stars 15 forks source link

Paths still not configured properly (Database) #11

Closed vsudilov closed 9 years ago

vsudilov commented 10 years ago

Provision works after changing SQLITE urls in alembic.ini and instance/local_config.py in the sense that the container is built without problems. Also, running python wsgi.py does not produce any errors. However, curl localhost:6002 produces the following:

root@8582527807ea:/adsws# curl localhost:6002
INFO:werkzeug:127.0.0.1 - - [11/Sep/2014 13:09:49] "GET / HTTP/1.1" 500 -
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request.  Either the server is overloaded or there is an error in the application.</p>
root@8582527807ea:/adsws# ERROR:werkzeug:Error on request:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 177, in run_wsgi
    execute(self.server.app)
  File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 165, in execute
    application_iter = app(environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 648, in __call__
    return app(environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/adsws/adsws/middleware.py", line 58, in __call__
    return self.app(environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1479, in full_dispatch_request
    response = self.process_response(response)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1693, in process_response
    self.save_session(ctx.session, response)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 837, in save_session
    return self.session_interface.save_session(self, session, response)
  File "/adsws/adsws/ext/session/interface.py", line 150, in save_session
    self.backend.set(sid,
  File "/usr/local/lib/python2.7/dist-packages/flask/helpers.py", line 724, in __get__
    value = self.func(obj)
  File "/adsws/adsws/ext/session/interface.py", line 82, in backend
    if isinstance(storage_string, six.string_types) \
  File "/adsws/adsws/ext/session/backends/sqlalchemy.py", line 51, in __init__
    self.model.__tablename__):
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/sqlite/base.py", line 791, in has_table
    cursor = _pragma_cursor(connection.execute(statement))
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1751, in execute
    connection = self.contextual_connect(close_with_result=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1799, in contextual_connect
    self.pool.connect(),
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 338, in connect
    return _ConnectionFairy._checkout(self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 641, in _checkout
    fairy = _ConnectionRecord.checkout(pool)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 440, in checkout
    rec = pool._do_get()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 1055, in _do_get
    return self._create_connection()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 285, in _create_connection
    return _ConnectionRecord(self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 411, in __init__
    self.connection = self.__connect()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 537, in __connect
    connection = self.__pool._creator()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/strategies.py", line 96, in connect
    connection_invalidated=invalidated
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/strategies.py", line 90, in connect
    return dialect.connect(*cargs, **cparams)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 377, in connect
    return self.dbapi.connect(*cargs, **cparams)
OperationalError: (OperationalError) unable to open database file None None
vsudilov commented 10 years ago

As a side note, the database is located at /adsws/adsws/adsws.sqlite -- is this intended?\

Would it be easier to just go ahead and connect to a postgres instance on localhost?

romanchyla commented 10 years ago

no, this is not intended - are you sure you are using absolute path? it is deployed on adswhy (now) with the following:

alembic.ini sqlalchemy.url = sqlite:///adsws.sqlite

instance/local_config.py SQLALCHEMY_DATABASE_URI = 'sqlite:////proj.adswhy/adsws/adsws.sqlite'

(notice the four ////)

On Thu, Sep 11, 2014 at 9:13 AM, Vladimir Sudilovsky < notifications@github.com> wrote:

As a side note, the database is located at /adsws/adsws/adsws.sqlite -- is this intended?

— Reply to this email directly or view it on GitHub https://github.com/adsabs/adsws/issues/11#issuecomment-55261328.

vsudilov commented 10 years ago

I have: sqlalchemy.url = sqlite:///adsws/adsws.sqlite SQLALCHEMY_DATABASE_URI = 'sqlite:///adsws/adsws.sqlite'

I'll change the latter to four / now.

vsudilov commented 10 years ago

alembic.ini

vagrant@ubuntu-12:/vagrant/dockerfiles/api_with_bumblebee$ head -n 30 alembic.ini 
# A generic, single database configuration.

[alembic]
# path to migration scripts
script_location = alembic

# template used to generate migration files
# file_template = %%(rev)s_%%(slug)s

# max length of characters to apply to the
# "slug" field
#truncate_slug_length = 40

# set to 'true' to run the environment during
# the 'revision' command, regardless of autogenerate
# revision_environment = false

# set to 'true' to allow .pyc and .pyo files without
# a source .py file to be detected as revisions in the
# versions/ directory
# sourceless = false

# sqlalchemy.url = driver://user:pass@localhost/dbname
sqlalchemy.url = sqlite:///adsws/adsws.sqlite

# Logging configuration
[loggers]
keys = root,sqlalchemy,alembic

local-config.py

vagrant@ubuntu-12:/vagrant/dockerfiles/api_with_bumblebee$ cat local_config.py 

# Automatically generated by: python manage.py create_local_config

SECRET_KEY ='bd19d213dcdb6c444759fe9404dd3003d6d736e3f999a914'

ACCOUNT_VERIFICATION_SECRET ='b9688f02e3e32db123dd209bdc076df3297bb6ed28ae2fa3'

DEBUG = True
TESTING=False

# Flask-Sqlalchemy: http://packages.python.org/Flask-SQLAlchemy/config.html
SQLALCHEMY_ECHO = False

CLASSIC_LOGIN_URL = 'http://adsabs.harvard.edu/cgi-bin/maint/manage_account/credentials'

SITE_SECURE_URL = 'http://0.0.0.0:5000'

SQLALCHEMY_DATABASE_URI = 'sqlite:////adsws/adsws.sqlite'

OAUTH2_CACHE_TYPE='simple'

import logging
logging.basicConfig(level=logging.DEBUG)

# Stuff that should be added for every application
CORE_PACKAGES = []    

Error in build:

Step 12 : RUN cd /adsws && alembic upgrade head
 ---> Running in 28f786801183
INFO  [alembic.migration] Context impl SQLiteImpl.
INFO  [alembic.migration] Will assume non-transactional DDL.
INFO  [alembic.migration] Running upgrade None -> 51f3b3b5cd5d, Creating basic DB structure
INFO  [alembic.migration] Running upgrade 51f3b3b5cd5d -> 33d84dc97ea1, persistent session storage in database
INFO  [alembic.migration] Running upgrade 33d84dc97ea1 -> 26889be04d70, creating default user accounts
Traceback (most recent call last):
  File "/usr/local/bin/alembic", line 9, in <module>
    load_entry_point('alembic==0.6.7', 'console_scripts', 'alembic')()
  File "/usr/local/lib/python2.7/dist-packages/alembic/config.py", line 306, in main
    CommandLine(prog=prog).main(argv=argv)
  File "/usr/local/lib/python2.7/dist-packages/alembic/config.py", line 300, in main
    self.run_cmd(cfg, options)
  File "/usr/local/lib/python2.7/dist-packages/alembic/config.py", line 286, in run_cmd
    **dict((k, getattr(options, k)) for k in kwarg)
  File "/usr/local/lib/python2.7/dist-packages/alembic/command.py", line 129, in upgrade
    script.run_env()
  File "/usr/local/lib/python2.7/dist-packages/alembic/script.py", line 208, in run_env
    util.load_python_file(self.dir, 'env.py')
  File "/usr/local/lib/python2.7/dist-packages/alembic/util.py", line 230, in load_python_file
    module = load_module_py(module_id, path)
  File "/usr/local/lib/python2.7/dist-packages/alembic/compat.py", line 63, in load_module_py
    mod = imp.load_source(module_id, path, fp)
  File "alembic/env.py", line 70, in <module>
    run_migrations_online()
  File "alembic/env.py", line 63, in run_migrations_online
    context.run_migrations()
  File "<string>", line 7, in run_migrations
  File "/usr/local/lib/python2.7/dist-packages/alembic/environment.py", line 696, in run_migrations
    self.get_context().run_migrations(**kw)
  File "/usr/local/lib/python2.7/dist-packages/alembic/migration.py", line 266, in run_migrations
    change(**kw)
  File "alembic/versions/26889be04d70_creating_default_user_accounts.py", line 45, in upgrade
    db.session.commit()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 150, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 776, in commit
    self.transaction.commit()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 377, in commit
    self._prepare_impl()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 357, in _prepare_impl
    self.session.flush()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1919, in flush
    self._flush(objects)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2037, in _flush
    transaction.rollback(_capture_exception=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 60, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2001, in _flush
    flush_context.execute()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute
    rec.execute(self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 526, in execute
    uow
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 65, in save_obj
    mapper, table, insert)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 570, in _emit_insert_statements
    execute(statement, multiparams)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 729, in execute
    return meth(self, multiparams, params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 321, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 826, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 958, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1160, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 951, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 436, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (OperationalError) no such table: users u'INSERT INTO users (id, login, name, email, password, active, confirmed_at, last_login_at, current_login_at, last_login_ip, current_login_ip, login_count, registered_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' (0, 'anonymous@adslabs.org', 'Anonymous', 'anonymous@adslabs.org', '$pbkdf2-sha512$19000$jzEmRGiNUWoNwZjzfi.FEA$fBdOcwJOGHhNJq0b6m3R5ectQtq4ajyT7e5U6VoFSFzZIZpTfqe0BwfL14a3Bpt33z29yUCi0gGjNgJOlnupkg', None, None, None, None, None, None, None, None)
romanchyla commented 10 years ago

the alembic.ini still needs four '////'

On Thu, Sep 11, 2014 at 9:46 AM, Vladimir Sudilovsky < notifications@github.com> wrote:

alembic.ini

vagrant@ubuntu-12:/vagrant/dockerfiles/api_with_bumblebee$ head -n 30 alembic.ini

A generic, single database configuration.

[alembic]

path to migration scripts

script_location = alembic

template used to generate migration files

filetemplate = %%(rev)s%%(slug)s

max length of characters to apply to the

"slug" field

truncate_slug_length = 40

set to 'true' to run the environment during

the 'revision' command, regardless of autogenerate

revision_environment = false

set to 'true' to allow .pyc and .pyo files without

a source .py file to be detected as revisions in the

versions/ directory

sourceless = false

sqlalchemy.url = driver://user:pass@localhost/dbname

sqlalchemy.url = sqlite:///adsws/adsws.sqlite

Logging configuration

[loggers] keys = root,sqlalchemy,alembic

local-config.py

vagrant@ubuntu-12:/vagrant/dockerfiles/api_with_bumblebee$ cat local_config.py

Automatically generated by: python manage.py create_local_config

SECRET_KEY ='bd19d213dcdb6c444759fe9404dd3003d6d736e3f999a914'

ACCOUNT_VERIFICATION_SECRET ='b9688f02e3e32db123dd209bdc076df3297bb6ed28ae2fa3'

DEBUG = True TESTING=False

Flask-Sqlalchemy: http://packages.python.org/Flask-SQLAlchemy/config.html

SQLALCHEMY_ECHO = False

CLASSIC_LOGIN_URL = 'http://adsabs.harvard.edu/cgi-bin/maint/manage_account/credentials'

SITE_SECURE_URL = 'http://0.0.0.0:5000'

SQLALCHEMY_DATABASE_URI = 'sqlite:////adsws/adsws.sqlite'

OAUTH2_CACHE_TYPE='simple'

import logging logging.basicConfig(level=logging.DEBUG)

Stuff that should be added for every application

CORE_PACKAGES = []


Error in build:

Step 12 : RUN cd /adsws && alembic upgrade head ---> Running in 28f786801183 INFO [alembic.migration] Context impl SQLiteImpl. INFO [alembic.migration] Will assume non-transactional DDL. INFO [alembic.migration] Running upgrade None -> 51f3b3b5cd5d, Creating basic DB structure INFO [alembic.migration] Running upgrade 51f3b3b5cd5d -> 33d84dc97ea1, persistent session storage in database INFO [alembic.migration] Running upgrade 33d84dc97ea1 -> 26889be04d70, creating default user accounts Traceback (most recent call last): File "/usr/local/bin/alembic", line 9, in load_entry_point('alembic==0.6.7', 'console_scripts', 'alembic')() File "/usr/local/lib/python2.7/dist-packages/alembic/config.py", line 306, in main CommandLine(prog=prog).main(argv=argv) File "/usr/local/lib/python2.7/dist-packages/alembic/config.py", line 300, in main self.run_cmd(cfg, options) File "/usr/local/lib/python2.7/dist-packages/alembic/config.py", line 286, in run_cmd dict((k, getattr(options, k)) for k in kwarg) File "/usr/local/lib/python2.7/dist-packages/alembic/command.py", line 129, in upgrade script.run_env() File "/usr/local/lib/python2.7/dist-packages/alembic/script.py", line 208, in run_env util.load_python_file(self.dir, 'env.py') File "/usr/local/lib/python2.7/dist-packages/alembic/util.py", line 230, in load_python_file module = load_module_py(module_id, path) File "/usr/local/lib/python2.7/dist-packages/alembic/compat.py", line 63, in load_module_py mod = imp.load_source(module_id, path, fp) File "alembic/env.py", line 70, in run_migrations_online() File "alembic/env.py", line 63, in run_migrations_online context.run_migrations() File "", line 7, in run_migrations File "/usr/local/lib/python2.7/dist-packages/alembic/environment.py", line 696, in run_migrations self.get_context().run_migrations(kw) File "/usr/local/lib/python2.7/dist-packages/alembic/migration.py", line 266, in run_migrations change(*_kw) File "alembic/versions/26889be04d70_creating_default_user_accounts.py", line 45, in upgrade db.session.commit() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 150, in do return getattr(self.registry(), name)(_args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 776, in commit self.transaction.commit() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 377, in commit self._prepare_impl() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 357, in _prepare_impl self.session.flush() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1919, in flush self._flush(objects) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2037, in _flush transaction.rollback(_capture_exception=True) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 60, in exit compat.reraise(exc_type, exc_value, exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2001, in _flush flush_context.execute() File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute rec.execute(self) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 526, in execute uow File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 65, in save_obj mapper, table, insert) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 570, in _emit_insert_statements execute(statement, multiparams) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 729, in execute return meth(self, multiparams, params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 321, in _execute_on_connection return connection._execute_clauseelement(self, multiparams, params) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 826, in _execute_clauseelement compiled_sql, distilled_params File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 958, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1160, in _handle_dbapi_exception exc_info File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 951, in _execute_context context) File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 436, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.OperationalError: (OperationalError) no such table: users u'INSERT INTO users (id, login, name, email, password, active, confirmed_at, last_login_at, current_login_at, last_login_ip, current_login_ip, login_count, registered_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' (0, 'anonymous@adslabs.org', 'Anonymous', 'anonymous@adslabs.org', '$pbkdf2-sha512$19000$jzEmRGiNUWoNwZjzfi.FEA$fBdOcwJOGHhNJq0b6m3R5ectQtq4ajyT7e5U6VoFSFzZIZpTfqe0BwfL14a3Bpt33z29yUCi0gGjNgJOlnupkg', None, None, None, None, None, None, None, None)

— Reply to this email directly or view it on GitHub https://github.com/adsabs/adsws/issues/11#issuecomment-55265576.

vsudilov commented 10 years ago

Oh, your previous comment showed three. Trying with four now.

romanchyla commented 9 years ago

this was solved recently, alembic will get the location of the datbase from the application - but relative paths should not be used, because every application has a different base