Commit 6d121004 by Clinton Blackburn Committed by Clinton Blackburn

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
parent e9337b81
...@@ -18,7 +18,7 @@ devstack.provision: ## Provision all services ...@@ -18,7 +18,7 @@ devstack.provision: ## Provision all services
devstack.reset: ## Remove all service containers devstack.reset: ## Remove all service containers
docker-compose down docker-compose down
devstack.start: clone loopback ## Start all services devstack.start: ## Start all services
docker-compose up docker-compose up
devstack.stop: ## Stop all services devstack.stop: ## Stop all services
......
#!/usr/bin/env bash #!/usr/bin/env bash
# Ensure the containers are started RED='\033[0;31m'
docker-compose up -d GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color
# Bring the database online.
docker-compose up -d mysql
n=0
db_limit=5
db_sleep_time=2
until [ $n -ge $db_limit ]
do
docker exec -i edx.devstack.mysql mysql -uroot < provision.sql && echo -e "${GREEN}Service databases and users have been created.${NC}" && break
n=$[$n+1]
echo -e "${YELLOW}Waiting ${db_sleep_time} seconds for MySQL to come online...${NC}"
sleep 2
done
if [ $n -ge $db_limit ]
then
echo -e "${RED}Failed to create service databases and users!${NC}"
exit 1
fi
# Create the databases and users # Bring the rest of the services online
docker exec -i edx.devstack.mysql mysql -uroot < provision.sql docker-compose up -d
# Create superusers that can access the services without the need for single sign-on # Run migrations, and create superusers that can access the services without the need for single sign-on.
# NOTE: If the users already exist, errors will be raised (in the Django shell), but execution of this provisioning
# script will continue.
services=('credentials' 'discovery' 'ecommerce' 'programs') services=('credentials' 'discovery' 'ecommerce' 'programs')
for service in "${services[@]}" for service in "${services[@]}"
do do
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" echo -e "${GREEN}Running migrations for ${service}...${NC}"
docker exec -t edx.devstack.${service} bash -c 'source /edx/app/$1/$1_env && cd /edx/app/$1/$1/ && make migrate' -- "$service"
echo -e "${GREEN}Creating super-user for ${service}...${NC}"
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"
done done
# TODO Create ecommerce tenant (ECOM-6564) # TODO Create ecommerce tenant (ECOM-6564)
# Use create_or_update_site (https://github.com/edx/ecommerce/blob/master/ecommerce/core/management/commands/create_or_update_site.py) # Use create_or_update_site (https://github.com/edx/ecommerce/blob/master/ecommerce/core/management/commands/create_or_update_site.py)
docker exec -t edx.devstack.ecommerce bash -c 'source /edx/app/ecommerce/ecommerce_env && python /edx/app/ecommerce/ecommerce/manage.py oscar_populate_countries'
# TODO Create discovery tenant with correct credentials (ECOM-6565) # TODO Create discovery tenant with correct credentials (ECOM-6565)
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' 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' &
# TODO Create credentials tenant (ECOM-6566) # TODO Create credentials tenant (ECOM-6566)
# Compile static assets. We do this last since it takes the longest.
# NOTE: Programs has no static assets.
services=('credentials' 'discovery' 'ecommerce')
for service in "${services[@]}"
do
echo -e "${GREEN}Compiling static assets for ${service}...${NC}"
docker exec -t edx.devstack.${service} bash -c 'source /edx/app/$1/$1_env && cd /edx/app/$1/$1/ && make static' -- "$service"
done
echo -e "${GREEN}Provisioning complete!${NC}"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment