Skip to content

Commit 9105836

Browse files
chore: add enterprise catalog in devstack
1 parent 4255f6a commit 9105836

File tree

10 files changed

+126
-3
lines changed

10 files changed

+126
-3
lines changed

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,9 @@ dev.shell.analyticsapi:
407407
dev.shell.insights:
408408
docker compose exec insights env TERM=$(TERM) bash -c 'eval $$(source /edx/app/insights/insights_env; echo PATH="$$PATH";) && /bin/bash'
409409

410+
dev.shell.enterprise-catalog:
411+
docker exec -it edx.devstack.enterprise-catalog env TERM=$(TERM) bash -c '/bin/bash'
412+
410413
dev.shell.%: ## Run a shell on the specified service's container.
411414
docker compose exec $* /bin/bash
412415

docker-compose-host.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,15 @@ services:
7171
- ${DEVSTACK_WORKSPACE}/edx-analytics-data-api:/edx/app/analytics_api/analytics_api
7272
- ${DEVSTACK_WORKSPACE}/src:/edx/src
7373
- ${PWD}/py_configuration_files/analytics_data_api.py:/edx/app/analytics_api/analytics_api/analyticsdataserver/settings/devstack.py
74-
74+
enterprise-catalog:
75+
volumes:
76+
- ${DEVSTACK_WORKSPACE}/enterprise-catalog:/edx/app/enterprise_catalog/enterprise_catalog
77+
enterprise-catalog-worker:
78+
volumes:
79+
- ${DEVSTACK_WORKSPACE}/enterprise-catalog:/edx/app/enterprise_catalog/enterprise_catalog
80+
enterprise-catalog-curations_worker:
81+
volumes:
82+
- ${DEVSTACK_WORKSPACE}/enterprise-catalog:/edx/app/enterprise_catalog/enterprise_catalog
7583
# Note that frontends mount `src` to /edx/app/src instead of /edx/src.
7684
# See ADR #5 for rationale.
7785
frontend-app-account:

docker-compose.yml

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,82 @@ services:
693693
aliases:
694694
- edx.devstack.xqueue_consumer
695695

696+
enterprise-catalog:
697+
image: edxops/enterprise-catalog-dev
698+
container_name: edx.devstack.enterprise-catalog
699+
hostname: enterprise-catalog.devstack.edx
700+
command: bash -c 'while true; do python /edx/app/enterprise_catalog/enterprise_catalog/manage.py runserver 0.0.0.0:18160; sleep 2; done'
701+
ports:
702+
- "18160:18160"
703+
depends_on:
704+
- memcached
705+
- mysql80
706+
- enterprise-catalog-worker
707+
networks:
708+
default:
709+
aliases:
710+
- edx.devstack.enterprise-catalog
711+
# Allows attachment to this container using 'docker attach <containerID>'.
712+
stdin_open: true
713+
tty: true
714+
environment:
715+
CELERY_ALWAYS_EAGER: 'false'
716+
CELERY_BROKER_TRANSPORT: redis
717+
CELERY_BROKER_HOSTNAME: edx.devstack.redis:6379
718+
CELERY_BROKER_VHOST: 0
719+
CELERY_BROKER_PASSWORD: password
720+
DJANGO_SETTINGS_MODULE: enterprise_catalog.settings.devstack
721+
ENABLE_DJANGO_TOOLBAR: 1
722+
DB_HOST: edx.devstack.mysql80
723+
DB_NAME: enterprise_catalog
724+
DB_PORT: 3306
725+
DB_USER: catalog001
726+
DB_PASSWORD: 'password'
727+
728+
enterprise-catalog-worker:
729+
image: edxops/enterprise-catalog-dev
730+
command: bash -c 'cd /edx/app/enterprise_catalog/enterprise_catalog && celery -A enterprise_catalog worker -Q enterprise_catalog.default -l DEBUG'
731+
container_name: edx.devstack.enterprise.catalog.worker
732+
depends_on:
733+
- mysql80
734+
environment:
735+
CELERY_ALWAYS_EAGER: 'false'
736+
CELERY_BROKER_TRANSPORT: redis
737+
CELERY_BROKER_HOSTNAME: edx.devstack.redis:6379
738+
CELERY_BROKER_VHOST: 0
739+
CELERY_BROKER_PASSWORD: password
740+
DJANGO_SETTINGS_MODULE: enterprise_catalog.settings.devstack
741+
COLUMNS: 80
742+
hostname: worker.catalog.enterprise
743+
ports:
744+
- "18161:18161"
745+
restart: always
746+
# Allows attachment to this container using 'docker attach <containerID>'.
747+
stdin_open: true
748+
tty: true
749+
750+
enterprise-catalog-curations_worker:
751+
image: edxops/enterprise-catalog-dev
752+
command: bash -c 'cd /edx/app/enterprise_catalog/enterprise_catalog && celery -A enterprise_catalog worker -Q enterprise_catalog.curations -l DEBUG'
753+
container_name: enterprise.catalog.curations
754+
depends_on:
755+
- mysql80
756+
environment:
757+
CELERY_ALWAYS_EAGER: 'false'
758+
CELERY_BROKER_TRANSPORT: redis
759+
CELERY_BROKER_HOSTNAME: edx.devstack.redis:6379
760+
CELERY_BROKER_VHOST: 0
761+
CELERY_BROKER_PASSWORD: password
762+
DJANGO_SETTINGS_MODULE: enterprise_catalog.settings.devstack
763+
COLUMNS: 80
764+
hostname: curations.catalog.enterprise
765+
ports:
766+
- "18162:18162"
767+
restart: always
768+
# Allows attachment to this container using 'docker attach <containerID>'.
769+
stdin_open: true
770+
tty: true
771+
696772
# ==========================================================================
697773
# edX Microfrontends
698774
#
@@ -910,3 +986,4 @@ volumes:
910986
mysql57_data:
911987
mysql80_data:
912988
redis_data:
989+
enterprise_catalog_mysql8:

