|
1 | 1 | #!/usr/bin/env bash |
2 | 2 |
|
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 |
5 | 27 |
|
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 |
8 | 30 |
|
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. |
12 | 32 | services=('credentials' 'discovery' 'ecommerce' 'programs') |
13 | 33 | for service in "${services[@]}" |
14 | 34 | 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" |
16 | 39 | done |
17 | 40 |
|
18 | 41 |
|
19 | 42 | # TODO Create ecommerce tenant (ECOM-6564) |
20 | 43 | # 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' |
21 | 45 |
|
22 | 46 | # 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' & |
24 | 48 |
|
25 | 49 | # 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