Skip to content

Commit

Permalink
Add notes service
Browse files Browse the repository at this point in the history
* I also needed to change provision-ida.sh to accept a client name, since
  the notes service bindings in the LMS are hard-coded to use a client
  name which doesn't follow the naming scheme of other IDAs.  This led
  to a tiny refactor  or other provision scripts.
* The decision to use port 18120 was based on the fact that that port
  number is already assumed to be notes in a few other places.
  • Loading branch information
pwnage101 committed Jun 8, 2018
1 parent d1392c6 commit 9fbebb1
Show file tree
Hide file tree
Showing 11 changed files with 60 additions and 19 deletions.
3 changes: 3 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,8 @@ meant to be user-facing, the "homepage" may be the API root.
+---------------------+-------------------------------------+
| LMS | http://localhost:18000/ |
+---------------------+-------------------------------------+
| Notes/edx-notes-api | http://localhost:18120/api/v1/ |
+---------------------+-------------------------------------+
| Studio/CMS | http://localhost:18010/ |
+---------------------+-------------------------------------+

Expand All @@ -315,6 +317,7 @@ simply use the ``docker-compose restart`` command:
- discovery
- ecommerce
- lms
- edx_notes_api
- studio

If you'd like to add some convenience make targets, you can add them to a ``local.mk`` file, ignored by git.
Expand Down
3 changes: 3 additions & 0 deletions docker-compose-host.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ services:
- ${DEVSTACK_WORKSPACE}/edx-platform:/edx/app/edxapp/edx-platform:cached
- edxapp_node_modules:/edx/app/edxapp/edx-platform/node_modules
- ${DEVSTACK_WORKSPACE}/src:/edx/src:cached
edx_notes_api:
volumes:
- ${DEVSTACK_WORKSPACE}/edx-notes-api:/edx/app/edx_notes_api/edx_notes_api:cached
studio:
volumes:
- ${DEVSTACK_WORKSPACE}/edx-platform:/edx/app/edxapp/edx-platform:cached
Expand Down
20 changes: 20 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,26 @@ services:
volumes:
- edxapp_lms_assets:/edx/var/edxapp/staticfiles/

edx_notes_api:
command: bash -c 'source /edx/app/edx_notes_api/edx_notes_api_env && while true; do python /edx/app/edx_notes_api/edx_notes_api/manage.py runserver 0.0.0.0:18120 --settings notesserver.settings.devstack; sleep 2; done'
container_name: edx.devstack.edx_notes_api
depends_on:
- devpi
- elasticsearch
- mysql
image: edxops/notes:latest
ports:
- "18120:18120"
environment:
DB_ENGINE: "django.db.backends.mysql"
DB_HOST: "edx.devstack.mysql"
DB_NAME: "notes"
DB_PASSWORD: "password"
DB_PORT: "3306"
DB_USER: "notes001"
ENABLE_DJANGO_TOOLBAR: 1
ELASTICSEARCH_URL: "http://edx.devstack.elasticsearch:9200"

studio:
command: bash -c 'source /edx/app/edxapp/edxapp_env && while true; do python /edx/app/edxapp/edx-platform/manage.py cms runserver 0.0.0.0:18010 --settings devstack_docker; sleep 2; done'
container_name: edx.devstack.studio
Expand Down
2 changes: 1 addition & 1 deletion provision-discovery.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Provisioning script for the discovery service
./provision-ida.sh discovery 18381
./provision-ida.sh discovery discovery 18381

docker-compose exec discovery bash -c 'rm -rf /edx/var/discovery/*'
docker-compose exec discovery bash -c 'source /edx/app/discovery/discovery_env && python /edx/app/discovery/discovery/manage.py create_or_update_partner --site-id 1 --site-domain localhost:18381 --code edx --name edX --courses-api-url "http://edx.devstack.lms:18000/api/courses/v1/" --ecommerce-api-url "http://edx.devstack.ecommerce:18130/api/v2/" --organizations-api-url "http://edx.devstack.lms:18000/api/organizations/v0/" --oidc-url-root "http://edx.devstack.lms:18000/oauth2" --oidc-key discovery-key --oidc-secret discovery-secret'
Expand Down
2 changes: 1 addition & 1 deletion provision-ecommerce.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Load database dumps for the largest databases to save time
./load-db.sh ecommerce

./provision-ida.sh ecommerce 18130
./provision-ida.sh ecommerce ecommerce 18130

# Configure ecommerce
docker exec -t edx.devstack.ecommerce bash -c 'source /edx/app/ecommerce/ecommerce_env && python /edx/app/ecommerce/ecommerce/manage.py create_or_update_site --site-id=1 --site-domain=localhost:18130 --partner-code=edX --partner-name="Open edX" --lms-url-root=http://edx.devstack.lms:18000 --client-side-payment-processor=cybersource --payment-processors=cybersource,paypal --client-id=ecommerce-key --client-secret=ecommerce-secret --from-email staff@example.com --discovery_api_url=http://edx.devstack.discovery:18381/api/v1/'
Expand Down
11 changes: 6 additions & 5 deletions provision-ida-user.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
#This script depends on the LMS being up!

name=$1
port=$2
app_name=$1
client_name=$2
client_port=$3

