Muhammad Faraz Maqsood 941127c00b feat: upgrade to palm
2023-05-24 18:16:38 +05:00

136 lines
3.7 KiB
Python

from __future__ import annotations
from glob import glob
import os
import pkg_resources
import typing as t
from tutor import hooks as tutor_hooks
from .__about__ import __version__
HERE = os.path.abspath(os.path.dirname(__file__))
config = {
"unique": {
"MYSQL_PASSWORD": "{{ 8|random_string }}",
"SECRET_KEY": "{{ 20|random_string }}",
"OAUTH2_SECRET": "{{ 8|random_string }}",
"OAUTH2_SECRET_SSO": "{{ 8|random_string }}",
},
"defaults": {
"VERSION": __version__,
"DOCKER_IMAGE": "{{ DOCKER_REGISTRY}}overhangio/openedx-discovery:{{ DISCOVERY_VERSION }}",
"HOST": "discovery.{{ LMS_HOST }}",
"INDEX_OVERRIDES": {},
"MYSQL_DATABASE": "discovery",
"MYSQL_USERNAME": "discovery",
"OAUTH2_KEY": "discovery",
"OAUTH2_KEY_DEV": "discovery-dev",
"OAUTH2_KEY_SSO": "discovery-sso",
"OAUTH2_KEY_SSO_DEV": "discovery-sso-dev",
"CACHE_REDIS_DB": "{{ OPENEDX_CACHE_REDIS_DB }}",
"EXTRA_PIP_REQUIREMENTS": [],
},
}
# Initialization tasks
init_tasks = ("mysql", "lms", "discovery")
for service in init_tasks:
with open(
os.path.join(
pkg_resources.resource_filename("tutordiscovery", "templates"),
"discovery",
"tasks",
service,
"init",
),
encoding="utf8",
) as fi:
tutor_hooks.Filters.CLI_DO_INIT_TASKS.add_item(
(
service,
fi.read(),
)
)
# Image management
tutor_hooks.Filters.IMAGES_BUILD.add_item(
(
"discovery",
("plugins", "discovery", "build", "discovery"),
"{{ DISCOVERY_DOCKER_IMAGE }}",
(),
)
)
tutor_hooks.Filters.IMAGES_PULL.add_item(
(
"discovery",
"{{ DISCOVERY_DOCKER_IMAGE }}",
)
)
tutor_hooks.Filters.IMAGES_PUSH.add_item(
(
"discovery",
"{{ DISCOVERY_DOCKER_IMAGE }}",
)
)
# Automount /openedx/discovery folder from the container
@tutor_hooks.Filters.COMPOSE_MOUNTS.add()
def _mount_course_discovery(mounts, name):
if name == "course-discovery":
mounts.append(("discovery", "/openedx/discovery"))
return mounts
####### Boilerplate code
# Add the "templates" folder as a template root
tutor_hooks.Filters.ENV_TEMPLATE_ROOTS.add_item(
pkg_resources.resource_filename("tutordiscovery", "templates")
)
# Render the "build" and "apps" folders
tutor_hooks.Filters.ENV_TEMPLATE_TARGETS.add_items(
[
("discovery/build", "plugins"),
("discovery/apps", "plugins"),
],
)
# Load patches from files
for path in glob(
os.path.join(
pkg_resources.resource_filename("tutordiscovery", "patches"),
"*",
)
):
with open(path, encoding="utf-8") as patch_file:
tutor_hooks.Filters.ENV_PATCHES.add_item(
(os.path.basename(path), patch_file.read())
)
# Add configuration entries
tutor_hooks.Filters.CONFIG_DEFAULTS.add_items(
[(f"DISCOVERY_{key}", value) for key, value in config.get("defaults", {}).items()]
)
tutor_hooks.Filters.CONFIG_UNIQUE.add_items(
[(f"DISCOVERY_{key}", value) for key, value in config.get("unique", {}).items()]
)
tutor_hooks.Filters.CONFIG_OVERRIDES.add_items(
list(config.get("overrides", {}).items())
)
########################################
# Credentials Public Host
########################################
@tutor_hooks.Filters.APP_PUBLIC_HOSTS.add()
def _discovery_public_hosts(hosts: list[str], context_name: t.Literal["local", "dev"]) -> list[str]:
if context_name == "dev":
# todo: will may change the below dev port when i try this plugin in dev mode
hosts += ["discovery.{{ LMS_HOST }}:8000"]
else:
hosts += ["discovery.{{ LMS_HOST }}"]
return hosts