Skip to content

Commit

Permalink
feat: Drop the use of the Tubular repository
Browse files Browse the repository at this point in the history
The Tubular repository has been deplrecated and the relevant
scripts have been moved to the edx-platform codebase.

* Drop the custom image build and rely on the openedx image.
* Add support for Tutor 18 / Open edX Redwood (breaking change)

Fixes: #32
  • Loading branch information
Maari Tamm committed Jul 29, 2024
1 parent 63407e5 commit 528a390
Show file tree
Hide file tree
Showing 11 changed files with 37 additions and 48 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## Unreleased

* [BREAKING CHANGE] Add support for Tutor 18 and Open edX Redwood.
The Tubular repository has been deprecated and the relevant scripts
have been moved to the `edx-platform` repository (https://github.com/openedx/axim-engineering/issues/881). Thus, starting with Tutor 18, this plugin no longer requires a custom
image build and the `retirement-job` will be run based on the `openedx` image.

## Version 3.3.1 (2024-07-03)

* [Bug fix] Drop support for retiring users in the [Open edX E-Commerce Service](https://github.com/openedx/ecommerce).
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ appropriate one:
| Olive | `>=15.0, <16` | `main` | 2.x.x |
| Palm | `>=16.0, <17` | `main` | 3.x.x |
| Quince | `>=17.0, <18` | `main` | 3.x.x |
| Redwood | `>=18.0, <19` | `main` | 4.x.x |

[^1]: For Open edX Maple and Tutor 13, you must run version 13.2.0 or
 later. That is because this plugin uses the Tutor v1 plugin API,
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def load_readme():
packages=find_packages(exclude=["tests*"]),
include_package_data=True,
python_requires=">=3.8",
install_requires=["tutor <18, >=16.1.7"],
install_requires=["tutor <19, >=16.1.7"],
setup_requires=["setuptools-scm"],
entry_points={
"tutor.plugin.v1": [
Expand Down
12 changes: 9 additions & 3 deletions tutorretirement/patches/k8s-jobs
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,23 @@ spec:
spec:
containers:
- name: retirement
image: {{ RETIREMENT_DOCKER_IMAGE }}
image: {{ DOCKER_IMAGE_OPENEDX }}
command:
- 'bash'
- '-e'
- 'run_retirement_pipeline.sh'
- 'scripts/user_retirement/plugin/run_retirement_pipeline.sh'
- '{{ RETIREMENT_COOL_OFF_DAYS }}'
volumeMounts:
- name: run-pipeline
mountPath: 'scripts/user_retirement/plugin/run_retirement_pipeline.sh'
subPath: run_retirement_pipeline.sh
- name: pipeline-config
mountPath: '/tubular/pipeline_config/config.yml'
mountPath: 'scripts/user_retirement/plugin/config.yml'
subPath: config.yml
volumes:
- name: run-pipeline
configMap:
name: retirement-pipeline-configmap
- name: pipeline-config
configMap:
name: retirement-pipeline-configmap
Expand Down
3 changes: 2 additions & 1 deletion tutorretirement/patches/kustomization-configmapgenerator
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
- name: retirement-pipeline-configmap
files:
- plugins/retirement/build/retirement/pipeline_config/config.yml
- plugins/retirement/apps/retirement/config.yml
- plugins/retirement/apps/retirement/run_retirement_pipeline.sh
4 changes: 2 additions & 2 deletions tutorretirement/patches/local-docker-compose-jobs-services
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
############# Retirement worker service
retirement-job:
image: {{ RETIREMENT_DOCKER_IMAGE }}
image: {{ DOCKER_IMAGE_OPENEDX }}
volumes:
- ../plugins/retirement/build/retirement/pipeline_config:/tubular/pipeline_config
- ../plugins/retirement/apps/retirement:/openedx/edx-platform/scripts/user_retirement/plugin
depends_on:
- lms
20 changes: 2 additions & 18 deletions tutorretirement/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,31 +17,14 @@
},
"defaults": {
"VERSION": __version__,
"DOCKER_IMAGE": "{{ DOCKER_REGISTRY }}retirement:{{ RETIREMENT_VERSION }}", # noqa: E501
"EDX_OAUTH2_CLIENT_ID": "retirement_service_worker",
"COOL_OFF_DAYS": 30,
"TUBULAR_VERSION": "{{ OPENEDX_COMMON_VERSION }}",
"K8S_CRONJOB_HISTORYLIMIT_FAILURE": 1,
"K8S_CRONJOB_HISTORYLIMIT_SUCCESS": 3,
"K8S_CRONJOB_SCHEDULE": "0 0 * * *",
},
}

hooks.Filters.IMAGES_BUILD.add_item((
"retirement",
("plugins", "retirement", "build", "retirement"),
"{{ RETIREMENT_DOCKER_IMAGE }}",
(),
))
hooks.Filters.IMAGES_PULL.add_item((
"retirement",
"{{ RETIREMENT_DOCKER_IMAGE }}",
))
hooks.Filters.IMAGES_PUSH.add_item((
"retirement",
"{{ RETIREMENT_DOCKER_IMAGE }}",
))


@local_command_group.command(help="Run the retirement pipeline")
@click.pass_obj
Expand All @@ -51,7 +34,8 @@ def retire_users(context):
cool_off_days = config["RETIREMENT_COOL_OFF_DAYS"]
job_runner.run_task(
service="retirement",
command=f"bash -e run_retirement_pipeline.sh {cool_off_days}"
command="bash -e scripts/user_retirement/plugin"
f"/run_retirement_pipeline.sh {cool_off_days}"
)


Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
cool_off_days=$1
pip install --upgrade pip && pip install -r scripts/user_retirement/requirements/base.txt --exists-action w
python scripts/user_retirement/get_learners_to_retire.py --config_file=scripts/user_retirement/plugin/config.yml --output_dir=scripts/user_retirement/plugin/learners_to_retire --cool_off_days="$cool_off_days"
for filename in scripts/user_retirement/plugin/learners_to_retire/*;do
if test ! -f "$filename";then
echo "No users to retire"
continue
else
IFS="=" read -r name username <"$filename"
echo "Retiring $username"
python scripts/user_retirement/retire_one_learner.py --config_file=scripts/user_retirement/plugin/config.yml --username="$username"
fi
done
11 changes: 0 additions & 11 deletions tutorretirement/templates/retirement/build/retirement/Dockerfile

This file was deleted.

This file was deleted.

0 comments on commit 528a390

Please sign in to comment.