diff --git a/.gitignore b/.gitignore index be8d751..ff95449 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ venv/ __pycache__/ *.py[cod] *$py.class +.pytest_cache # Unit test / coverage reports diff --git a/config/configs.py b/config/all_config_loader.py similarity index 85% rename from config/configs.py rename to config/all_config_loader.py index 05e9d81..ea06ee6 100644 --- a/config/configs.py +++ b/config/all_config_loader.py @@ -9,6 +9,7 @@ configs.from_object('config.default') try: + print('config file', os.environ['CONFIG_FILE']) configs.from_envvar('CONFIG_FILE') except RuntimeError as ex: logger.warning("Failed to load config from envar") diff --git a/config/awsDev.py b/config/awsDev.py index ef9461a..263e316 100644 --- a/config/awsDev.py +++ b/config/awsDev.py @@ -1,11 +1,13 @@ from decouple import config +DEBUG = True + PORT = 5000 -TOKEN = config('DEV_BOT_TOKEN', default='token') -VERIFICATION_TOKEN = config('DEV_AUTH_TOKEN', default='token') -COMMUNITY_CHANNEL = config('DEV_PRIVATE_CHANNEL', default='community_channel') -MENTORS_INTERNAL_CHANNEL = config('DEV_PRIVATE_CHANNEL', default='mentor_channel') +SLACK_TOKEN = config('DEV_BOT_TOKEN', default='token') +SLACK_VERIFICATION_TOKEN = config('DEV_AUTH_TOKEN', default='token') +SLACK_COMMUNITY_CHANNEL = config('DEV_PRIVATE_CHANNEL', default='community_channel') +SLACK_MENTORS_INTERNAL_CHANNEL = config('DEV_PRIVATE_CHANNEL', default='mentor_channel') AIRTABLE_BASE_KEY = config('DEV_AIRTABLE_BASE_KEY', default='fake_airtable_base') AIRTABLE_API_KEY = config('DEV_AIRTABLE_TOKEN', default='fake_airtable_key') @@ -16,3 +18,11 @@ DB_DIALECT = config('AWS_DEV_DB_DIALECT', default='sqlite') DB_ADDR = config('AWS_DEV_DB_ADDR', default='dev.db') DB_NAME = config('AWS_DEV_DB_NAME', default='') + +GOOGLE_RECAPTCHA_SECRET = config('RECAPTCHA_SECRET') + +GITHUB_JWT = config('GITHUB_JWT') +GITHUB_REPO_PATH = config('GITHUB_REPO_PATH') + +OC_BACKEND_JWT_TOKEN = config('OC_BACKEND_JWT_TOKEN') +OC_BACKEND_URL = config('OC_BACKEND_URL') diff --git a/config/awsProd.py b/config/awsProd.py index 5a2c2d4..6e93087 100644 --- a/config/awsProd.py +++ b/config/awsProd.py @@ -2,10 +2,12 @@ DEBUG = False -TOKEN = config('PROD_BOT_TOKEN') -VERIFICATION_TOKEN = config('PROD_AUTH_TOKEN') -COMMUNITY_CHANNEL = config('PROD_COMMUNITY_CHANNEL') -MENTORS_INTERNAL_CHANNEL = config('PROD_MENTOR_CHANNEL') +#PORT = 5000 + +SLACK_TOKEN = config('PROD_BOT_TOKEN') +SLACK_VERIFICATION_TOKEN = config('PROD_AUTH_TOKEN') +SLACK_COMMUNITY_CHANNEL = config('PROD_COMMUNITY_CHANNEL') +SLACK_MENTORS_INTERNAL_CHANNEL = config('PROD_MENTOR_CHANNEL') AIRTABLE_BASE_KEY = config('PROD_AIRTABLE_BASE_KEY') AIRTABLE_API_KEY = config('PROD_AIRTABLE_TOKEN') @@ -17,6 +19,10 @@ DB_ADDR = config('PROD_DB_ADDR', default='dev.db') DB_NAME = config('PROD_DB_NAME', default='') -RECAPTCHA_SECRET = config('RECAPTCHA_SECRET') +GOOGLE_RECAPTCHA_SECRET = config('RECAPTCHA_SECRET') + GITHUB_JWT = config('GITHUB_JWT') -GITHUB_REPO_PATH = config('GITHUB_REPO_PATH') \ No newline at end of file +GITHUB_REPO_PATH = config('GITHUB_REPO_PATH') + +OC_BACKEND_JWT_TOKEN = config('OC_BACKEND_JWT_TOKEN') +OC_BACKEND_URL = config('OC_BACKEND_URL') diff --git a/config/default.py b/config/default.py index 9c012dc..bd4e924 100644 --- a/config/default.py +++ b/config/default.py @@ -1,24 +1,28 @@ + + DEBUG = True -VERIFICATION_TOKEN = 'token' -TOKEN = 'token' -COMMUNITY_CHANNEL = 'community_channel' -MENTORS_INTERNAL_CHANNEL = 'mentor_channel' - -AIRTABLE_BASE_KEY = 'fake_airtable_base' -AIRTABLE_API_KEY = 'fake_airtable_key' -AIRTABLE_TABLE_NAME = 'Mentor Request' - -# database stuff -DB_USERNAME = '' -DB_PASSWORD = '' -DB_DIALECT = 'sqlite' -DB_ADDR = 'dev.db' -DB_NAME = '' - -# PythonAnywhere SSH Tunnel Configurations -PA_SSH_USERNAME = 'username' -PA_SSH_PASSWORD = 'password' -PA_SSH_URL = 'url' -PA_SSH_REMOTE_BIND_ADDR = 'addr' -PA_SSH_REMOTE_BIND_PORT = 'port' +PORT = 5000 + +SLACK_VERIFICATION_TOKEN = 'default' +SLACK_TOKEN = 'default' +SLACK_COMMUNITY_CHANNEL = 'default' +SLACK_MENTORS_INTERNAL_CHANNEL = 'default' + +AIRTABLE_BASE_KEY = 'default' +AIRTABLE_API_KEY = 'default' +AIRTABLE_TABLE_NAME = 'defaul' + +DB_USERNAME = 'default' +DB_PASSWORD = 'default' +DB_DIALECT = 'defaults' +DB_ADDR = 'default' +DB_NAME = 'default' + +GOOGLE_RECAPTCHA_SECRET = 'default' + +GITHUB_JWT = 'default' +GITHUB_REPO_PATH = 'default' + +OC_BACKEND_JWT_TOKEN = 'default' +OC_BACKEND_URL = 'default' diff --git a/config/development.py b/config/development.py index 1b3062d..d4a518d 100644 --- a/config/development.py +++ b/config/development.py @@ -1,11 +1,13 @@ from decouple import config +DEBUG = True + PORT = 5000 -TOKEN = config('DEV_BOT_TOKEN', default='token') -VERIFICATION_TOKEN = config('DEV_AUTH_TOKEN', default='token') -COMMUNITY_CHANNEL = config('DEV_PRIVATE_CHANNEL', default='community_channel') -MENTORS_INTERNAL_CHANNEL = config('DEV_PRIVATE_CHANNEL', default='mentor_channel') +SLACK_TOKEN = config('DEV_BOT_TOKEN', default='token') +SLACK_VERIFICATION_TOKEN = config('DEV_AUTH_TOKEN', default='token') +SLACK_COMMUNITY_CHANNEL = config('DEV_PRIVATE_CHANNEL', default='community_channel') +SLACK_MENTORS_INTERNAL_CHANNEL = config('DEV_PRIVATE_CHANNEL', default='mentor_channel') AIRTABLE_BASE_KEY = config('DEV_AIRTABLE_BASE_KEY', default='fake_airtable_base') AIRTABLE_API_KEY = config('DEV_AIRTABLE_TOKEN', default='fake_airtable_key') @@ -17,12 +19,10 @@ DB_ADDR = config('DEV_DB_ADDR', default='dev.db') DB_NAME = config('DEV_DB_NAME', default='') -PA_SSH_USERNAME = config('PA_SSH_USERNAME', default=None) -PA_SSH_PASSWORD = config('PA_SSH_PASSWORD', default=None) -PA_SSH_URL = config('PA_SSH_URL', default=None) -PA_SSH_REMOTE_BIND_ADDR = config('PA_PG_IP_ADDR', cast=str, default=None) -PA_SSH_REMOTE_BIND_PORT = config('PA_PG_PORT', cast=int, default=0) +GOOGLE_RECAPTCHA_SECRET = config('RECAPTCHA_SECRET') -RECAPTCHA_SECRET = config('RECAPTCHA_SECRET') GITHUB_JWT = config('GITHUB_JWT') GITHUB_REPO_PATH = config('DEV_GITHUB_REPO_PATH') + +OC_BACKEND_JWT_TOKEN = config('OC_BACKEND_JWT_TOKEN') +OC_BACKEND_URL = config('OC_BACKEND_URL') diff --git a/config/development2.py b/config/development2.py index bb5bd8a..4a21153 100644 --- a/config/development2.py +++ b/config/development2.py @@ -2,10 +2,10 @@ PORT = 5000 -TOKEN = config('PERSONAL_BOT_TOKEN', default='token') -VERIFICATION_TOKEN = config('APP_VERIFICATION_TOKEN', default='token') -COMMUNITY_CHANNEL = config('PERSONAL_PRIVATE_CHANNEL', default='community_channel') -MENTORS_INTERNAL_CHANNEL = config('PERSONAL_PRIVATE_CHANNEL', default='mentor_channel') +SLACK_TOKEN = config('PERSONAL_BOT_TOKEN', default='token') +SLACK_VERIFICATION_TOKEN = config('APP_VERIFICATION_TOKEN', default='token') +SLACK_COMMUNITY_CHANNEL = config('PERSONAL_PRIVATE_CHANNEL', default='community_channel') +SLACK_MENTORS_INTERNAL_CHANNEL = config('PERSONAL_PRIVATE_CHANNEL', default='mentor_channel') AIRTABLE_BASE_KEY = config('DEV_AIRTABLE_BASE_KEY', default='fake_airtable_base') AIRTABLE_API_KEY = config('DEV_AIRTABLE_TOKEN', default='fake_airtable_key') @@ -17,8 +17,10 @@ DB_ADDR = config('DEV_DB_ADDR', default='dev.db') DB_NAME = config('DEV_DB_NAME', default='') -PA_SSH_USERNAME = config('PA_SSH_USERNAME', default=None) -PA_SSH_PASSWORD = config('PA_SSH_PASSWORD', default=None) -PA_SSH_URL = config('PA_SSH_URL', default=None) -PA_SSH_REMOTE_BIND_ADDR = config('PA_PG_IP_ADDR', cast=str, default=None) -PA_SSH_REMOTE_BIND_PORT = config('PA_PG_PORT', cast=int, default=0) +GOOGLE_RECAPTCHA_SECRET = config('RECAPTCHA_SECRET') + +GITHUB_JWT = config('GITHUB_JWT') +GITHUB_REPO_PATH = config('DEV_GITHUB_REPO_PATH') + +OC_BACKEND_JWT_TOKEN = config('OC_BACKEND_JWT_TOKEN') +OC_BACKEND_URL = config('OC_BACKEND_URL') diff --git a/config/production.py b/config/production.py index 4937304..d7be40b 100644 --- a/config/production.py +++ b/config/production.py @@ -2,10 +2,10 @@ DEBUG = False -TOKEN = config('OPCODE_TOKEN') -VERIFICATION_TOKEN = config('OPCODE_VERIFICATION_TOKEN') -COMMUNITY_CHANNEL = config('OPCODE_COMMUNITY_ID') -MENTORS_INTERNAL_CHANNEL = config('OPCODE_MENTORS_INTERNAL_CHANNEL') +SLACK_TOKEN = config('OPCODE_TOKEN') +SLACK_VERIFICATION_TOKEN = config('OPCODE_VERIFICATION_TOKEN') +SLACK_COMMUNITY_CHANNEL = config('OPCODE_COMMUNITY_ID') +SLACK_MENTORS_INTERNAL_CHANNEL = config('OPCODE_MENTORS_INTERNAL_CHANNEL') AIRTABLE_BASE_KEY = config('OPCODE_AIRTABLE_BASE_KEY') AIRTABLE_API_KEY = config('OPCODE_AIRTABLE_TOKEN') @@ -17,6 +17,10 @@ DB_ADDR = config('PROD_DB_ADDR') DB_NAME = config('PROD_DB_NAME') -RECAPTCHA_SECRET = config('RECAPTCHA_SECRET') +GOOGLE_RECAPTCHA_SECRET = config('RECAPTCHA_SECRET') + GITHUB_JWT = config('GITHUB_JWT') -GITHUB_REPO_PATH = config('GITHUB_REPO_PATH') \ No newline at end of file +GITHUB_REPO_PATH = config('GITHUB_REPO_PATH') + +OC_BACKEND_JWT_TOKEN = config('OC_BACKEND_JWT_TOKEN') +OC_BACKEND_URL = config('OC_BACKEND_URL') diff --git a/config/tests.py b/config/tests.py index c8ec4fa..8e2b983 100644 --- a/config/tests.py +++ b/config/tests.py @@ -2,10 +2,10 @@ PORT = 5000 -TOKEN = 'slack-token' -VERIFICATION_TOKEN = 'token' -COMMUNITY_CHANNEL = config('DEV_PRIVATE_CHANNEL', default='community_channel') -MENTORS_INTERNAL_CHANNEL = config('DEV_PRIVATE_CHANNEL', default='mentor_channel') +SLACK_TOKEN = 'slack-token' +SLACK_VERIFICATION_TOKEN = 'token' +SLACK_COMMUNITY_CHANNEL = config('DEV_PRIVATE_CHANNEL', default='community_channel') +SLACK_MENTORS_INTERNAL_CHANNEL = config('DEV_PRIVATE_CHANNEL', default='mentor_channel') AIRTABLE_BASE_KEY = config('DEV_AIRTABLE_BASE_KEY', default='fake_airtable_base') AIRTABLE_API_KEY = config('DEV_AIRTABLE_TOKEN', default='fake_airtable_key') @@ -17,12 +17,10 @@ DB_ADDR = config('DEV_DB_ADDR', default='dev.db') DB_NAME = config('DEV_DB_NAME', default='') -PA_SSH_USERNAME = config('PA_SSH_USERNAME', default=None) -PA_SSH_PASSWORD = config('PA_SSH_PASSWORD', default=None) -PA_SSH_URL = config('PA_SSH_URL', default=None) -PA_SSH_REMOTE_BIND_ADDR = config('PA_PG_IP_ADDR', cast=str, default=None) -PA_SSH_REMOTE_BIND_PORT = config('PA_PG_PORT', cast=int, default=0) +GOOGLE_RECAPTCHA_SECRET = 'secret' -RECAPTCHA_SECRET = 'secret' GITHUB_JWT = 'jwt' -GITHUB_REPO_PATH = config('DEV_GITHUB_REPO_PATH') \ No newline at end of file +GITHUB_REPO_PATH = config('DEV_GITHUB_REPO_PATH') + +OC_BACKEND_JWT_TOKEN = config('OC_BACKEND_JWT_TOKEN') +OC_BACKEND_URL = config('OC_BACKEND_URL') diff --git a/deploy/curr_prod b/deploy/curr_prod new file mode 100644 index 0000000..fb0b5c7 --- /dev/null +++ b/deploy/curr_prod @@ -0,0 +1,25 @@ +AWS_DEV_DB_ADDR +AWS_DEV_DB_DIALECT +AWS_DEV_DB_NAME +AWS_DEV_DB_PASSWORD +AWS_DEV_DB_USERNAME +CONFIG_FILE +DEV_AIRTABLE_BASE_KEY +DEV_AIRTABLE_TOKEN +DEV_AUTH_TOKEN +DEV_BOT_TOKEN +DEV_PRIVATE_CHANNEL +GITHUB_JWT +GITHUB_REPO_PATH +PROD_AIRTABLE_BASE_KEY +PROD_AIRTABLE_TOKEN +PROD_AUTH_TOKEN +PROD_BOT_TOKEN +PROD_COMMUNITY_CHANNEL +PROD_DB_ADDR +PROD_DB_DIALECT +PROD_DB_NAME +PROD_DB_PASSWORD +PROD_DB_USERNAME +PROD_MENTOR_CHANNEL +RECAPTCHA_SECRET diff --git a/deploy/env_check b/deploy/env_check new file mode 100644 index 0000000..7241b97 --- /dev/null +++ b/deploy/env_check @@ -0,0 +1,7 @@ +#!/bin/bash + +AWS_VARS=eb printenv | sed -n 's/ *\([A-Z_]*\) =.*/\1/p' + +NEW_PROD_VARS=cat ../config/awsProd.py | sed '/#/d' |sed -n 's/ *\([A-Z_]\) =.*/\1/p' + +MISMATCH=comm -1 -3