docs/service_list.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ Instead of a service name or list, you can also run commands like ``make dev.pro
6363
+------------------------------------+-------------------------------------+----------------+--------------+
6464
| `frontend-app-ora-grading`_ | http://localhost:1993 | MFE (React.js) | Extra |
6565
+------------------------------------+-------------------------------------+----------------+--------------+
66+
| `enterprise-catalog`_ | http://localhost:18160/ | Python/Django | Extra |
67+
+------------------------------------+-------------------------------------+----------------+--------------+
6668

6769
Some common service combinations include:
6870

@@ -95,3 +97,4 @@ Some common service combinations include:
9597
.. _frontend-app-ora-grading: https://github.com/edx/frontend-app-ora-grading
9698
.. _insights: https://github.com/edx/edx-analytics-dashboard
9799
.. _analyticsapi: https://github.com/edx/edx-analytics-data-api
100+
.. _enterprise-catalog: https://github.com/openedx/enterprise-catalog

options.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ credentials+discovery+ecommerce+edx_notes_api+forum+frontend-app-authn+frontend-
6767
# Separated by plus signs.
6868
# Separated by plus signs. Listed in alphabetical order for clarity.
6969
EDX_SERVICES ?= \
70-
analyticsapi+credentials+cms+cms-worker+cms_watcher+discovery+ecommerce+edx_notes_api+forum+frontend-app-account+frontend-app-learner-dashboard+frontend-app-learner-record+frontend-app-profile+frontend-app-authn+frontend-app-course-authoring+frontend-app-gradebook+frontend-app-ora-grading+frontend-app-learning+frontend-app-library-authoring+frontend-app-payment+frontend-app-program-console+frontend-app-publisher+insights+lms+lms-worker+lms_watcher+registrar+registrar-worker+xqueue+xqueue_consumer
70+
analyticsapi+credentials+cms+cms-worker+cms_watcher+discovery+ecommerce+edx_notes_api+forum+frontend-app-account+frontend-app-learner-dashboard+frontend-app-learner-record+frontend-app-profile+frontend-app-authn+frontend-app-course-authoring+frontend-app-gradebook+frontend-app-ora-grading+frontend-app-learning+frontend-app-library-authoring+frontend-app-payment+frontend-app-program-console+frontend-app-publisher+insights+lms+lms-worker+lms_watcher+registrar+registrar-worker+xqueue+xqueue_consumer+enterprise-catalog
7171

7272
# Services with database migrations.
7373
# Should be a subset of $(EDX_SERVICES).