echo -e "${GREEN}Creating service user and OAuth client for ${name}...${NC}"
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 $1_worker $1_worker@example.com --staff --superuser' -- "$name"
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_oauth2_client "http://localhost:$2" "http://localhost:$2/complete/edx-oidc/" confidential --client_name $1 --client_id "$1-key" --client_secret "$1-secret" --trusted --logout_uri "http://localhost:$2/logout/" --username $1_worker' -- "$name" "$port"
echo -e "${GREEN}Creating service user and OAuth client for ${app_name}...${NC}"
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 $1_worker $1_worker@example.com --staff --superuser' -- "$app_name"
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_oauth2_client "http://localhost:$3" "http://localhost:$3/complete/edx-oidc/" confidential --client_name $2 --client_id "$1-key" --client_secret "$1-secret" --trusted --logout_uri "http://localhost:$3/logout/" --username $1_worker' -- "$app_name" "$client_name" "$client_port"
25 changes: 13 additions & 12 deletions provision-ida.sh
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
name=$1
port=$2
app_name=$1 # The name of the IDA application, i.e. /edx/app/<app_name>
client_name=$2 # The name of the Oauth client stored in the edxapp DB.
client_port=$3 # The port corresponding to this IDA service in devstack.

docker-compose $DOCKER_COMPOSE_FILES up -d $name
docker-compose $DOCKER_COMPOSE_FILES up -d $app_name

echo -e "${GREEN}Installing requirements for ${name}...${NC}"
docker exec -t edx.devstack.${name} bash -c 'source /edx/app/$1/$1_env && cd /edx/app/$1/$1/ && make requirements' -- "$name"
echo -e "${GREEN}Installing requirements for ${app_name}...${NC}"
docker exec -t edx.devstack.${app_name} bash -c 'source /edx/app/$1/$1_env && cd /edx/app/$1/$1/ && make requirements' -- "$app_name"

echo -e "${GREEN}Running migrations for ${name}...${NC}"
docker exec -t edx.devstack.${name} bash -c 'source /edx/app/$1/$1_env && cd /edx/app/$1/$1/ && make migrate' -- "$name"
echo -e "${GREEN}Running migrations for ${app_name}...${NC}"
docker exec -t edx.devstack.${app_name} bash -c 'source /edx/app/$1/$1_env && cd /edx/app/$1/$1/ && make migrate' -- "$app_name"

echo -e "${GREEN}Creating super-user for ${name}...${NC}"
docker exec -t edx.devstack.${name} bash -c 'source /edx/app/$1/$1_env && echo "from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser(\"edx\", \"edx@example.com\", \"edx\") if not User.objects.filter(username=\"edx\").exists() else None" | python /edx/app/$1/$1/manage.py shell' -- "$name"
echo -e "${GREEN}Creating super-user for ${app_name}...${NC}"
docker exec -t edx.devstack.${app_name} bash -c 'source /edx/app/$1/$1_env && echo "from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser(\"edx\", \"edx@example.com\", \"edx\") if not User.objects.filter(username=\"edx\").exists() else None" | python /edx/app/$1/$1/manage.py shell' -- "$app_name"

./provision-ida-user.sh $name $port
./provision-ida-user.sh $app_name $client_name $client_port

# Compile static assets last since they are absolutely necessary for all services. This will allow developers to get
# started if they do not care about static assets
echo -e "${GREEN}Compiling static assets for ${name}...${NC}"
docker exec -t edx.devstack.${name} bash -c 'source /edx/app/$1/$1_env && cd /edx/app/$1/$1/ && make static' -- "$name"
echo -e "${GREEN}Compiling static assets for ${app_name}...${NC}"
docker exec -t edx.devstack.${app_name} bash -c 'source /edx/app/$1/$1_env && cd /edx/app/$1/$1/ && make static' -- "$app_name"
8 changes: 8 additions & 0 deletions provision-notes.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Provisioning script for the notes service

# Common provisioning tasks for IDAs, including requirements, migrations, oauth client creation, etc.
./provision-ida.sh edx_notes_api edx-notes 18120

# This will build the elasticsearch index for notes.
echo -e "${GREEN}Creating indexes for edx_notes_api...${NC}"
docker exec -t edx.devstack.edx_notes_api bash -c 'source /edx/app/$1/$1_env && cd /edx/app/$1/$1/ && python manage.py rebuild_index --noinput' -- edx_notes_api
1 change: 1 addition & 0 deletions provision.sh
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ docker-compose $DOCKER_COMPOSE_FILES up -d studio
./provision-credentials.sh
./provision-e2e.sh
./provision-forum.sh
./provision-notes.sh

docker image prune -f

Expand Down
3 changes: 3 additions & 0 deletions provision.sql
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ GRANT ALL ON ecommerce.* TO 'ecomm001'@'%' IDENTIFIED BY 'password';
CREATE DATABASE IF NOT EXISTS edxmktg;
GRANT ALL ON edxmktg.* TO 'edxmktg001'@'%' IDENTIFIED BY 'password';

CREATE DATABASE IF NOT EXISTS notes;
GRANT ALL ON notes.* TO 'notes001'@'%' IDENTIFIED BY 'password';

CREATE DATABASE IF NOT EXISTS edxapp;
CREATE DATABASE IF NOT EXISTS edxapp_csmh;
GRANT ALL ON edxapp.* TO 'edxapp001'@'%' IDENTIFIED BY 'password';
Expand Down
1 change: 1 addition & 0 deletions repo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ repos=(
"https://github.com/edx/cs_comments_service.git"
"https://github.com/edx/ecommerce.git"
"https://github.com/edx/edx-e2e-tests.git"
"https://github.com/edx/edx-notes-api.git"
"https://github.com/edx/edx-platform.git"
"https://github.com/edx/xqueue.git"
"https://github.com/edx/edx-analytics-pipeline.git"
Expand Down

0 comments on commit 9fbebb1

Please sign in to comment.