Datastore creating at prerun with set permissions
This commit is contained in:
parent
6f45059c03
commit
1d5700b842
|
@ -66,12 +66,12 @@ def init_db():
|
||||||
print '[prerun] Start init_db...'
|
print '[prerun] Start init_db...'
|
||||||
|
|
||||||
db_command = ['paster', '--plugin=ckan', 'db', 'init', '-c', ckan_ini]
|
db_command = ['paster', '--plugin=ckan', 'db', 'init', '-c', ckan_ini]
|
||||||
|
|
||||||
print '[prerun] Initializing or upgrading db - start using paster db init'
|
print '[prerun] Initializing or upgrading db - start using paster db init'
|
||||||
try:
|
try:
|
||||||
# run init scripts
|
# run init scripts
|
||||||
subprocess.check_output(db_command, stderr=subprocess.STDOUT)
|
subprocess.check_output(db_command, stderr=subprocess.STDOUT)
|
||||||
|
|
||||||
print '[prerun] Initializing or upgrading db - end'
|
print '[prerun] Initializing or upgrading db - end'
|
||||||
except subprocess.CalledProcessError, e:
|
except subprocess.CalledProcessError, e:
|
||||||
if 'OperationalError' in e.output:
|
if 'OperationalError' in e.output:
|
||||||
|
@ -85,6 +85,55 @@ def init_db():
|
||||||
raise e
|
raise e
|
||||||
print '[prerun] Initializing or upgrading db - finish'
|
print '[prerun] Initializing or upgrading db - finish'
|
||||||
|
|
||||||
|
|
||||||
|
def init_datastore():
|
||||||
|
|
||||||
|
conn_str = os.environ.get('CKAN_DATASTORE_WRITE_URL')
|
||||||
|
if not conn_str:
|
||||||
|
print '[prerun] Skipping datastore initialization'
|
||||||
|
return
|
||||||
|
|
||||||
|
datastore_perms_command = ['paster', '--plugin=ckan', 'datastore',
|
||||||
|
'set-permissions', '-c', ckan_ini]
|
||||||
|
|
||||||
|
connection = psycopg2.connect(conn_str)
|
||||||
|
cursor = connection.cursor()
|
||||||
|
|
||||||
|
print '[prerun] Initializing datastore db - start'
|
||||||
|
try:
|
||||||
|
datastore_perms = subprocess.Popen(
|
||||||
|
datastore_perms_command,
|
||||||
|
stdout=subprocess.PIPE)
|
||||||
|
|
||||||
|
perms_sql = datastore_perms.stdout.read()
|
||||||
|
# Remove internal pg command as psycopg2 does not like it
|
||||||
|
perms_sql = re.sub('\\\\connect \"(.*)\"', '', perms_sql)
|
||||||
|
cursor.execute(perms_sql)
|
||||||
|
for notice in connection.notices:
|
||||||
|
print notice
|
||||||
|
|
||||||
|
connection.commit()
|
||||||
|
|
||||||
|
print '[prerun] Initializing datastore db - end'
|
||||||
|
print datastore_perms.stdout.read()
|
||||||
|
except psycopg2.Error as e:
|
||||||
|
print '[prerun] Could not initialize datastore'
|
||||||
|
print str(e)
|
||||||
|
|
||||||
|
except subprocess.CalledProcessError, e:
|
||||||
|
if 'OperationalError' in e.output:
|
||||||
|
print e.output
|
||||||
|
print '[prerun] Database not ready, waiting a bit before exit...'
|
||||||
|
time.sleep(5)
|
||||||
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
print e.output
|
||||||
|
raise e
|
||||||
|
finally:
|
||||||
|
cursor.close()
|
||||||
|
connection.close()
|
||||||
|
|
||||||
|
|
||||||
def create_sysadmin():
|
def create_sysadmin():
|
||||||
|
|
||||||
print '[prerun] Start create_sysadmin...'
|
print '[prerun] Start create_sysadmin...'
|
||||||
|
@ -131,5 +180,7 @@ if __name__ == '__main__':
|
||||||
check_db_connection()
|
check_db_connection()
|
||||||
check_solr_connection()
|
check_solr_connection()
|
||||||
init_db()
|
init_db()
|
||||||
|
if os.environ.get('CKAN_DATASTORE_WRITE_URL'):
|
||||||
|
init_datastore()
|
||||||
create_sysadmin()
|
create_sysadmin()
|
||||||
#time.sleep(60000) # don't end the prerun script to allow container dock and debug
|
#time.sleep(60000) # don't end the prerun script to allow container dock and debug
|
||||||
|
|
Loading…
Reference in New Issue