provision-enterprise_catalog.sh

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name="enterprise-catalog"
2+
port="18160"
3+
4+
docker compose up -d $name
5+
6+
# Run migrations
7+
echo -e "${GREEN}Running migrations for ${name}...${NC}"
8+
docker exec -t enterprise.catalog.app bash -c "cd /edx/app/${name}/${name}/ && make migrate"
9+
10+
# Create superuser
11+
echo -e "${GREEN}Creating super-user for ${name}...${NC}"
12+
docker exec -t enterprise.catalog.app bash -c "echo 'from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser(\"edx\", \"[email protected]\", \"edx\") if not User.objects.filter(username=\"edx\").exists() else None' | python /edx/app/${name}/${name}/manage.py shell"
13+
14+
# Provision IDA User in LMS
15+
echo -e "${GREEN}Provisioning ${name}_worker in LMS...${NC}"
16+
docker exec -t edx.devstack.lms bash -c "source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py lms --settings=devstack_docker manage_user ${name}_worker ${name}[email protected] --staff --superuser"
17+
18+
# Create the DOT applications - one for single sign-on and one for backend service IDA-to-IDA authentication.
19+
docker exec -t edx.devstack.lms bash -c "source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py lms --settings=devstack_docker create_dot_application --grant-type authorization-code --skip-authorization --redirect-uris 'http://localhost:${port}/complete/edx-oauth2/' --client-id '${name}-sso-key' --client-secret '${name}-sso-secret' --scopes 'user_id' ${name}-sso ${name}_worker"
20+
docker exec -t edx.devstack.lms bash -c "source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py lms --settings=devstack_docker create_dot_application --grant-type client-credentials --client-id '${name}-backend-service-key' --client-secret '${name}-backend-service-secret' ${name}-backend-service ${name}_worker"
21+
22+
# Restart enterprise.catalog app and worker containers
23+
docker-compose restart app worker

provision-mysql80.sql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ CREATE DATABASE IF NOT EXISTS credentials;
66
CREATE USER IF NOT EXISTS 'credentials001'@'%' IDENTIFIED BY 'password';
77
GRANT ALL ON credentials.* TO 'credentials001'@'%';
88

9+
CREATE DATABASE IF NOT EXISTS enterprise_catalog;
10+
CREATE USER IF NOT EXISTS 'catalog001'@'%' IDENTIFIED BY 'password';
11+
GRANT ALL ON enterprise_catalog.* TO 'catalog001'@'%';
12+
913
CREATE DATABASE IF NOT EXISTS discovery;
1014
CREATE USER IF NOT EXISTS 'discov001'@'%' IDENTIFIED BY 'password';
1115
GRANT ALL ON discovery.* TO 'discov001'@'%';

provision.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# This script will provision the services specified in the argument list,
44
# or all services if no arguments are provided.
55
#
6-
# Non-existant services will be ignored.
6+
# Non-existent services will be ignored.
77
# Specifying services more than once will cause them to be provisioned more
88
# than once.
99
#
@@ -49,6 +49,7 @@ xqueue \
4949
coursegraph \
5050
insights \
5151
analyticsapi \
52+
enterprise-catalog \
5253
"
5354

5455
# What should we provision?

provision.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,7 @@ GRANT ALL ON `reports`.* TO 'analytics001'@'%' IDENTIFIED BY 'password';
3333
CREATE DATABASE IF NOT EXISTS `reports_v1`;
3434
GRANT ALL ON `reports_v1`.* TO 'analytics001'@'%' IDENTIFIED BY 'password';
3535

36+
CREATE DATABASE IF NOT EXISTS `enterprise_catalog`;
37+
GRANT ALL ON `enterprise_catalog`.* TO 'catalog001'@'%' IDENTIFIED BY 'password';
3638

3739
FLUSH PRIVILEGES;

repo.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ repos=(
3636
"https://github.com/openedx/frontend-app-publisher.git"
3737
"https://github.com/edx/edx-analytics-dashboard.git"
3838
"https://github.com/edx/edx-analytics-data-api.git"
39+
"https://github.com/openedx/enterprise-catalog.git"
3940
)
4041

4142
non_release_repos=(
@@ -56,6 +57,7 @@ ssh_repos=(
5657
"[email protected]:openedx/cs_comments_service.git"
5758
"[email protected]:edx/ecommerce.git"
5859
"[email protected]:openedx/edx-notes-api.git"
60+
"[email protected]:openedx/enterprise-catalog.git"
5961
"[email protected]:openedx/edx-platform.git"
6062
"[email protected]:openedx/xqueue.git"
6163
"[email protected]:edx/edx-analytics-dashboard.git"

0 commit comments

Comments
 (0)