fix: make python commands modular and reusable

This commit is contained in:
Revant Nandgaonkar 2020-03-20 20:56:23 +05:30
parent 8ce9d4214d
commit 7c356ccb27
8 changed files with 112 additions and 95 deletions

View File

@ -1,7 +1,10 @@
import frappe
from frappe.utils.scheduler import start_scheduler
def main():
print("Starting background scheduler . . .")
start_scheduler()
exit(0)
if __name__ == "__main__":
main()

View File

@ -20,10 +20,13 @@ def backup(sites, with_files=False):
print("private files backup taken -", odb.backup_path_private_files, "- on", now())
frappe.destroy()
def main():
installed_sites = ":".join(get_sites())
sites = os.environ.get("SITES", installed_sites).split(":")
with_files=True if os.environ.get("WITH_FILES") else False
backup(sites, with_files)
exit(0)
if __name__ == "__main__":
main()

View File

@ -108,6 +108,13 @@ def check_redis_socketio(retry=10, delay=3, print_attempt=True):
print("Connection to redis socketio timed out")
exit(1)
# Get site_config.json
def get_site_config(site_name):
site_config = None
with open('{site_name}/site_config.json'.format(site_name=site_name)) as site_config_file:
site_config = json.load(site_config_file)
return site_config
def main():
check_mariadb()
check_redis_queue()

View File

@ -20,6 +20,6 @@ def console(site):
print("Apps in this namespace:\n{}".format(", ".join(all_apps)))
IPython.embed(display_banner="", header="")
def main():
site = sys.argv[-1]
console(site)

View File

@ -2,12 +2,7 @@ import os, frappe, compileall, re, json
from frappe.migrate import migrate
from frappe.utils import get_sites
def get_config():
config = None
with open('common_site_config.json') as config_file:
config = json.load(config_file)
return config
from check_connection import get_config
def save_config(config):
with open('common_site_config.json', 'w') as f:
@ -24,9 +19,10 @@ def set_maintenance_mode(enable=True):
conf.update({ "maintenance_mode": 0, "pause_scheduler": 0 })
save_config(conf)
def migrate_sites(maintenance_mode=False):
installed_sites = ":".join(get_sites())
sites = os.environ.get("SITES", installed_sites).split(":")
if not maintenance_mode:
maintenance_mode = True if os.environ.get("MAINTENANCE_MODE") else False
if maintenance_mode:
@ -44,4 +40,9 @@ for site in sites:
if maintenance_mode:
set_maintenance_mode(False)
def main():
migrate_sites()
exit(0)
if __name__ == "__main__":
main()

View File

@ -1,7 +1,9 @@
import os, frappe, json
from frappe.commands.site import _new_site
from check_connection import get_config, get_site_config
def main():
site_name = os.environ.get("SITE_NAME", 'site1.localhost')
mariadb_root_username = os.environ.get("DB_ROOT_USER", 'root')
mariadb_root_password = os.environ.get("MYSQL_ROOT_PASSWORD", 'admin')
@ -23,13 +25,9 @@ _new_site(
reinstall=False,
)
config = None
with open('common_site_config.json') as config_file:
config = json.load(config_file)
config = get_config()
site_config = None
with open('{site_name}/site_config.json'.format(site_name=site_name)) as site_config_file:
site_config = json.load(site_config_file)
site_config = get_site_config(site_name)
# update User's host to '%' required to connect from any container
command = 'mysql -h{db_host} -u{mariadb_root_username} -p{mariadb_root_password} -e '.format(
@ -64,5 +62,7 @@ command += "\"GRANT ALL PRIVILEGES ON \`{db_name}\`.* TO '{db_name}'@'%'; FLUSH
db_name=site_config.get('db_name')
)
os.system(command)
exit(0)
if __name__ == "__main__":
main()

View File

@ -1,7 +1,10 @@
import os, frappe
from frappe.utils.background_jobs import start_worker
def main():
queue = os.environ.get("WORKER_TYPE", "default")
start_worker(queue, False)
exit(0)
if __name__ == "__main__":
main()