Upgrading tutor to Palm

@regis Yes, there was a single plugin still enabled:

name: set_default_enrollment
version: 0.1.0
patches:
 lms-env: |
  "COURSE_MODE_DEFAULTS": {
    "name": "Honor",
    "slug": "honor",
    "bulk_sku": null,
    "currency": "usd",
    "description": null,
    "expiration_datetime": null,
    "min_price": 0,
    "sku": null,
    "suggested_prices": "",
    "certificate_type": "honor"
  }

That we picked up from here: How to convert all the enrollments from audit to professional - #7 by jaqusa, without which Certificates don’t work.

I did

ubuntu@ip-172-31-18-14:~$ git clone https://github.com/overhangio/tutor-mfe.git
Cloning into 'tutor-mfe'...
remote: Enumerating objects: 1045, done.
remote: Counting objects: 100% (365/365), done.
remote: Compressing objects: 100% (128/128), done.
remote: Total 1045 (delta 255), reused 293 (delta 226), pack-reused 680
Receiving objects: 100% (1045/1045), 1.43 MiB | 19.51 MiB/s, done.
Resolving deltas: 100% (507/507), done.
ubuntu@ip-172-31-18-14:~$ cd tutor-mfe/
ubuntu@ip-172-31-18-14:~/tutor-mfe$ git checkout palm
Branch 'palm' set up to track remote branch 'palm' from 'origin'.
Switched to a new branch 'palm'
ubuntu@ip-172-31-18-14:~/tutor-mfe$ pip install -e .
Defaulting to user installation because normal site-packages is not writeable
Obtaining file:///home/ubuntu/tutor-mfe
  Preparing metadata (setup.py) ... done
