Skip to content
This repository was archived by the owner on Aug 1, 2024. It is now read-only.

Commit 89eceee

Browse files
authored
feat: add analytics data api (#847)
1 parent 0632162 commit 89eceee

11 files changed

Lines changed: 80 additions & 5 deletions

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,9 @@ dev.shell.studio_watcher:
442442
dev.shell.xqueue_consumer:
443443
docker-compose exec xqueue_consumer env TERM=$(TERM) /edx/app/xqueue/devstack.sh open
444444

445+
dev.shell.analyticsapi:
446+
docker exec -it edx.devstack.analyticsapi env TERM=$(TERM) /edx/app/analytics_api/devstack.sh open
447+
445448
dev.shell.insights:
446449
docker-compose exec insights env TERM=$(TERM) bash -c 'eval $$(source /edx/app/insights/insights_env; echo PATH="$$PATH";) && /edx/app/insights/devstack.sh open'
447450

README.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,8 @@ Instead of a service name or list, you can also run commands like ``make dev.pro
322322
+------------------------------------+-------------------------------------+----------------+--------------+
323323
| `insights` | http://localhost:18110 | Python/Django | Extra |
324324
+------------------------------------+-------------------------------------+----------------+--------------+
325+
| `analyticsapi` | http://localhost:19001 | Python/Django | Extra |
326+
+------------------------------------+-------------------------------------+----------------+--------------+
325327
| `frontend-app-ora-grading` | http://localhost:1993 | MFE (React.js) | Extra |
326328
+------------------------------------+-------------------------------------+----------------+--------------+
327329

@@ -351,6 +353,8 @@ Some common service combinations include:
351353
.. _xqueue: https://github.com/edx/xqueue
352354
.. _coursegraph: https://github.com/edx/edx-platform/tree/master/openedx/core/djangoapps/coursegraph
353355
.. _frontend-app-ora-grading: https://github.com/edx/frontend-app-ora-grading
356+
.. _insights: https://github.com/edx/edx-analytics-dashboard
357+
.. _analyticsapi: https://github.com/edx/edx-analytics-data-api
354358

355359

356360
Known Issues

check.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,12 @@ if should_check insights; then
115115
"curl --fail -L http://localhost:18110/health/"
116116
fi
117117

118+
if should_check analyticsapi; then
119+
echo "Running Analytics Data API Devstack tests: "
120+
run_check analyticsapi_heartbeat analyticsapi \
121+
"curl --fail -L http://localhost:19001/health/"
122+
fi
123+
118124
echo "Successful checks:${succeeded:- NONE}"
119125
echo "Failed checks:${failed:- NONE}"
120126
if [[ "$succeeded" ]]; then

docker-compose-host.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ services:
5353
volumes:
5454
- ${DEVSTACK_WORKSPACE}/edx-analytics-dashboard:/edx/app/insights/insights
5555
- insights_node_modules:/edx/app/insights/insights/node_modules
56+
analyticsapi:
57+
volumes:
58+
- ${DEVSTACK_WORKSPACE}/edx-analytics-data-api:/edx/app/analytics_api/analytics_api
5659

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

docker-compose.yml

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,7 @@ services:
356356
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.insights"
357357
hostname: insights.devstack.edx
358358
depends_on:
359+
- analyticsapi
359360
- mysql57
360361
- lms
361362
- memcached
@@ -366,8 +367,8 @@ services:
366367
DB_HOST: edx.devstack.mysql57
367368
DB_NAME: dashboard
368369
DB_PORT: 3306
369-
DB_USER: rozencrantz
370-
DB_PASSWORD: secret
370+
DB_USER: analytics001
371+
DB_PASSWORD: password
371372
LMS_HOST: http://localhost:18000
372373
DJANGO_SETTINGS_MODULE: analytics_dashboard.settings.devstack
373374
image: edxops/insights:${OPENEDX_RELEASE:-latest}
@@ -380,6 +381,27 @@ services:
380381
volumes:
381382
- /edx/var/insights/
382383

384+
analyticsapi:
385+
image: edxops/analytics_api:${OPENEDX_RELEASE:-latest}
386+
container_name: edx.devstack.analyticsapi
387+
hostname: analyticsapi
388+
depends_on:
389+
- mysql57
390+
- elasticsearch710
391+
command: bash -c 'source /edx/app/analytics_api/analytics_api_env && while true; do python /edx/app/analytics_api/analytics_api/manage.py runserver 0.0.0.0:19001 --settings analyticsdataserver.settings.devstack; sleep 2; done'
392+
stdin_open: true
393+
tty: true
394+
environment:
395+
DB_HOST: edx.devstack.mysql57
396+
DB_PORT: 3306
397+
DB_USER: analytics001
398+
DB_PASSWORD: password
399+
ELASTICSEARCH_LEARNERS_HOST: edx.devstack.elasticsearch710
400+
ports:
401+
- "19001:19001"
402+
volumes:
403+
- /edx/var/analyticsapi
404+
383405
registrar:
384406
command: bash -c 'source /edx/app/registrar/registrar_env && while true; do python /edx/app/registrar/registrar/manage.py runserver 0.0.0.0:18734; sleep 2; done'
385407
container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.registrar"

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-gradebook+front
6767
# Separated by plus signs.
6868
# Separated by plus signs. Listed in alphabetical order for clarity.
6969
EDX_SERVICES ?= \
70-
credentials+discovery+ecommerce+edx_notes_api+forum+frontend-app-account+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_watcher+registrar+registrar-worker+studio+studio_watcher+xqueue+xqueue_consumer
70+
analyticsapi+credentials+discovery+ecommerce+edx_notes_api+forum+frontend-app-account+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_watcher+registrar+registrar-worker+studio+studio_watcher+xqueue+xqueue_consumer
7171

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

provision-analyticsapi.sh

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/env bash
2+
set -eu -o pipefail
3+
4+
. scripts/colors.sh
5+
set -x
6+
7+
name=analyticsapi
8+
port=19001
9+
10+
docker-compose up -d ${name}
11+
12+
echo -e "${GREEN}Installing requirements for ${name}...${NC}"
13+
docker-compose exec -T ${name} bash -e -c 'source /edx/app/analytics_api/analytics_api_env && cd /edx/app/analytics_api/analytics_api && make develop' -- ${name}
14+
15+
echo -e "${GREEN}Running migrations for ${name}...${NC}"
16+
docker-compose exec -T ${name} bash -e -c 'source /edx/app/analytics_api/analytics_api_env && export DJANGO_SETTINGS_MODULE="analyticsdataserver.settings.devstack" && cd /edx/app/analytics_api/analytics_api && make migrate-all' -- ${name}
17+
18+
echo -e "${GREEN}Creating default user and authentication token for ${name}...${NC}"
19+
docker-compose exec -T ${name} bash -e -c 'source /edx/app/analytics_api/analytics_api_env && cd /edx/app/analytics_api/analytics_api && python manage.py set_api_key edx edx' -- ${name}
20+
21+
echo -e "${GREEN}Loading test data for ${name}...${NC}"
22+
docker-compose exec -T ${name} bash -e -c 'source /edx/app/analytics_api/analytics_api_env && cd /edx/app/analytics_api/analytics_api && make loaddata' -- ${name}
23+
24+
echo -e "${GREEN}Populating elasticsearch for ${name}...${NC}"
25+
docker-compose exec -T ${name} bash -e -c 'source /edx/app/analytics_api/analytics_api_env && cd /edx/app/analytics_api/analytics_api && make create_indices' -- ${name}

provision-insights.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ set -eu -o pipefail
55
set -x
66

77
name=insights
8-
port=8011
8+
port=18011
99

1010
docker-compose up -d insights
1111

provision.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ registrar \
4949
xqueue \
5050
coursegraph \
5151
insights \
52+
analyticsapi \
5253
"
5354

5455
# What should we provision?

provision.sql

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ GRANT ALL ON edxapp.* TO 'edxapp001'@'%' IDENTIFIED BY 'password';
2222
GRANT ALL ON edxapp_csmh.* TO 'edxapp001'@'%';
2323

2424
CREATE DATABASE IF NOT EXISTS `dashboard`;
25-
GRANT ALL PRIVILEGES ON `dashboard`.* TO 'rozencrantz'@'%' IDENTIFIED BY 'secret';
25+
GRANT ALL ON `dashboard`.* TO 'analytics001'@'%' IDENTIFIED BY 'password';
26+
27+
CREATE DATABASE IF NOT EXISTS `analytics-api`;
28+
GRANT ALL ON `analytics-api`.* TO 'analytics001'@'%' IDENTIFIED BY 'password';
29+
30+
CREATE DATABASE IF NOT EXISTS `reports`;
31+
GRANT ALL ON `reports`.* TO 'analytics001'@'%' IDENTIFIED BY 'password';
32+
2633

2734
FLUSH PRIVILEGES;

0 commit comments

Comments
 (0)