Skip to content

Commit 7cee2a8

Browse files
committed
fix: Finally replace awkward one-liner to create system-wide enterprise role assignments
This also adds one missing role assignment for the enterprise_worker user, which we always just relied on seed_enterprise_devstack_data management command to do, but it really should have been here all along.
1 parent ed35ccc commit 7cee2a8

5 files changed

Lines changed: 7 additions & 8 deletions

File tree

enterprise/provision.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,6 @@ docker compose exec -T lms bash -e -c 'source /edx/app/edxapp/edxapp_env && pyth
66
cat enterprise/worker_permissions.py | docker compose exec -T lms bash -e -c 'source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py lms shell --settings=devstack'
77

88
docker compose exec -T lms bash -e -c 'source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py lms --settings=devstack create_dot_application --grant-type client-credentials --client-id "enterprise-backend-service-key" --client-secret "enterprise-backend-service-secret" enterprise-backend-service enterprise_worker'
9+
10+
# Create system wide enterprise role assignment for the enterprise service worker
11+
docker compose exec -T lms bash -e -c 'source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py lms --settings=devstack assign_system_wide_enterprise_role --username enterprise_worker --role enterprise_openedx_operator --all-contexts'

provision-enterprise-access.sh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ docker compose exec -T ${name} bash -e -c "echo 'from django.contrib.auth import
2222
./provision-ida-user.sh ${name} ${name} ${port}
2323

2424
# Create system wide enterprise role assignment
25-
# TODO: this is a pretty complex oneline, we should probably eventually convert this to a management command.
2625
echo -e "${GREEN}Creating system wide enterprise user role assignment for ${name}...${NC}"
27-
docker compose exec -T lms bash -e -c "source /edx/app/edxapp/edxapp_env && echo 'from django.contrib.auth import get_user_model; from enterprise.models import SystemWideEnterpriseUserRoleAssignment, SystemWideEnterpriseRole; User = get_user_model(); worker_user = User.objects.get(username=\"${name}_worker\"); operator_role = SystemWideEnterpriseRole.objects.get(name=\"enterprise_openedx_operator\"); assignment = SystemWideEnterpriseUserRoleAssignment.objects.get_or_create(user=worker_user, role=operator_role, applies_to_all_contexts=True);' | /edx/app/edxapp/venvs/edxapp/bin/python /edx/app/edxapp/edx-platform/manage.py lms shell" -- lms
26+
docker compose exec -T lms bash -e -c "source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py lms --settings=devstack assign_system_wide_enterprise_role --username ${name}_worker --role enterprise_openedx_operator --all-contexts"
2827

2928
make dev.restart-devserver.enterprise-access

provision-enterprise-catalog.sh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@ docker compose exec -T ${name} bash -c "echo 'from django.contrib.auth import ge
1717
./provision-ida-user.sh ${name} ${name} ${port}
1818

1919
# Create system wide enterprise role assignment
20-
# TODO: this is a pretty complex oneline, we should probably eventually convert this to a management command.
2120
echo -e "${GREEN}Creating system wide enterprise user role assignment for ${name}...${NC}"
22-
docker compose exec -T lms bash -e -c "source /edx/app/edxapp/edxapp_env && echo 'from django.contrib.auth import get_user_model; from enterprise.models import SystemWideEnterpriseUserRoleAssignment, SystemWideEnterpriseRole; User = get_user_model(); worker_user = User.objects.get(username=\"${name}_worker\"); operator_role = SystemWideEnterpriseRole.objects.get(name=\"enterprise_openedx_operator\"); assignment = SystemWideEnterpriseUserRoleAssignment.objects.get_or_create(user=worker_user, role=operator_role, applies_to_all_contexts=True);' | /edx/app/edxapp/venvs/edxapp/bin/python /edx/app/edxapp/edx-platform/manage.py lms shell" -- lms
21+
docker compose exec -T lms bash -e -c "source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py lms --settings=devstack assign_system_wide_enterprise_role --username ${name}_worker --role enterprise_openedx_operator --all-contexts"
2322

2423
# Restart enterprise.catalog app and worker containers
2524
docker compose restart enterprise-catalog enterprise-catalog-worker

provision-enterprise-subsidy.sh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ echo -e "${GREEN}Provisioning ${name}_worker in LMS...${NC}"
2424
./provision-ida-user.sh ${name} ${name} ${port}
2525

2626
# Create system wide enterprise role assignment
27-
# TODO: this is a pretty complex oneline, we should probably eventually convert this to a management command.
2827
echo -e "${GREEN}Creating system wide enterprise user role assignment for ${name}...${NC}"
29-
docker compose exec -T lms bash -e -c "source /edx/app/edxapp/edxapp_env && echo 'from django.contrib.auth import get_user_model; from enterprise.models import SystemWideEnterpriseUserRoleAssignment, SystemWideEnterpriseRole; User = get_user_model(); worker_user = User.objects.get(username=\"${name}_worker\"); operator_role = SystemWideEnterpriseRole.objects.get(name=\"enterprise_openedx_operator\"); assignment = SystemWideEnterpriseUserRoleAssignment.objects.get_or_create(user=worker_user, role=operator_role, applies_to_all_contexts=True);' | /edx/app/edxapp/venvs/edxapp/bin/python /edx/app/edxapp/edx-platform/manage.py lms shell" -- lms
28+
docker compose exec -T lms bash -e -c "source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py lms --settings=devstack assign_system_wide_enterprise_role --username ${name}_worker --role enterprise_openedx_operator --all-contexts"
3029

3130
make dev.restart-devserver.enterprise-subsidy

provision-license-manager.sh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ docker compose exec -T ${name} bash -e -c "echo 'from django.contrib.auth import
3131
./provision-ida-user.sh ${name} ${name} $port
3232

3333
# Create system wide enterprise role assignment
34-
# TODO: this is a pretty complex oneline, we should probably eventually convert this to a management command.
3534
echo -e "${GREEN}Creating system wide enterprise user role assignment for ${name}...${NC}"
36-
docker compose exec -T lms bash -e -c "source /edx/app/edxapp/edxapp_env && echo 'from django.contrib.auth import get_user_model; from enterprise.models import SystemWideEnterpriseUserRoleAssignment, SystemWideEnterpriseRole; User = get_user_model(); worker_user = User.objects.get(username=\"${name}_worker\"); operator_role = SystemWideEnterpriseRole.objects.get(name=\"enterprise_openedx_operator\"); assignment = SystemWideEnterpriseUserRoleAssignment.objects.get_or_create(user=worker_user, role=operator_role, applies_to_all_contexts=True);' | /edx/app/edxapp/venvs/edxapp/bin/python /edx/app/edxapp/edx-platform/manage.py lms shell" -- lms
35+
docker compose exec -T lms bash -e -c "source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py lms --settings=devstack assign_system_wide_enterprise_role --username ${name}_worker --role enterprise_openedx_operator --all-contexts"
3736

3837
make dev.restart-devserver.license-manager

0 commit comments

Comments
 (0)