Skip to content

Commit 202ba55

Browse files
mfarhan943iamsobanjaved
authored andcommitted
feat: Add edx exams service to Devstack
1 parent 57dd0fe commit 202ba55

File tree

10 files changed

+72
-2
lines changed

10 files changed

+72
-2
lines changed

.github/workflows/provisioning-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
os:
3131
- ubuntu-24.04
3232
python-version: [ '3.11' ]
33-
services: [ discovery+lms+forum ,registrar+lms, ecommerce+lms, edx_notes_api+lms, credentials+lms, xqueue, analyticsapi+insights+lms, designer+lms, enterprise-subsidy+enterprise-catalog+enterprise-access+lms, license-manager+lms]
33+
services: [ discovery+lms+forum ,registrar+lms, ecommerce+lms, edx_notes_api+lms, credentials+lms, xqueue, analyticsapi+insights+lms, designer+lms, enterprise-subsidy+enterprise-catalog+enterprise-access+lms, license-manager+lms, edx-exams+lms]
3434
fail-fast: false # some services can be flaky; let others run to completion even if one fails
3535

3636
steps:

check.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,12 @@ if should_check license-manager; then
175175
"curl --fail -L http://localhost:18170/health/"
176176
fi
177177

178+
if should_check edx-exams; then
179+
echo "Running edX Exam Devstack tests: "
180+
run_check edx-exams_heartbeat edx-exams \
181+
"curl --fail -L http://localhost:18740/health/"
182+
fi
183+
178184
echo "Successful checks:${succeeded:- NONE}"
179185
echo "Failed checks:${failed:- NONE}"
180186
if [[ -z "$succeeded" ]] && [[ -z "$failed" ]]; then

docker-compose-host.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,11 @@ services:
124124
- ${DEVSTACK_WORKSPACE}/license-manager:/edx/app/license_manager
125125
- ${DEVSTACK_WORKSPACE}/src:/edx/src:cached
126126
- ${PWD}/py_configuration_files/license_manager.py:/edx/app/license_manager/license_manager/settings/devstack.py
127+
edx-exams:
128+
volumes:
129+
- ${DEVSTACK_WORKSPACE}/edx-exams:/edx/app/edx-exams
130+
- ${DEVSTACK_WORKSPACE}/src:/edx/src
131+
- ${PWD}/py_configuration_files/edx_exams.py:/edx/app/edx-exams/edx_exams/settings/devstack.py
127132

128133
# Note that frontends mount `src` to /edx/app/src instead of /edx/src.
129134
# See ADR #5 for rationale.

docker-compose.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -906,6 +906,29 @@ services:
906906
volumes:
907907
- /edx/var/enterprise-subsidy
908908

909+
edx-exams:
910+
image: edxops/edx_exams
911+
container_name: edx.devstack.edx_exams
912+
hostname: edx_exams.devstack.edx
913+
depends_on:
914+
- lms
915+
- mysql80
916+
command: bash -c 'while true; do python /edx/app/edx-exams/manage.py runserver 0.0.0.0:18740; sleep 2; done'
917+
stdin_open: true
918+
tty: true
919+
environment:
920+
DB_HOST: edx.devstack.mysql80
921+
DB_PORT: 3306
922+
DB_NAME: edx_exams
923+
DB_USER: exams001
924+
DB_PASSWORD: password
925+
DJANGO_SETTINGS_MODULE: edx_exams.settings.devstack
926+
working_dir: /edx/app/edx-exams/
927+
ports:
928+
- "18740:18740"
929+
volumes:
930+
- /edx/var/edx-exams
931+
909932
# ==========================================================================
910933
# edX Microfrontends
911934
#

docs/service_list.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ Instead of a service name or list, you can also run commands like ``make dev.pro
7575
+------------------------------------+-------------------------------------+----------------+--------------+
7676
| `enterprise-subsidy`_ | http://localhost:18280 | Python/Django | Extra |
7777
+------------------------------------+-------------------------------------+----------------+--------------+
78+
| `edx-exams`_ | http://localhost:18740 | Python/Django | Extra |
79+
+------------------------------------+-------------------------------------+----------------+--------------+
7880

7981
Some common service combinations include:
8082

@@ -113,3 +115,4 @@ Some common service combinations include:
113115
.. _license-manager: https://github.com/openedx/license-manager
114116
.. _enterprise-access: https://github.com/openedx/enterprise-access
115117
.. _enterprise-subsidy: https://github.com/openedx/enterprise-subsidy
118+
.. _edx-exams: https://github.com/edx/edx-exams

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+codejail+enterprise-subsidy+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+license-manager+designer+enterprise-access
70+
analyticsapi+codejail+enterprise-subsidy+credentials+cms+cms-worker+cms_watcher+discovery+ecommerce+edx-exams+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+license-manager+designer+enterprise-access
7171

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

provision-edx-exams.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env bash
2+
set -eu -o pipefail
3+
4+
. scripts/colors.sh
5+
set -x
6+
7+
name="edx-exams"
8+
port="18740"
9+
10+
docker compose up -d lms
11+
docker compose up -d ${name}
12+
13+
# Run migrations
14+
echo -e "${GREEN}Running migrations for ${name}...${NC}"
15+
docker compose exec -T ${name} bash -e -c "cd /edx/app/edx-exams/ && make migrate"
16+
17+
# Create superuser
18+
echo -e "${GREEN}Creating super-user for ${name}...${NC}"
19+
docker compose exec -T ${name} bash -e -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/edx-exams/manage.py shell"
20+
21+
# Provision IDA User in LMS and
22+
# create the DOT applications - one for single sign-on and one for backend service IDA-to-IDA authentication.
23+
echo -e "${GREEN}Provisioning ${name}_worker in LMS...${NC}"
24+
./provision-ida-user.sh ${name} ${name} ${port}
25+
26+
make dev.restart-devserver.${name}

provision-mysql80.sql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,8 @@ CREATE DATABASE IF NOT EXISTS enterprise_subsidy;
6565
CREATE USER IF NOT EXISTS 'subsidy001'@'%' IDENTIFIED BY 'password';
6666
GRANT ALL ON enterprise_subsidy.* TO 'subsidy001'@'%';
6767

68+
CREATE DATABASE IF NOT EXISTS `edx_exams`;
69+
CREATE USER IF NOT EXISTS 'exams001'@'%' IDENTIFIED BY 'password';
70+
GRANT ALL ON `edx_exams`.* TO 'exams001'@'%';
71+
6872
FLUSH PRIVILEGES;

provision.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ license-manager \
5454
designer \
5555
enterprise-access \
5656
enterprise-subsidy \
57+
edx-exams \
5758
"
5859

5960
# What should we provision?

repo.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ non_release_repos=(
5454
"https://github.com/openedx/frontend-app-profile.git"
5555
"https://github.com/openedx/frontend-app-ora-grading.git"
5656
"https://github.com/openedx/enterprise-subsidy.git"
57+
"https://github.com/edx/edx-exams.git"
5758
)
5859

5960
ssh_repos=(
@@ -90,6 +91,7 @@ non_release_ssh_repos=(
9091
"[email protected]:openedx/frontend-app-profile.git"
9192
"[email protected]:openedx/frontend-app-ora-grading.git"
9293
"[email protected]:openedx/enterprise-subsidy.git"
94+
"[email protected]:edx/edx-exams.git"
9395
)
9496

9597
if [ -n "${OPENEDX_RELEASE}" ]; then

0 commit comments

Comments
 (0)