Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
55320c5
Sort news items by publish_date (#1522)
mbertrand Sep 6, 2024
df12493
display sub topics on topic channels (#1511)
gumaerc Sep 6, 2024
64a59e8
Update dependency Django to v4.2.16 (#1529)
renovate[bot] Sep 7, 2024
dfd769a
Update dependency ruff to v0.6.4 (#1530)
renovate[bot] Sep 7, 2024
1c290a8
Update mcr.microsoft.com/playwright Docker tag to v1.47.0 (#1531)
renovate[bot] Sep 7, 2024
a2ddda6
Add LearningResource.delivery field (eventually to replace learning_f…
mbertrand Sep 9, 2024
b64bcb8
learning resource drawer list buttons (#1537)
gumaerc Sep 10, 2024
dcf6b4e
Fix data migration erroring if a record exists (#1543)
rhysyngsun Sep 10, 2024
6afa145
license_cc and continuing_ed_credits fields (#1544)
mbertrand Sep 11, 2024
61c6441
ETL pipeline for MIT edX programs (#1536)
mbertrand Sep 11, 2024
4a9e05c
Merge branch 'release' into main
odlbot Sep 12, 2024
3eb1bf3
Update docker.elastic.co/elasticsearch/elasticsearch Docker tag to v8…
renovate[bot] Sep 12, 2024
abd4d0f
Update dependency pytest-cov to v5 (#1549)
renovate[bot] Sep 12, 2024
383886e
Update dependency @faker-js/faker to v9 (#1533)
renovate[bot] Sep 12, 2024
f70fb99
Update dependency attrs to v24 (#1535)
renovate[bot] Sep 12, 2024
4ec17e3
Update actions/upload-artifact digest to 5076954 (#1528)
renovate[bot] Sep 12, 2024
af0d523
Update dependency faker to v28 (#1550)
renovate[bot] Sep 12, 2024
3bff381
Update docker-compose config to support OS cluster (#1540)
rhysyngsun Sep 12, 2024
6999c4c
Release 0.19.0
odlbot Sep 12, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"runServices": [
"watch",
"web",
"opensearch-node-mitopen",
"opensearch-node-mitopen-1",
"db",
"tika",
"celery",
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
- 6379:6379

elastic:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.23
image: docker.elastic.co/elasticsearch/elasticsearch:8.15.1
env:
network.host: "0.0.0.0"
http.cors.enabled: "true"
Expand Down Expand Up @@ -145,7 +145,7 @@ jobs:
NODE_ENV: test

- name: Upload frontend build
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4
with:
name: frontend-build
path: frontends/mit-learn/build
Expand Down Expand Up @@ -301,7 +301,7 @@ jobs:

- name: Upload artifact
if: always()
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4
with:
name: playwright-report
path: e2e_testing/playwright-report
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,6 @@ RUN apt-get clean && apt-get purge

USER mitodl

EXPOSE 8063
ENV PORT 8063
EXPOSE 8061
ENV PORT 8061
CMD uwsgi uwsgi.ini
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,18 @@ To enable searching the course catalog on opensearch, run through these steps:
3. Once created and with `docker compose up` running, hit this endpoint in your browser to see if the index exists: `http://localhost:9101/discussions_local_all_default/_search`
4. If yes, to run a specific query, make a `POST` request (using `curl`, [Postman](https://www.getpostman.com/downloads/), Python `requests`, etc.) to the above endpoint with a `json` payload. For example, to search for all courses, run a query with Content-Type as `application/json` and with a body `{"query":{"term":{"object_type":"course"}}}`

### Running OpenSearch as a multi-node local cluster

By default the configuration runs OpenSearch in `single-node` mode. If you'd like to run a 3-node cluster locally you can set the following environment variable in your shell.

```shell
export OPENSEARCH_CLUSTER_TYPE=cluster
```

You should make this permanent by using `direnv` or similar so that all your shell sessions are using the same docker compose config):

After setting this and running `docker compose up` you'll see this 3 node cluster be created. Note that the volumes used by these containers are separate from the volume used by the single-node setup so you will need to recreate your indicies. This is intentional and critical to being able to switch back and forth between `single-node` and `cluster` setups.

### Running the app in a notebook

This repo includes a config for running a [Jupyter notebook](https://jupyter.org/) in a Docker container. This enables you to do in a Jupyter notebook anything you might otherwise do in a Django shell. To get started:
Expand Down
21 changes: 21 additions & 0 deletions RELEASE.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,27 @@
Release Notes
=============

Version 0.19.0
--------------

- Update docker-compose config to support OS cluster (#1540)
- Update dependency faker to v28 (#1550)
- Update actions/upload-artifact digest to 5076954 (#1528)
- Update dependency attrs to v24 (#1535)
- Update dependency @faker-js/faker to v9 (#1533)
- Update dependency pytest-cov to v5 (#1549)
- Update docker.elastic.co/elasticsearch/elasticsearch Docker tag to v8 (#1260)
- ETL pipeline for MIT edX programs (#1536)
- license_cc and continuing_ed_credits fields (#1544)
- Fix data migration erroring if a record exists (#1543)
- learning resource drawer list buttons (#1537)
- Add LearningResource.delivery field (eventually to replace learning_format) (#1510)
- Update mcr.microsoft.com/playwright Docker tag to v1.47.0 (#1531)
- Update dependency ruff to v0.6.4 (#1530)
- Update dependency Django to v4.2.16 (#1529)
- display sub topics on topic channels (#1511)
- Sort news items by publish_date (#1522)

Version 0.18.2 (Released September 12, 2024)
--------------

Expand Down
4 changes: 4 additions & 0 deletions app.json
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,10 @@
"description": "S3 prefix for MITx bucket keys",
"required": false
},
"EDX_PROGRAMS_API_URL": {
"description": "The catalog url for MITx programs",
"required": false
},
"OPENSEARCH_HTTP_AUTH": {
"description": "Basic auth settings for connecting to OpenSearch"
},
Expand Down
6 changes: 4 additions & 2 deletions data_fixtures/migrations/0014_add_department_SP.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def add_sp(apps, schema_editor):
Channel = apps.get_model("channels", "Channel")
ChannelDepartmentDetail = apps.get_model("channels", "ChannelDepartmentDetail")

department = LearningResourceDepartment.objects.create(
department, _ = LearningResourceDepartment.objects.get_or_create(
department_id="SP",
name="Special Programs",
)
Expand All @@ -42,7 +42,9 @@ def add_sp(apps, schema_editor):
name=slugify(department.name),
title=department.name,
)
ChannelDepartmentDetail.objects.create(channel=channel, department=department)
ChannelDepartmentDetail.objects.get_or_create(
channel=channel, department=department
)


class Migration(migrations.Migration):
Expand Down
68 changes: 68 additions & 0 deletions docker-compose.apps.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
include:
- docker-compose.opensearch.${OPENSEARCH_CLUSTER_TYPE:-single-node}.yml

services:
web:
profiles:
- backend
build:
context: .
dockerfile: Dockerfile
extends:
file: docker-compose.opensearch.${OPENSEARCH_CLUSTER_TYPE:-single-node}.apps.yml
service: web
mem_limit: 1gb
cpus: 2
command: ./scripts/run-django-dev.sh
stdin_open: true
tty: true
ports:
- "8061:8061"
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
volumes:
- .:/src
- django_media:/var/media

watch:
profiles:
- frontend
working_dir: /src
image: node:20.17
entrypoint: ["/bin/sh", "-c"]
command:
- |
yarn install --immutable
yarn workspace mit-learn storybook --no-open &
yarn workspace mit-learn watch:docker
ports:
- "8062:8062"
- "6006:6006"
volumes:
- .:/src

celery:
profiles:
- backend
build:
context: .
dockerfile: Dockerfile
extends:
file: docker-compose.opensearch.${OPENSEARCH_CLUSTER_TYPE:-single-node}.apps.yml
service: web
command: >
/bin/bash -c '
sleep 3;
celery -A main.celery:app worker -Q default -B -l ${MITOL_LOG_LEVEL:-INFO} &
celery -A main.celery:app worker -Q edx_content,default -l ${MITOL_LOG_LEVEL:-INFO}'
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
volumes:
- .:/src
- django_media:/var/media
93 changes: 12 additions & 81 deletions docker-compose.codespaces.yml
Original file line number Diff line number Diff line change
@@ -1,90 +1,21 @@
x-environment: &py-environment
include:
- docker-compose.services.yml

services:
db:
extends:
file: docker-compose.yml
service: db
env_file: env/codespaces.env
redis:
extends:
file: docker-compose.yml
service: redis
web:
profiles:
- backend
build:
context: .
dockerfile: Dockerfile
mem_limit: 1gb
cpus: 2
extends:
file: docker-compose.apps.yml
service: web
env_file: env/codespaces.env
environment:
PORT: 8061
command: ./scripts/run-django-dev.sh
stdin_open: true
tty: true
ports:
- "8061:8061"
links:
- db
- opensearch-node-mitopen
- redis
volumes:
- .:/src
- django_media:/var/media

watch:
profiles:
- frontend
working_dir: /src
image: node:20.17
entrypoint: ["/bin/sh", "-c"]
command:
- |
yarn install --immutable
yarn workspace mit-learn storybook --no-open &
yarn workspace mit-learn watch:docker
extends:
file: docker-compose.apps.yml
service: watch
env_file: env/codespaces.env
ports:
- "8062:8062"
- "6006:6006"
volumes:
- .:/src

celery:
profiles:
- backend
build:
context: .
dockerfile: Dockerfile
env_file: env/codespaces.env
command: >
/bin/bash -c '
sleep 3;
celery -A main.celery:app worker -Q default -B -l ${MITOL_LOG_LEVEL:-INFO} &
celery -A main.celery:app worker -Q edx_content,default -l ${MITOL_LOG_LEVEL:-INFO}'
links:
- db
- opensearch-node-mitopen
- redis
volumes:
- .:/src
- django_media:/var/media
tika:
extends:
file: docker-compose.yml
service: tika
opensearch-node-mitopen:
extends:
file: docker-compose.yml
service: opensearch-node-mitopen
file: docker-compose.apps.yml
service: celery
env_file: env/codespaces.env
nginx:
extends:
file: docker-compose.yml
service: nginx

volumes:
opensearch-data1:
django_media:
yarn-cache:
pgdata:
21 changes: 21 additions & 0 deletions docker-compose.opensearch.base.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
services:
opensearch:
image: opensearchproject/opensearch:2.16.0
environment:
- "cluster.name=opensearch-cluster"
- "bootstrap.memory_lock=true" # along with the memlock settings below, disables swapping
- "OPENSEARCH_JAVA_OPTS=-Xms1024m -Xmx1024m" # Set min and max JVM heap sizes to at least 50% of system RAM
- "DISABLE_INSTALL_DEMO_CONFIG=true" # disables execution of install_demo_configuration.sh bundled with security plugin, which installs demo certificates and security configurations to OpenSearch
- "DISABLE_SECURITY_PLUGIN=true" # disables security plugin entirely in OpenSearch by setting plugins.security.disabled: true in opensearch.yml
healthcheck:
test: curl http://localhost:9200/_cluster/health || exit 1
interval: 3s
timeout: 3s
retries: 20
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536 # maximum number of open files for the OpenSearch user, set to at least 65536 on modern systems
hard: 65536
17 changes: 17 additions & 0 deletions docker-compose.opensearch.cluster.apps.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
services:
web:
depends_on:
opensearch-node-mitopen-1:
condition: service_healthy
opensearch-node-mitopen-2:
condition: service_healthy
opensearch-node-mitopen-3:
condition: service_healthy
celery:
depends_on:
opensearch-node-mitopen-1:
condition: service_healthy
opensearch-node-mitopen-2:
condition: service_healthy
opensearch-node-mitopen-3:
condition: service_healthy
48 changes: 48 additions & 0 deletions docker-compose.opensearch.cluster.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
services:
opensearch-node-mitopen-1:
extends:
file: docker-compose.opensearch.base.yml
service: opensearch
hostname: opensearch-node-mitopen-1
environment:
- "node.name=opensearch-node-mitopen-1"
- "discovery.seed_hosts=opensearch-node-mitopen-1,opensearch-node-mitopen-2,opensearch-node-mitopen-3"
- "cluster.initial_cluster_manager_nodes=opensearch-node-mitopen-1,opensearch-node-mitopen-2,opensearch-node-mitopen-3"
volumes:
- opensearch-cluster-data1:/usr/share/opensearch/data
ports:
- 9100:9200 # REST API
- 9500:9600 # Performance Analyzer
opensearch-node-mitopen-2:
extends:
file: docker-compose.opensearch.base.yml
service: opensearch
hostname: opensearch-node-mitopen-2
environment:
- "node.name=opensearch-node-mitopen-2"
- "discovery.seed_hosts=opensearch-node-mitopen-1,opensearch-node-mitopen-2,opensearch-node-mitopen-3"
- "cluster.initial_cluster_manager_nodes=opensearch-node-mitopen-1,opensearch-node-mitopen-2,opensearch-node-mitopen-3"
volumes:
- opensearch-cluster-data2:/usr/share/opensearch/data
ports:
- 9101:9200 # REST API
- 9501:9600 # Performance Analyzer
opensearch-node-mitopen-3:
extends:
file: docker-compose.opensearch.base.yml
service: opensearch
hostname: opensearch-node-mitopen-3
environment:
- "node.name=opensearch-node-mitopen-3"
- "discovery.seed_hosts=opensearch-node-mitopen-1,opensearch-node-mitopen-2,opensearch-node-mitopen-3"
- "cluster.initial_cluster_manager_nodes=opensearch-node-mitopen-1,opensearch-node-mitopen-2,opensearch-node-mitopen-3"
volumes:
- opensearch-cluster-data3:/usr/share/opensearch/data
ports:
- 9102:9200 # REST API
- 9502:9600 # Performance Analyzer

volumes:
opensearch-cluster-data1:
opensearch-cluster-data2:
opensearch-cluster-data3:
9 changes: 9 additions & 0 deletions docker-compose.opensearch.single-node.apps.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
services:
web:
depends_on:
opensearch-node-mitopen-1:
condition: service_healthy
celery:
depends_on:
opensearch-node-mitopen-1:
condition: service_healthy
Loading