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

Commit 6d12100

Browse files
Clinton Blackburnclintonb
authored andcommitted
Updated provisioning script
- Waiting for MySQL container to come online before provisioning databases - Creating superusers for each service - Populating countries for the E-Commerce Service - Using devstack URLs for the Catalog/Discovery Service partner - Compiling static assets for each service (except programs, which has no static assets) ECOM-6560
1 parent e9337b8 commit 6d12100

File tree

2 files changed

+45
-10
lines changed

2 files changed

+45
-10
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ devstack.provision: ## Provision all services
1818
devstack.reset: ## Remove all service containers
1919
docker-compose down
2020

21-
devstack.start: clone loopback ## Start all services
21+
devstack.start: ## Start all services
2222
docker-compose up
2323

2424
devstack.stop: ## Stop all services

provision.sh

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,60 @@
11
#!/usr/bin/env bash
22

3-
# Ensure the containers are started
4-
docker-compose up -d
3+
RED='\033[0;31m'
4+
GREEN='\033[0;32m'
5+
YELLOW='\033[0;33m'
6+
NC='\033[0m' # No Color
7+
8+
# Bring the database online.
9+
docker-compose up -d mysql
10+
11+
n=0
12+
db_limit=5
13+
db_sleep_time=2
14+
until [ $n -ge $db_limit ]
15+
do
16+
docker exec -i edx.devstack.mysql mysql -uroot < provision.sql && echo -e "${GREEN}Service databases and users have been created.${NC}" && break
17+
n=$[$n+1]
18+
echo -e "${YELLOW}Waiting ${db_sleep_time} seconds for MySQL to come online...${NC}"
19+
sleep 2
20+
done
21+
22+
if [ $n -ge $db_limit ]
23+
then
24+
echo -e "${RED}Failed to create service databases and users!${NC}"
25+
exit 1
26+
fi
527

6-
# Create the databases and users
7-
docker exec -i edx.devstack.mysql mysql -uroot < provision.sql
28+
# Bring the rest of the services online
29+
docker-compose up -d
830

9-
# Create superusers that can access the services without the need for single sign-on
10-
# NOTE: If the users already exist, errors will be raised (in the Django shell), but execution of this provisioning
11-
# script will continue.
31+
# Run migrations, and create superusers that can access the services without the need for single sign-on.
1232
services=('credentials' 'discovery' 'ecommerce' 'programs')
1333
for service in "${services[@]}"
1434
do
15-
docker exec -t edx.devstack.${service} 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\")" | python /edx/app/$1/$1/manage.py shell' -- "$service"
35+
echo -e "${GREEN}Running migrations for ${service}...${NC}"
36+
docker exec -t edx.devstack.${service} bash -c 'source /edx/app/$1/$1_env && cd /edx/app/$1/$1/ && make migrate' -- "$service"
37+
echo -e "${GREEN}Creating super-user for ${service}...${NC}"
38+
docker exec -t edx.devstack.${service} 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' -- "$service"
1639
done
1740

1841

1942
# TODO Create ecommerce tenant (ECOM-6564)
2043
# Use create_or_update_site (https://github.com/edx/ecommerce/blob/master/ecommerce/core/management/commands/create_or_update_site.py)
44+
docker exec -t edx.devstack.ecommerce bash -c 'source /edx/app/ecommerce/ecommerce_env && python /edx/app/ecommerce/ecommerce/manage.py oscar_populate_countries'
2145

2246
# TODO Create discovery tenant with correct credentials (ECOM-6565)
23-
docker exec -t edx.devstack.discovery bash -c 'source /edx/app/discovery/discovery_env && python /edx/app/discovery/discovery/manage.py create_or_update_partner --code edx --name edX --courses-api-url "https://courses.edx.org/api/courses/v1/" --ecommerce-api-url "http://edx.devstack.ecommerce/api/v2/" --organizations-api-url "https://courses.edx.org/api/organizations/v0/" --programs-api-url "http://edx.devstack.programs/api/v1/" --marketing-site-url-root "http://edx.devstack.marketing-site/" --marketing-site-api-url "http://edx.devstack.marketing-site/api/catalog/v2/" --marketing-site-api-username coursediscoveryworker --marketing-site-api-password "edx" --oidc-url-root "https://courses.edx.org/oauth2" --oidc-key discovery-key --oidc-secret discovery-secret'
47+
docker exec -t edx.devstack.discovery bash -c 'source /edx/app/discovery/discovery_env && python /edx/app/discovery/discovery/manage.py create_or_update_partner --code edx --name edX --courses-api-url "http://edx.devstack.edxapp:18000/api/courses/v1/" --ecommerce-api-url "http://edx.devstack.ecommerce:18130/api/v2/" --organizations-api-url "http://edx.devstack.edxapp:18000/api/organizations/v0/" --programs-api-url "http://edx.devstack.programs:18140/api/v1/" --oidc-url-root "http://edx.devstack.edxapp:18000/oauth2" --oidc-key discovery-key --oidc-secret discovery-secret' &
2448

2549
# TODO Create credentials tenant (ECOM-6566)
50+
51+
# Compile static assets. We do this last since it takes the longest.
52+
# NOTE: Programs has no static assets.
53+
services=('credentials' 'discovery' 'ecommerce')
54+
for service in "${services[@]}"
55+
do
56+
echo -e "${GREEN}Compiling static assets for ${service}...${NC}"
57+
docker exec -t edx.devstack.${service} bash -c 'source /edx/app/$1/$1_env && cd /edx/app/$1/$1/ && make static' -- "$service"
58+
done
59+
60+
echo -e "${GREEN}Provisioning complete!${NC}"

0 commit comments

Comments
 (0)