From 164c165e1a0b8160de4d8a920acf34bcd738e3b4 Mon Sep 17 00:00:00 2001 From: danialmalik Date: Mon, 6 Apr 2020 14:10:52 +0500 Subject: [PATCH] Merge all configs of devstack_docker.py into devstack.py --- cms/envs/devstack.py | 29 ++++++-- cms/envs/devstack_docker.py | 30 -------- cms/envs/devstack_optimized.py | 5 +- cms/envs/devstack_with_worker.py | 5 +- lms/envs/devstack.py | 114 ++++++++++++++++++++++++++++--- lms/envs/devstack_docker.py | 107 ----------------------------- lms/envs/devstack_optimized.py | 5 +- lms/envs/devstack_with_worker.py | 5 +- 8 files changed, 133 insertions(+), 167 deletions(-) diff --git a/cms/envs/devstack.py b/cms/envs/devstack.py index 332b1a9b29..af08727339 100644 --- a/cms/envs/devstack.py +++ b/cms/envs/devstack.py @@ -19,6 +19,8 @@ DEFAULT_TEMPLATE_ENGINE['OPTIONS']['debug'] = DEBUG SITE_NAME = 'localhost:8001' HTTPS = 'off' +CMS_BASE = 'localhost:18010' + ################################ LOGGERS ###################################### @@ -26,6 +28,12 @@ HTTPS = 'off' for pkg_name in ['track.contexts', 'track.middleware']: logging.getLogger(pkg_name).setLevel(logging.CRITICAL) +# Docker does not support the syslog socket at /dev/log. Rely on the console. +LOGGING['handlers']['local'] = LOGGING['handlers']['tracking'] = { + 'class': 'logging.NullHandler', +} + +LOGGING['loggers']['tracking']['handlers'] = ['console'] ################################ EMAIL ######################################## @@ -34,8 +42,8 @@ EMAIL_FILE_PATH = '/edx/src/ace_messages/' ################################# LMS INTEGRATION ############################# -LMS_BASE = "localhost:8000" -LMS_ROOT_URL = "http://{}".format(LMS_BASE) +LMS_BASE = 'localhost:18000' +LMS_ROOT_URL = 'http://{}'.format(LMS_BASE) FEATURES['PREVIEW_LMS_BASE'] = "preview." + LMS_BASE ########################### PIPELINE ################################# @@ -117,10 +125,16 @@ FEATURES['LICENSING'] = True XBLOCK_SETTINGS.update({'VideoBlock': {'licensing_enabled': True}}) ################################ SEARCH INDEX ################################ -FEATURES['ENABLE_COURSEWARE_INDEX'] = True -FEATURES['ENABLE_LIBRARY_INDEX'] = True +FEATURES['ENABLE_COURSEWARE_INDEX'] = False +FEATURES['ENABLE_LIBRARY_INDEX'] = False SEARCH_ENGINE = "search.elastic.ElasticSearchEngine" +################################ COURSE DISCUSSIONS ########################### +FEATURES['ENABLE_DISCUSSION_SERVICE'] = True + +################################ CREDENTIALS ########################### +CREDENTIALS_SERVICE_USERNAME = 'credentials_worker' + ########################## Certificates Web/HTML View ####################### FEATURES['CERTIFICATES_HTML_VIEW'] = True @@ -138,7 +152,7 @@ REQUIRE_DEBUG = DEBUG ########################### OAUTH2 ################################# JWT_AUTH.update({ 'JWT_SECRET_KEY': 'lms-secret', - 'JWT_ISSUER': 'http://127.0.0.1:8000/oauth2', + 'JWT_ISSUER': '{}/oauth2'.format(LMS_ROOT_URL), 'JWT_AUDIENCE': 'lms-key', 'JWT_PUBLIC_SIGNING_JWK_SET': ( '{"keys": [{"kid": "devstack_key", "e": "AQAB", "kty": "RSA", "n": "smKFSYowG6nNUAdeqH1jQQnH1PmIHphzBmwJ5vRf1vu' @@ -189,3 +203,8 @@ MODULESTORE = convert_module_store_setting_if_needed(MODULESTORE) # Dummy secret key for dev SECRET_KEY = '85920908f28904ed733fe576320db18cabd7b6cd' + +############################################################################### +# See if the developer has any local overrides. +if os.path.isfile(join(dirname(abspath(__file__)), 'private.py')): + from .private import * # pylint: disable=import-error,wildcard-import diff --git a/cms/envs/devstack_docker.py b/cms/envs/devstack_docker.py index e583f4802c..2eece814de 100644 --- a/cms/envs/devstack_docker.py +++ b/cms/envs/devstack_docker.py @@ -1,33 +1,3 @@ """ Overrides for Docker-based devstack. """ from .devstack import * # pylint: disable=wildcard-import, unused-wildcard-import - -# Docker does not support the syslog socket at /dev/log. Rely on the console. -LOGGING['handlers']['local'] = LOGGING['handlers']['tracking'] = { - 'class': 'logging.NullHandler', -} - -LOGGING['loggers']['tracking']['handlers'] = ['console'] - -LMS_BASE = 'localhost:18000' -CMS_BASE = 'localhost:18010' -LMS_ROOT_URL = 'http://{}'.format(LMS_BASE) - -FEATURES.update({ - 'ENABLE_COURSEWARE_INDEX': False, - 'ENABLE_LIBRARY_INDEX': False, - 'ENABLE_DISCUSSION_SERVICE': True, -}) - -CREDENTIALS_SERVICE_USERNAME = 'credentials_worker' - -JWT_AUTH.update({ - 'JWT_ISSUER': '{}/oauth2'.format(LMS_ROOT_URL), - 'JWT_SECRET_KEY': 'lms-secret', - 'JWT_AUDIENCE': 'lms-key', -}) - -############################################################################### -# See if the developer has any local overrides. -if os.path.isfile(join(dirname(abspath(__file__)), 'private.py')): - from .private import * # pylint: disable=import-error,wildcard-import diff --git a/cms/envs/devstack_optimized.py b/cms/envs/devstack_optimized.py index 3dab8bd20c..d869e53620 100644 --- a/cms/envs/devstack_optimized.py +++ b/cms/envs/devstack_optimized.py @@ -23,10 +23,7 @@ import os ########################## Devstack settings ################################### -if 'BOK_CHOY_HOSTNAME' in os.environ: - from .devstack_docker import * # pylint: disable=wildcard-import, unused-wildcard-import -else: - from .devstack import * # pylint: disable=wildcard-import +from .devstack import * # pylint: disable=wildcard-import TEST_ROOT = REPO_ROOT / "test_root" diff --git a/cms/envs/devstack_with_worker.py b/cms/envs/devstack_with_worker.py index 4350a7ff09..1265492b71 100644 --- a/cms/envs/devstack_with_worker.py +++ b/cms/envs/devstack_with_worker.py @@ -17,10 +17,7 @@ import os # We intentionally define lots of variables that aren't used, and # want to import all variables from base settings files # pylint: disable=wildcard-import, unused-wildcard-import -if 'BOK_CHOY_HOSTNAME' in os.environ: - from cms.envs.devstack_docker import * -else: - from cms.envs.devstack import * +from cms.envs.devstack import * # Require a separate celery worker CELERY_ALWAYS_EAGER = False diff --git a/lms/envs/devstack.py b/lms/envs/devstack.py index f1d4e15e5c..0e131f5d01 100644 --- a/lms/envs/devstack.py +++ b/lms/envs/devstack.py @@ -25,14 +25,17 @@ ORA2_FILEUPLOAD_BACKEND = 'django' DEBUG = True USE_I18N = True DEFAULT_TEMPLATE_ENGINE['OPTIONS']['debug'] = True -SITE_NAME = 'localhost:8000' +LMS_BASE = 'localhost:18000' +CMS_BASE = 'localhost:18010' +SITE_NAME = LMS_BASE + # By default don't use a worker, execute tasks as if they were local functions CELERY_ALWAYS_EAGER = True HTTPS = 'off' -LMS_ROOT_URL = "http://localhost:8000" +LMS_ROOT_URL = 'http://{}'.format(LMS_BASE) LMS_INTERNAL_ROOT_URL = LMS_ROOT_URL -ENTERPRISE_API_URL = LMS_INTERNAL_ROOT_URL + '/enterprise/api/v1/' +ENTERPRISE_API_URL = '{}/enterprise/api/v1/'.format(LMS_INTERNAL_ROOT_URL) IDA_LOGOUT_URI_LIST = [ 'http://localhost:18130/logout/', # ecommerce 'http://localhost:18150/logout/', # credentials @@ -49,6 +52,12 @@ LOG_OVERRIDES = [ for log_name, log_level in LOG_OVERRIDES: logging.getLogger(log_name).setLevel(log_level) +# Docker does not support the syslog socket at /dev/log. Rely on the console. +LOGGING['handlers']['local'] = LOGGING['handlers']['tracking'] = { + 'class': 'logging.NullHandler', +} + +LOGGING['loggers']['tracking']['handlers'] = ['console'] ################################ EMAIL ######################################## @@ -162,12 +171,13 @@ FEATURES['LICENSING'] = True ########################## Courseware Search ####################### -FEATURES['ENABLE_COURSEWARE_SEARCH'] = True -SEARCH_ENGINE = "search.elastic.ElasticSearchEngine" +FEATURES['ENABLE_COURSEWARE_SEARCH'] = False +FEATURES['ENABLE_COURSEWARE_SEARCH_FOR_COURSE_STAFF'] = True +SEARCH_ENGINE = 'search.elastic.ElasticSearchEngine' ########################## Dashboard Search ####################### -FEATURES['ENABLE_DASHBOARD_SEARCH'] = True +FEATURES['ENABLE_DASHBOARD_SEARCH'] = False ########################## Certificates Web/HTML View ####################### @@ -190,7 +200,7 @@ COURSE_DISCOVERY_MEANINGS = { 'language': LANGUAGE_MAP, } -FEATURES['ENABLE_COURSE_DISCOVERY'] = True +FEATURES['ENABLE_COURSE_DISCOVERY'] = False # Setting for overriding default filtering facets for Course discovery # COURSE_DISCOVERY_FILTERS = ["org", "language", "modes"] FEATURES['COURSES_ARE_BROWSEABLE'] = True @@ -228,7 +238,15 @@ if FEATURES.get('ENABLE_THIRD_PARTY_AUTH') and 'third_party_auth.dummy.DummyBack AUTHENTICATION_BACKENDS = ['third_party_auth.dummy.DummyBackend'] + list(AUTHENTICATION_BACKENDS) ############## ECOMMERCE API CONFIGURATION SETTINGS ############### -ECOMMERCE_PUBLIC_URL_ROOT = "http://localhost:8002" +ECOMMERCE_PUBLIC_URL_ROOT = 'http://localhost:18130' +ECOMMERCE_API_URL = 'http://edx.devstack.ecommerce:18130/api/v2' + +############## Comments CONFIGURATION SETTINGS ############### +COMMENTS_SERVICE_URL = 'http://edx.devstack.forum:4567' + +############## Credentials CONFIGURATION SETTINGS ############### +CREDENTIALS_INTERNAL_SERVICE_URL = 'http://edx.devstack.credentials:18150' +CREDENTIALS_PUBLIC_SERVICE_URL = 'http://localhost:18150' ############################### BLOCKSTORE ##################################### BLOCKSTORE_API_URL = "http://edx.devstack.blockstore:18250/api/v1/" @@ -247,7 +265,7 @@ LOGIN_REDIRECT_WHITELIST = [CMS_BASE] ###################### JWTs ###################### # pylint: disable=unicode-format-string JWT_AUTH.update({ - 'JWT_ISSUER': 'http://127.0.0.1:8000/oauth2', + 'JWT_ISSUER': '{}/oauth2'.format(LMS_ROOT_URL), 'JWT_AUDIENCE': 'lms-key', 'JWT_SECRET_KEY': 'lms-secret', 'JWT_SIGNING_ALGORITHM': 'RS512', @@ -294,3 +312,81 @@ EDXNOTES_CLIENT_NAME = 'edx_notes_api-backend-service' ############## Settings for Microfrontends ######################### LEARNING_MICROFRONTEND_URL = 'http://localhost:2000' ACCOUNT_MICROFRONTEND_URL = 'http://localhost:1997' + +############## Docker based devstack settings ####################### + +FEATURES.update({ + 'AUTOMATIC_AUTH_FOR_TESTING': True, + 'ENABLE_DISCUSSION_SERVICE': True, + 'SHOW_HEADER_LANGUAGE_SELECTOR': True, + 'ENABLE_ENTERPRISE_INTEGRATION': False, +}) + +ENABLE_MKTG_SITE = os.environ.get('ENABLE_MARKETING_SITE', False) +MARKETING_SITE_ROOT = os.environ.get('MARKETING_SITE_ROOT', 'http://localhost:8080') + +MKTG_URLS = { + 'ABOUT': '/about', + 'ACCESSIBILITY': '/accessibility', + 'AFFILIATES': '/affiliate-program', + 'BLOG': '/blog', + 'CAREERS': '/careers', + 'CONTACT': '/support/contact_us', + 'COURSES': '/course', + 'DONATE': '/donate', + 'ENTERPRISE': '/enterprise', + 'FAQ': '/student-faq', + 'HONOR': '/edx-terms-service', + 'HOW_IT_WORKS': '/how-it-works', + 'MEDIA_KIT': '/media-kit', + 'NEWS': '/news-announcements', + 'PRESS': '/press', + 'PRIVACY': '/edx-privacy-policy', + 'ROOT': MARKETING_SITE_ROOT, + 'SCHOOLS': '/schools-partners', + 'SITE_MAP': '/sitemap', + 'TRADEMARKS': '/trademarks', + 'TOS': '/edx-terms-service', + 'TOS_AND_HONOR': '/edx-terms-service', + 'WHAT_IS_VERIFIED_CERT': '/verified-certificate', +} + +ENTERPRISE_MARKETING_FOOTER_QUERY_PARAMS = {} + +CREDENTIALS_SERVICE_USERNAME = 'credentials_worker' + +COURSE_CATALOG_API_URL = 'http://edx.devstack.discovery:18381/api/v1/' + +# Uncomment the lines below if you'd like to see SQL statements in your devstack LMS log. +# LOGGING['handlers']['console']['level'] = 'DEBUG' +# LOGGING['loggers']['django.db.backends'] = {'handlers': ['console'], 'level': 'DEBUG', 'propagate': False} + +SYSTEM_WIDE_ROLE_CLASSES = os.environ.get("SYSTEM_WIDE_ROLE_CLASSES", SYSTEM_WIDE_ROLE_CLASSES) +SYSTEM_WIDE_ROLE_CLASSES.extend(['system_wide_roles.SystemWideRoleAssignment']) + +if FEATURES['ENABLE_ENTERPRISE_INTEGRATION']: + SYSTEM_WIDE_ROLE_CLASSES.extend(['enterprise.SystemWideEnterpriseUserRoleAssignment']) + +##################################################################### +# See if the developer has any local overrides. +if os.path.isfile(join(dirname(abspath(__file__)), 'private.py')): + from .private import * # pylint: disable=import-error,wildcard-import + +########################## THEMING ####################### +# If you want to enable theming in devstack, uncomment this section and add any relevant +# theme directories to COMPREHENSIVE_THEME_DIRS + +# We have to import the private method here because production.py calls +# derive_settings('lms.envs.production') which runs _make_mako_template_dirs with +# the settings from production, which doesn't include these theming settings. Thus, +# the templating engine is unable to find the themed templates because they don't exist +# in it's path. Re-calling derive_settings doesn't work because the settings was already +# changed from a function to a list, and it can't be derived again. + +# from .common import _make_mako_template_dirs +# ENABLE_COMPREHENSIVE_THEMING = True +# COMPREHENSIVE_THEME_DIRS = [ +# "/edx/app/edxapp/edx-platform/themes/" +# ] +# TEMPLATES[1]["DIRS"] = _make_mako_template_dirs +# derive_settings(__name__) diff --git a/lms/envs/devstack_docker.py b/lms/envs/devstack_docker.py index 9c069d8b34..2eece814de 100644 --- a/lms/envs/devstack_docker.py +++ b/lms/envs/devstack_docker.py @@ -1,110 +1,3 @@ """ Overrides for Docker-based devstack. """ from .devstack import * # pylint: disable=wildcard-import, unused-wildcard-import - -# Docker does not support the syslog socket at /dev/log. Rely on the console. -LOGGING['handlers']['local'] = LOGGING['handlers']['tracking'] = { - 'class': 'logging.NullHandler', -} - -LOGGING['loggers']['tracking']['handlers'] = ['console'] - -LMS_BASE = 'localhost:18000' -CMS_BASE = 'localhost:18010' -SITE_NAME = LMS_BASE -LMS_ROOT_URL = 'http://{}'.format(LMS_BASE) -LMS_INTERNAL_ROOT_URL = LMS_ROOT_URL - -ECOMMERCE_PUBLIC_URL_ROOT = 'http://localhost:18130' -ECOMMERCE_API_URL = 'http://edx.devstack.ecommerce:18130/api/v2' - -COMMENTS_SERVICE_URL = 'http://edx.devstack.forum:4567' - -ENTERPRISE_API_URL = '{}/enterprise/api/v1/'.format(LMS_INTERNAL_ROOT_URL) - -CREDENTIALS_INTERNAL_SERVICE_URL = 'http://edx.devstack.credentials:18150' -CREDENTIALS_PUBLIC_SERVICE_URL = 'http://localhost:18150' - -JWT_AUTH.update({ - 'JWT_ISSUER': '{}/oauth2'.format(LMS_ROOT_URL), -}) - -FEATURES.update({ - 'AUTOMATIC_AUTH_FOR_TESTING': True, - 'ENABLE_COURSEWARE_SEARCH': False, - 'ENABLE_COURSEWARE_SEARCH_FOR_COURSE_STAFF': True, - 'ENABLE_COURSE_DISCOVERY': False, - 'ENABLE_DASHBOARD_SEARCH': False, - 'ENABLE_DISCUSSION_SERVICE': True, - 'SHOW_HEADER_LANGUAGE_SELECTOR': True, - 'ENABLE_ENTERPRISE_INTEGRATION': False, -}) - -ENABLE_MKTG_SITE = os.environ.get('ENABLE_MARKETING_SITE', False) -MARKETING_SITE_ROOT = os.environ.get('MARKETING_SITE_ROOT', 'http://localhost:8080') - -MKTG_URLS = { - 'ABOUT': '/about', - 'ACCESSIBILITY': '/accessibility', - 'AFFILIATES': '/affiliate-program', - 'BLOG': '/blog', - 'CAREERS': '/careers', - 'CONTACT': '/support/contact_us', - 'COURSES': '/course', - 'DONATE': '/donate', - 'ENTERPRISE': '/enterprise', - 'FAQ': '/student-faq', - 'HONOR': '/edx-terms-service', - 'HOW_IT_WORKS': '/how-it-works', - 'MEDIA_KIT': '/media-kit', - 'NEWS': '/news-announcements', - 'PRESS': '/press', - 'PRIVACY': '/edx-privacy-policy', - 'ROOT': MARKETING_SITE_ROOT, - 'SCHOOLS': '/schools-partners', - 'SITE_MAP': '/sitemap', - 'TRADEMARKS': '/trademarks', - 'TOS': '/edx-terms-service', - 'TOS_AND_HONOR': '/edx-terms-service', - 'WHAT_IS_VERIFIED_CERT': '/verified-certificate', -} - -ENTERPRISE_MARKETING_FOOTER_QUERY_PARAMS = {} - -CREDENTIALS_SERVICE_USERNAME = 'credentials_worker' - -COURSE_CATALOG_API_URL = 'http://edx.devstack.discovery:18381/api/v1/' - -# Uncomment the lines below if you'd like to see SQL statements in your devstack LMS log. -# LOGGING['handlers']['console']['level'] = 'DEBUG' -# LOGGING['loggers']['django.db.backends'] = {'handlers': ['console'], 'level': 'DEBUG', 'propagate': False} - -SYSTEM_WIDE_ROLE_CLASSES = os.environ.get("SYSTEM_WIDE_ROLE_CLASSES", SYSTEM_WIDE_ROLE_CLASSES) -SYSTEM_WIDE_ROLE_CLASSES.extend(['system_wide_roles.SystemWideRoleAssignment']) - -if FEATURES['ENABLE_ENTERPRISE_INTEGRATION']: - SYSTEM_WIDE_ROLE_CLASSES.extend(['enterprise.SystemWideEnterpriseUserRoleAssignment']) - -##################################################################### -# See if the developer has any local overrides. -if os.path.isfile(join(dirname(abspath(__file__)), 'private.py')): - from .private import * # pylint: disable=import-error,wildcard-import - -########################## THEMING ####################### -# If you want to enable theming in devstack, uncomment this section and add any relevant -# theme directories to COMPREHENSIVE_THEME_DIRS - -# We have to import the private method here because production.py calls -# derive_settings('lms.envs.production') which runs _make_mako_template_dirs with -# the settings from production, which doesn't include these theming settings. Thus, -# the templating engine is unable to find the themed templates because they don't exist -# in it's path. Re-calling derive_settings doesn't work because the settings was already -# changed from a function to a list, and it can't be derived again. - -# from .common import _make_mako_template_dirs -# ENABLE_COMPREHENSIVE_THEMING = True -# COMPREHENSIVE_THEME_DIRS = [ -# "/edx/app/edxapp/edx-platform/themes/" -# ] -# TEMPLATES[1]["DIRS"] = _make_mako_template_dirs -# derive_settings(__name__) diff --git a/lms/envs/devstack_optimized.py b/lms/envs/devstack_optimized.py index 80b07f7980..40c98f22dc 100644 --- a/lms/envs/devstack_optimized.py +++ b/lms/envs/devstack_optimized.py @@ -23,10 +23,7 @@ import os ########################## Devstack settings ################################### -if 'BOK_CHOY_HOSTNAME' in os.environ: - from .devstack_docker import * # pylint: disable=wildcard-import, unused-wildcard-import -else: - from .devstack import * # pylint: disable=wildcard-import +from .devstack import * # pylint: disable=wildcard-import TEST_ROOT = REPO_ROOT / "test_root" diff --git a/lms/envs/devstack_with_worker.py b/lms/envs/devstack_with_worker.py index b13eae1d9b..2b87fdf42b 100644 --- a/lms/envs/devstack_with_worker.py +++ b/lms/envs/devstack_with_worker.py @@ -17,10 +17,7 @@ import os # We intentionally define lots of variables that aren't used, and # want to import all variables from base settings files # pylint: disable=wildcard-import, unused-wildcard-import -if 'BOK_CHOY_HOSTNAME' in os.environ: - from lms.envs.devstack_docker import * -else: - from lms.envs.devstack import * +from lms.envs.devstack import * # Require a separate celery worker CELERY_ALWAYS_EAGER = False