Ginkgo
The seventh Open edX release. Please add information here that will be useful when it comes time to package the release. Please include your name when you add an item, so that we can get back to you with questions.
New Services & Major Upgrades Planned for This Release
What new products, applications, services, etc have we built since Ginkgo?
Catalog service
Django is in the process of being upgraded to 1.11.X
Credentials Service
Django has been upgraded to 1.11.X
E-Commerce Service
Django has been upgraded to 1.10.X
Django Oscar has been upgraded to 1.4. (See deployment issues note below.)
ElasticSearch 1.5 Upgrade is done.(Contact: Feanil)
Runbooks we used for the deployments can be found under here: Elasticsearch 1.x.y Upgrade
Webpack is now supported in edx-platform
Installation changes
Node was upgraded from 0.10 to 6.9
ESLint is now used for JavaScript linting
edX rules are defined in: https://github.com/edx/eslint-config-edx
Packages are provided for ES5 and ES2015+
See ESLint for more details
Something something docker - Docker work is underway, but will not be ready for Ginkgo.
Things you'd like to complete before Ginkgo
https://github.com/edx/configuration/pull/3522 (@Feanil Patel (Deactivated) indicated this won't make it in time).
Release a new version of Django Waffle (@ClintonB (Deactivated) is a maintainer, but needs help determine what functionality, if any, is preventing Django 1.11.x compatibility)
Things to cherry-pick onto Ginkgo
The open-release/ginkgo.master branch has been created in each repo. Changes for Ginkgo will now have to be cherry-picked onto that branch. This raises the bar for changes: they must be important, and they must not be unduly disruptive.
https://github.com/edx/edx-platform/pull/15343 (Picking with https://github.com/edx/edx-platform/pull/15517) PICKED
https://github.com/edx/edx-ora2/pull/1018 + https://github.com/edx/edx-platform/pull/15446 PICKED
https://github.com/edx/edx-platform/pull/15614 (cherry-picking with https://github.com/edx/edx-platform/pull/15625) DONE
https://github.com/edx/configuration/pull/4001 (cherry-picked from configuration#3988) PICKED
Cherry-picks for Ginkgo.2
https://openedx.atlassian.net/browse/LEARNER-2620 NOT NEEDED
https://github.com/edx/configuration/pull/4101#issuecomment-330567467 (also for Ficus!) DONE
Ginkgo got this in https://github.com/edx/configuration/pull/4126
Future cherry-picks
Deployment Issues to Keep in Mind
What has changed in the devops/configuration world? Are there manual steps needed to move from Ficus to Ginkgo?
ElasticSearch will be upgraded, probably to 1.5 which is what we use in production. This will coincide with changes to the forums service to support the newer version.
Robert Raposa: In addition to migration documentation, we should remind about "rake search:initialize" and "rake search:validate_index".
Credentials Service
The service now requires Python 3.5
The service has been upgraded to Django 1.11.x
E-Commerce Service
Receipt Page Updates
We now only support the receipt page integrated into Otto. Redirecting to the LMS/shopping_cart receipt page is no longer enabled.
CyberSource Updates
Secure Acceptance Silent Order POST is now the only supported integration. This integration will require creating a new profile in the business center.
The merchant notifications endpoint has been removed.
The service has been upgraded to Django 1.10.x.
This change includes a migration that affects the user table. If your users table is large, consider faking migration
core 0032. (@ClintonB (Deactivated))
Django Oscar has been upgraded to 1.4. (The steps below only apply to existing installations, and can be ignored for new installations.)
This upgrade requires faking migrations for the
thumbnailapp:./manage.py migrate thumbnail --fakeSite maintainers should be aware that one of the migrations includes a change on the guest_email column in the orders table. If your orders table is large 1M+ rows, this migration may lock the table for an extended amount of time. The E-Commerce Service does not normally use the guest_email column. If you have not modified your system to use this column, and wish to avoid the table lock, it is recommended that you fake this migration:
./manage.py migrate orders 0012./manage.py migrate orders 0013 --fake@Robert Raposa A "fake thumbnails" Ansible task was added to resolve this issue in devstack and on sandboxes. I cannot speak about Production or other environments, and whether or not this task could be used in those cases.
The Course Administration Tool (CAT) has been updated to use the user account associated with the OAuth credentials rather than individual users' accounts. The user associated with the OAuth credentials—we at edx.org use the username ecommerce_worker—should have full CRUD permissions for the following models on LMS:
commerce.CommerceConfiguration
course_modes.CourseMode
credit.CreditCourse
credit.CreditRequest
Additionally, ecommerce_worker should have the student:userprofile:can_deactivate_users permission if you are using SDN verification.
Catalog Service
The service is in the process of been upgraded to Django 1.11.X
Waffle is used by many repositories to control feature rollout (@Andy Armstrong (Deactivated))
Will catalog service be required?
Are there required upgrades for Django, pip, ...
Will there be a significant change to the asset pipeline in time for Ginkgo? (Probably not but something to keep an eye on)
Upgrade to RabbitMQ https://github.com/edx/configuration/pull/3297 (@Kevin Falcone (Deactivated))
3.2.1 → 3.6.9
Upgrading in place on devstacks may be fine (it appears rabbit will upgrade structures on disk when it starts back up)
Upgrading a cluster is more fun depending on downtime options https://www.rabbitmq.com/clustering.html
We're using https://www.rabbitmq.com/shovel.html
Insights (@Tyler Hallada (Deactivated))
We're planning on upgrading Insights to Django 1.11. As part of this upgrade, we need to follow a delicate procedure to update python-social-auth from the old version in Eucalyptus. Essentially, what we think needs to be scripted in the upgrade is a sequence of migrations documented in python-social-auth/MIGRATING_TO_SOCIAL:
upgrade to python-social-auth==0.2.21
run migrations
upgrade edx-auth-backends, which in turn upgrades a bunch of social-auth-* packages
run migrations
In other words, upgrade Insights to version 0.33.0, run migrations, then upgrade Insights to the Ginkgo release, and run migrations again.
python-social-auth has been upgraded to social-auth-app-django 1.2.0 and social-auth-core 1.4.0.
In some cases, this may cause migration issues.
For the initial release of Ficus, we were at python-social-auth 0.2.12.
This is not true:
For a later version of Ficus, we moved to python-social-auth 0.2.21 as a preliminary step to migrating to the split social architecture.
The upgrade to 0.2.21 included a number of database migrations that essentially brought our database into the same state as would be required by social-auth-app-django. Once that was performed, we were able to move to social-auth-app-django without additional database migrations.
In cases where the Open edX host has not first moved to a version of Ficus that includes python-social-auth 0.2.21, an intermediate step will be necessary to perform those database migrations, as a direct database migration from PSA 0.2.12 to social-app-django is not possible.
https://github.com/python-social-auth/social-app-django/issues/28#issuecomment-292282295
https://github.com/edx/edx-platform/tree/release-2017-06-21-12.22 is a good intermediate migration step for both python-social-auth and django-celery, noted below.
django-celery was updated from a version that used South migrations to a version that used django migrations, and the structure changed in the process so --fake-initial doesn't help.
Please run the drop_djcelery_tables management command (from edx-celeryutils) after you update code, but before running migrations. If not, djcelery_0001 will yield a "table already exists" error.
./manage.py lms drop_djcelery_tables --settings=awsThis command assumes the tables are empty, as no code in edx-platform was using them previously. If there is data in your tables, the management command will exit without making any changes and you'll need to fix up the relevant tables manually.
The edx-platform heartbeat (courses(LMS)/studio) format has changed, it is now:
{ "modulestore": { "status": true, "message": "OK" }, "sql": { "status": true, "message": "OK" } }We recommend automated checks relying on this endpoint focus on the HTTP status code, and that this output be used primarily for diagnostics
Monthly product notes
Any unusual things changed in the product that adopters or developers should know about?
Deprecated Features
Programs was deprecated in Ficus and will be replaced by the Catalog service in Ginkgo
Credentials API V1 is replaced by V2 (V1 has been removed)
The waffle flag "unified_course_view" is deprecated in Ginkgo, which can be used for the new view of the course outline on a separate page. The old sidebar navigation and this waffle flag will be fully removed in the next release. (@Robert Raposa)
This is currently defaulted off, but we'd like to get it defaulted on for Ginkgo.