Requirement already satisfied: tutor<17.0.0,>=16.0.0 in /home/ubuntu/.local/lib/python3.10/site-packages (from tutor-mfe==16.0.0) (16.0.0)
Requirement already satisfied: appdirs in /home/ubuntu/.local/lib/python3.10/site-packages (from tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (1.4.4)
Requirement already satisfied: click>=8.0 in /usr/lib/python3/dist-packages (from tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (8.0.3)
Requirement already satisfied: jinja2>=2.10 in /usr/lib/python3/dist-packages (from tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (3.0.3)
Requirement already satisfied: kubernetes in /home/ubuntu/.local/lib/python3.10/site-packages (from tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (25.3.0)
Requirement already satisfied: mypy in /home/ubuntu/.local/lib/python3.10/site-packages (from tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (0.991)
Requirement already satisfied: pycryptodome in /home/ubuntu/.local/lib/python3.10/site-packages (from tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (3.16.0)
Requirement already satisfied: pyyaml>=6.0 in /home/ubuntu/.local/lib/python3.10/site-packages (from tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (6.0)
Requirement already satisfied: typing-extensions>=4.4.0 in /home/ubuntu/.local/lib/python3.10/site-packages (from tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (4.4.0)
Requirement already satisfied: certifi>=14.05.14 in /usr/lib/python3/dist-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (2020.6.20)
Requirement already satisfied: six>=1.9.0 in /usr/lib/python3/dist-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (1.16.0)
Requirement already satisfied: python-dateutil>=2.5.3 in /home/ubuntu/.local/lib/python3.10/site-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (2.8.2)
Requirement already satisfied: setuptools>=21.0.0 in /home/ubuntu/.local/lib/python3.10/site-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (67.8.0)
Requirement already satisfied: google-auth>=1.0.1 in /home/ubuntu/.local/lib/python3.10/site-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (2.15.0)
Requirement already satisfied: websocket-client!=0.40.0,!=0.41.*,!=0.42.*,>=0.32.0 in /usr/lib/python3/dist-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (1.2.3)
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (2.25.1)
Requirement already satisfied: requests-oauthlib in /home/ubuntu/.local/lib/python3.10/site-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (1.3.1)
Requirement already satisfied: urllib3>=1.24.2 in /usr/lib/python3/dist-packages (from kubernetes->tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (1.26.5)
Requirement already satisfied: mypy-extensions>=0.4.3 in /home/ubuntu/.local/lib/python3.10/site-packages (from mypy->tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (0.4.3)
Requirement already satisfied: tomli>=1.1.0 in /home/ubuntu/.local/lib/python3.10/site-packages (from mypy->tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (2.0.1)
Requirement already satisfied: cachetools<6.0,>=2.0.0 in /home/ubuntu/.local/lib/python3.10/site-packages (from google-auth>=1.0.1->kubernetes->tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (5.2.0)
Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/lib/python3/dist-packages (from google-auth>=1.0.1->kubernetes->tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (0.2.1)
Requirement already satisfied: rsa<5,>=3.1.4 in /home/ubuntu/.local/lib/python3.10/site-packages (from google-auth>=1.0.1->kubernetes->tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (4.9)
Requirement already satisfied: oauthlib>=3.0.0 in /usr/lib/python3/dist-packages (from requests-oauthlib->kubernetes->tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (3.2.0)
Requirement already satisfied: pyasn1>=0.1.3 in /usr/lib/python3/dist-packages (from rsa<5,>=3.1.4->google-auth>=1.0.1->kubernetes->tutor<17.0.0,>=16.0.0->tutor-mfe==16.0.0) (0.4.8)
Installing collected packages: tutor-mfe
  Attempting uninstall: tutor-mfe
    Found existing installation: tutor-mfe 15.0.6
    Uninstalling tutor-mfe-15.0.6:
      Successfully uninstalled tutor-mfe-15.0.6
  Running setup.py develop for tutor-mfe
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
tutor-ecommerce 15.0.2 requires tutor<16.0.0,>=15.0.0, but you have tutor 16.0.0 which is incompatible.
tutor-ecommerce 15.0.2 requires tutor-mfe<16.0.0,>=15.0.0, but you have tutor-mfe 16.0.0 which is incompatible.
Successfully installed tutor-mfe
ubuntu@ip-172-31-18-14:~$ tutor plugins enable mfe
Plugin mfe enabled
Configuration saved to /home/ubuntu/.local/share/tutor/config.yml
You should now re-generate your environment with `tutor config save`.
ubuntu@ip-172-31-18-14:~$ tutor config save
Configuration saved to /home/ubuntu/.local/share/tutor/config.yml
Environment generated in /home/ubuntu/.local/share/tutor/env
ubuntu@ip-172-31-18-14:~$ tutor local launch

And I got the following error:

Configuration saved to /home/ubuntu/.local/share/tutor/config.yml
Environment generated in /home/ubuntu/.local/share/tutor/env
======================================
        Building Docker images
======================================
No image to build
==============================================
        Stopping any existing platform
==============================================
docker compose -f /home/ubuntu/.local/share/tutor/env/local/docker-compose.yml -f /home/ubuntu/.local/share/tutor/env/local/docker-compose.prod.yml --project-name tutor_local stop
[+] Stopping 11/0
 ✔ Container tutor_local-lms-worker-1     Stopped                                                                                                                                                                                                      0.0s 
 ✔ Container tutor_local-cms-worker-1     Stopped                                                                                                                                                                                                      0.0s 
 ✔ Container tutor_local-caddy-1          Stopped                                                                                                                                                                                                      0.0s 
 ✔ Container tutor_local-cms-1            Stopped                                                                                                                                                                                                      0.0s 
 ✔ Container tutor_local-lms-1            Stopped                                                                                                                                                                                                      0.0s 
 ✔ Container tutor_local-elasticsearch-1  Stopped                                                                                                                                                                                                      0.0s 
 ✔ Container tutor_local-mongodb-1        Stopped                                                                                                                                                                                                      0.0s 
 ✔ Container tutor_local-smtp-1           Stopped                                                                                                                                                                                                      0.0s 
 ✔ Container tutor_local-redis-1          Stopped                                                                                                                                                                                                      0.0s 
 ✔ Container tutor_local-mysql-1          Stopped                                                                                                                                                                                                      0.0s 
 ✔ Container tutor_local-permissions-1    Stopped                                                                                                                                                                                                      0.0s 
======================================================
        Starting the platform in detached mode
======================================================
docker compose -f /home/ubuntu/.local/share/tutor/env/local/docker-compose.yml -f /home/ubuntu/.local/share/tutor/env/dev/docker-compose.yml --project-name tutor_dev stop
docker compose -f /home/ubuntu/.local/share/tutor/env/local/docker-compose.yml -f /home/ubuntu/.local/share/tutor/env/local/docker-compose.prod.yml --project-name tutor_local up --remove-orphans -d
[+] Running 1/0
 ✘ mfe Error                                                                                                                                                                                                                                           0.1s 
Error response from daemon: manifest for overhangio/openedx-mfe:16.0.0 not found: manifest unknown: manifest unknown
Error: Command failed with status 18: docker compose -f /home/ubuntu/.local/share/tutor/env/local/docker-compose.yml -f /home/ubuntu/.local/share/tutor/env/local/docker-compose.prod.yml --project-name tutor_local up --remove-orphans -d

Almost there:

tutor images build all
tutor local launch

Thanks @regis, I didn’t realize it would need a rebuild again.

It looks like it’s finally launched and working with palm! \o/

Time to see what’s broken! Starting with, why am I not able to use that previous plugin which is required to make certificates work by default for everyone?

name: set_default_enrollment
version: 0.1.0
patches:
 lms-env: |
  "COURSE_MODE_DEFAULTS": {
    "name": "Honor",
    "slug": "honor",
    "bulk_sku": null,
    "currency": "usd",
    "description": null,
    "expiration_datetime": null,
    "min_price": 0,
    "sku": null,
    "suggested_prices": "",
    "certificate_type": "honor"
  }

This error implies that you need to add a key named “android_sku” to your configuration. But what should the value be? I don’t have a clue.

It looks like there are ‘android_sku’ and ‘ios_sku’ values now required (according to this code: edx-platform/models.py at master · openedx/edx-platform · GitHub)

Adding them as null seemed to get it back to working… but then when I checked an hour later it wasn’t working again, so I’m now debugging again…

For the record, as of right now, here’s my notional theory of how to upgrade from Olive to Palm before Palm is released, on a stock Ubuntu 22.04 system (which I’ll need to re-confirm again after reverting the VM snapshot):

    1. Upgrade docker per https://docs.docker.com/engine/install/ubuntu/
        1. sudo apt-get update
        2. sudo apt-get install ca-certificates curl gnupg
        3. sudo install -m 0755 -d /etc/apt/keyrings
        4. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
        5. sudo chmod a+r /etc/apt/keyrings/docker.gpg
        6. echo \
        7.   "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
        8.   "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
        9.   sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
        10. sudo apt-get update
        11. sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
        12. sudo reboot
        13. sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
        14. sudo docker run hello-world
    2. Update tutor & plugins
        1. pip install -U git+https://github.com/overhangio/tutor@palm#egg=tutor
        2. tutor config save
        3. git clone https://github.com/overhangio/tutor-mfe.git
        4. cd tutor-mfe
        5. git checkout palm
        6. pip install -e .
        7. git clone https://github.com/overhangio/tutor-forum.git
        8. cd tutor-forum 
        9. git checkout palm
        10. pip install -e .
        11. tutor plugins enable mfe
        12. tutor config save
        13. tutor images build all
        14. tutor local upgrade --from=olive
        15. tutor local launch
3 Likes

@regis how can I upgrade tutor-indigo for palm? It doesn’t seem to have a palm branch like the other tutor-* repos.

The Indigo palm branch was actually created from a forked repo: upgrade to palm by gondaljutt · Pull Request #43 · overhangio/tutor-indigo · GitHub

pip install --user --upgrade --editable git+https://github.com/gondaljutt/tutor-indigo.git@jalal/palm#egg=tutor-indigo

@regis did you change tutor-forum so that there’s not a palm branch anymore (like with indigo)?

user@uVM:~$ git clone https://github.com/overhangio/tutor-forum.git
Cloning into 'tutor-forum'...
remote: Enumerating objects: 256, done.
remote: Counting objects: 100% (180/180), done.
remote: Compressing objects: 100% (101/101), done.
remote: Total 256 (delta 94), reused 139 (delta 68), pack-reused 76
Receiving objects: 100% (256/256), 46.07 KiB | 476.00 KiB/s, done.
Resolving deltas: 100% (105/105), done.
user@uVM:~$ cd tutor-forum/
user@uVM:~/tutor-forum$ git checkout palm
error: pathspec 'palm' did not match any file(s) known to git

This because it’s now released, i.e you should be install them through pip with version 16 refs tutor-forum · PyPI and tutor · PyPI

1 Like

I tried a bunch of things mentioned here, but still do not see indigo showing up in list:

~/.local/share/tutor-plugins/src/tutor-indigo$ tutor plugins list
⚠️  Failed to enable plugin 'indigo': plugin 'indigo' is not installed.
NAME     	STATUS   	VERSION
android  	installed	16.0.0
discovery	installed	16.0.0
ecommerce	installed	16.0.0
forum    	installed	16.0.0
license  	installed	16.0.0
mfe      	✅ enabled	16.0.0
notes    	✅ enabled	16.0.0
webui    	installed	16.0.0
xqueue   	installed	16.0.0
~/.local/share/tutor-plugins/src/tutor-indigo$ docker version
Client:
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.1
 Git commit:        20.10.21-0ubuntu1~20.04.2
 Built:             Thu Apr 27 05:56:19 2023
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server:
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.1
  Git commit:       20.10.21-0ubuntu1~20.04.2
  Built:            Thu Apr 27 05:37:01 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.5.9-0ubuntu1~20.04.6
  GitCommit:        
 runc:
  Version:          1.1.4-0ubuntu1~20.04.3
  GitCommit:        
 docker-init:
  Version:          0.19.0
  GitCommit:        

:~/.local/share/tutor-plugins/src/tutor-indigo$ docker compose version
Docker Compose version v2.18.1

I am having the same issue in local launch and getting the following error

docker compose -f /home/ubuntu/.local/share/tutor/env/local/docker-compose.yml -f /home/ubuntu/.local/share/tutor/env/local/docker-compose.prod.yml --project-name tutor_local stop
unknown shorthand flag: 'f' in -f
See 'docker --help'.

It seems docker compose should be replaced by docker-compose in the new docker env.

I had the same issue as you until I realised that I had an older version of docker. New version uses a compose plugin so “docker-compose” is not the correct program to use anymore. Make sure you install latest version of docker as posted in @ABC’s solution above.

1 Like