wip
This commit is contained in:
parent
8791a883f9
commit
9b2cd724b5
4
.markdownlint.rb
Normal file
4
.markdownlint.rb
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
all
|
||||
# MD033 Inline HTML
|
||||
# TODO: Tweak elements when https://github.com/markdownlint/markdownlint/issues/118 will be done?
|
||||
exclude_rule 'MD033'
|
||||
|
|
@ -30,6 +30,14 @@ repos:
|
|||
rev: "6.1.0"
|
||||
hooks:
|
||||
- id: flake8
|
||||
|
||||
- repo: https://github.com/igorshubovych/markdownlint-cli
|
||||
rev: "v0.41.0"
|
||||
hooks:
|
||||
- id: markdownlint
|
||||
args: [ --disable=MD033 ]
|
||||
|
||||
|
||||
# - repo: https://gitlab.com/smop/pre-commit-hooks
|
||||
# rev: v1.0.0
|
||||
# hooks:
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
# Developers
|
||||
# Contributors
|
||||
|
||||
## Developers
|
||||
|
||||
* Sylvain LE GAL, from [GRAP](http://www.grap.coop), since March 2022
|
||||
* Rémy TAYMANS, from [Coop It Easy](https://coopiteasy.be/), since June 2022
|
||||
|
|
@ -9,9 +11,11 @@
|
|||
* Hugues DE KEYSER, from [Coop It Easy](https://coopiteasy.be/), since April 2024
|
||||
* Gabriel PICKENHAYN, since May 2024
|
||||
* Boris GALLET, since September 2024
|
||||
* Ahmet YIĞIT BUDAK, from [Altinkaya](https://www.altinkaya.com/fr), since October 2024
|
||||
* Alexandre AUBIN, from [Coopaname](https://www.coopaname.coop/), since October 2024
|
||||
* Ahmet YIĞIT BUDAK, from [Altinkaya](https://www.altinkaya.com/fr),
|
||||
since October 2024
|
||||
* Alexandre AUBIN, from [Coopaname](https://www.coopaname.coop/),
|
||||
since October 2024
|
||||
|
||||
# Reviewers
|
||||
## Reviewers
|
||||
|
||||
* Sébastien BEAU, from Akretion (https://akretion.com)
|
||||
* Sébastien BEAU, from [Akretion](https://akretion.com)
|
||||
|
|
|
|||
110
DEVELOP.md
110
DEVELOP.md
|
|
@ -1,8 +1,10 @@
|
|||
# Installation to develop
|
||||
# Develop
|
||||
|
||||
## Basic installation
|
||||
## Installation to develop
|
||||
|
||||
```
|
||||
### Basic installation
|
||||
|
||||
```shell
|
||||
git clone https://gitlab.com/odoo-openupgrade-wizard/odoo-openupgrade-wizard/
|
||||
cd odoo-openupgrade-wizard
|
||||
virtualenv env --python=python3
|
||||
|
|
@ -12,19 +14,20 @@ poetry install
|
|||
|
||||
``odoo-openupgrade-wizard`` commands are now available in your virutalenv.
|
||||
|
||||
## Advanced installation
|
||||
### Advanced installation
|
||||
|
||||
If you want to use this library without installing anything in your
|
||||
system, execute the following steps, otherwise, go to 'Installation' part.
|
||||
|
||||
1. Run a docker container:
|
||||
|
||||
``docker run -it ubuntu:focal``
|
||||
|
||||
2. Execute the following commnands
|
||||
- Run a docker container:
|
||||
|
||||
```shell
|
||||
docker run -it ubuntu:focal
|
||||
```
|
||||
|
||||
- Execute the following commnands
|
||||
|
||||
```shell
|
||||
apt-get update
|
||||
apt-get install git python3 python3-pip python3-venv
|
||||
|
||||
|
|
@ -37,40 +40,40 @@ pipx install virtualenv
|
|||
pipx install poetry
|
||||
```
|
||||
|
||||
# Run tests
|
||||
## Run tests
|
||||
|
||||
## Via pytest (simple)
|
||||
### Via pytest (simple)
|
||||
|
||||
This will run tests only for the current ``python3.X`` version.
|
||||
|
||||
(in your virtualenv)
|
||||
```
|
||||
|
||||
```shell
|
||||
poetry run pytest --cov odoo_openupgrade_wizard --verbosity=2 --exitfirst
|
||||
```
|
||||
|
||||
## Via Tox (advanced)
|
||||
### Via Tox (advanced)
|
||||
|
||||
This will run tests for all the python versions put in the ``tox.ini`` folder.
|
||||
|
||||
(in your virtualenv)
|
||||
```
|
||||
|
||||
```shell
|
||||
tox
|
||||
```
|
||||
|
||||
Note : you should have all the python versions available in your local system.
|
||||
|
||||
|
||||
```
|
||||
```shell
|
||||
sudo apt-get install python3.6 python3.6-distutils
|
||||
sudo apt-get install python3.7 python3.7-distutils
|
||||
sudo apt-get install python3.8 python3.8-distutils
|
||||
sudo apt-get install python3.9 python3.9-distutils
|
||||
```
|
||||
|
||||
## Via Gitlab Runner locally
|
||||
### Via Gitlab Runner locally
|
||||
|
||||
|
||||
```
|
||||
```shell
|
||||
# Install tools
|
||||
pipx install gitlabci-local
|
||||
|
||||
|
|
@ -78,17 +81,19 @@ pipx install gitlabci-local
|
|||
gitlabci-local
|
||||
```
|
||||
|
||||
# Debugging
|
||||
## Debugging
|
||||
|
||||
Some docker command could help you when using / developping this tools.
|
||||
|
||||
**Enter the postgres container**
|
||||
To Enter the postgres container, run:
|
||||
|
||||
```shell
|
||||
docker exec -it POSTGRES_CONTAINER_NAME /bin/bash
|
||||
```
|
||||
|
||||
# Contribute
|
||||
## Contribute
|
||||
|
||||
## Provide newsfragments in your merge requests
|
||||
### Provide newsfragments in your merge requests
|
||||
|
||||
If you propose a merge request, please add a newsfragments with it.
|
||||
|
||||
|
|
@ -115,11 +120,12 @@ a `+` symbol.
|
|||
This is a example of newsfragments.
|
||||
|
||||
`newsfragments/+sub-command-cowsay.feature`:
|
||||
|
||||
```
|
||||
Adds a new subcommand `cowsay` to allow poeple to speak like a cow.
|
||||
```
|
||||
|
||||
## Add python dependencies
|
||||
### Add python dependencies
|
||||
|
||||
If you add new dependencies, you have to:
|
||||
|
||||
|
|
@ -127,7 +133,7 @@ If you add new dependencies, you have to:
|
|||
|
||||
- run the following command in your virtualenv : ``poetry update``
|
||||
|
||||
## Release on Gitlab and publish on PyPI
|
||||
### Release on Gitlab and publish on PyPI
|
||||
|
||||
Building, releasing and publishing a new version works with tags.
|
||||
|
||||
|
|
@ -143,7 +149,7 @@ on gitlab, but they trigger a publication on PyPI.
|
|||
Before creating a tag, ensure that the version of the program is
|
||||
updated. To update the program version you can use the command:
|
||||
|
||||
```
|
||||
```shell
|
||||
poetry version {major,minor,patch}
|
||||
```
|
||||
|
||||
|
|
@ -163,27 +169,26 @@ To see if the publication on PyPI and the release on gitlab were done
|
|||
correctly, go in Build > Pipelines. You will find a pipeline for the tag
|
||||
you just created.
|
||||
|
||||
## Understanding the library
|
||||
|
||||
# Understanding the library
|
||||
|
||||
## Tools to understand
|
||||
### Tools to understand
|
||||
|
||||
The library is using many tools. It is recommanded to understand that tools
|
||||
to contribute to that project:
|
||||
|
||||
* Docker (https://www.docker.com/)
|
||||
* Gitlab CI (https://docs.gitlab.com/ee/ci/quick_start/index.html)
|
||||
* openupgrade project (https://github.com/oca/openupgrade) and related openupgradelib (https://github.com/oca/openupgradelib)
|
||||
* poetry (https://python-poetry.org/)
|
||||
* odoorpc (https://github.com/OCA/odoorpc)
|
||||
* git-aggregator (https://github.com/acsone/git-aggregator)
|
||||
- Docker (<https://www.docker.com/>)
|
||||
- Gitlab CI (<https://docs.gitlab.com/ee/ci/quick_start/index.html>)
|
||||
- openupgrade project (<https://github.com/oca/openupgrade>)
|
||||
and related openupgradelib (<https://github.com/oca/openupgradelib>)
|
||||
- poetry (<https://python-poetry.org/>)
|
||||
- odoorpc (<https://github.com/OCA/odoorpc>)
|
||||
- git-aggregator (<https://github.com/acsone/git-aggregator>)
|
||||
|
||||
Also this project is inspired by the following tools:
|
||||
|
||||
* click-odoo-contrib (https://github.com/acsone/click-odoo-contrib)
|
||||
- click-odoo-contrib (<https://github.com/acsone/click-odoo-contrib>)
|
||||
|
||||
|
||||
# Dockerfile information
|
||||
## Dockerfile information
|
||||
|
||||
### From version 5 to 7
|
||||
|
||||
|
|
@ -195,61 +200,68 @@ Try to create dockerfile, based on the odoo official ones fails. Any help welcom
|
|||
|
||||
### From version 11.0 to latest version. (Python3)
|
||||
|
||||
The Dockerfile of the version 11 to the lastest version of Odoo are written this way :
|
||||
The Dockerfile of the version 11 to the lastest version of Odoo are written
|
||||
this way:
|
||||
|
||||
- Copy the content of https://github.com/odoo/odoo/blob/ODOO_VERSION/setup/package.dfsrc
|
||||
- Copy the content of <https://github.com/odoo/odoo/blob/ODOO_VERSION/setup/package.dfsrc>
|
||||
- remove all the part after the big ``apt-get install``
|
||||
- install debian package ``git`` to have the possibility to pip install from git url.
|
||||
- install debian package ``git`` to have the possibility
|
||||
to pip install from git url.
|
||||
- install custom debian packages
|
||||
- install python odoo requirements
|
||||
- install python ``setuptools-scm`` lib to have the possibility to pip install ``openupgradelib`` from git url.
|
||||
- install python ``setuptools-scm`` lib to have the possibility
|
||||
to pip install ``openupgradelib`` from git url.
|
||||
- install python custom requirements
|
||||
- makes link between external user and docker odoo user
|
||||
|
||||
## Réferences
|
||||
## References
|
||||
|
||||
- how to install gitlab runner locally:
|
||||
|
||||
https://docs.gitlab.com/runner/install/linux-manually.html
|
||||
<https://docs.gitlab.com/runner/install/linux-manually.html>
|
||||
|
||||
- Check your CI locally. (French)
|
||||
|
||||
https://blog.stephane-robert.info/post/gitlab-valider-ci-yml/
|
||||
|
||||
https://blog.callr.tech/building-docker-images-with-gitlab-ci-best-practices/
|
||||
<https://blog.stephane-robert.info/post/gitlab-valider-ci-yml/>
|
||||
|
||||
<https://blog.callr.tech/building-docker-images-with-gitlab-ci-best-practices/>
|
||||
|
||||
## Python version settings depending on the debian version
|
||||
|
||||
This part can help you if you want to change your autogenerated Dockerfiles.
|
||||
|
||||
See (https://github.com/odoo/odoo/blob/ODOO_VERSION/setup/package.dfdebian)
|
||||
See (<https://github.com/odoo/odoo/blob/ODOO_VERSION/setup/package.dfdebian>).
|
||||
|
||||
### debian:wheezy (V7) (for Odoo: 8.0)
|
||||
|
||||
- Ubuntu release : 12.04 xxx, 12.10 xxx, 13.04 xxx, 14.10 xxx
|
||||
- python2.7
|
||||
- First release : 04/05/2013
|
||||
- End LTS : May 2018
|
||||
|
||||
### debian:jessie (V8) (for Odoo: 9.0, 10.0)
|
||||
|
||||
- Ubuntu release : 14.04 trusty, 14.10 utopic, 15.04 vivid, 15.10 wily
|
||||
- python2.7
|
||||
- First release : 26/04/2015
|
||||
- End LTS : June 2020
|
||||
|
||||
### debian:stretch (V9) (for Odoo: 11.0, 12.0)
|
||||
|
||||
- Ubuntu releases : 16.04 xenial, 16.10 yakkety, 17.04 zesty, 17.10 artful
|
||||
- python2.7 and python3.5
|
||||
- First release : 17/06/2017
|
||||
- End LTS : June 2022
|
||||
|
||||
### debian:buster (13.0, 14.0)
|
||||
|
||||
- Ubuntu release : 18.04 bionic, 18.10 cosmic, 19.04 disco, 19.10 eoan
|
||||
- python2.7 and python3.7
|
||||
- First release : 06/07/2019
|
||||
- End LTS : Undefined.
|
||||
|
||||
## debian:bullseye (15.0, 16.0)
|
||||
### debian:bullseye (15.0, 16.0)
|
||||
|
||||
- Ubuntu release : 20.04 focal, 20.10 groovy, 21.04 hirsute, 21.10 impish
|
||||
- python3.9
|
||||
- First release : 14/07/2021
|
||||
|
|
|
|||
|
|
@ -1,69 +0,0 @@
|
|||
# TODO
|
||||
|
||||
* with coop it easy :
|
||||
- short_help of group decorator ? seems useless...
|
||||
|
||||
* add constrains on ``--step`` option.
|
||||
|
||||
* revert : set 777 to log and filestore to be able to write on this folder
|
||||
inside the containers. TODO, ask to coop it easy or commown for better alternative.
|
||||
|
||||
* allow to call odoo-bin shell, via : https://github.com/d11wtq/dockerpty
|
||||
(see https://github.com/docker/docker-py/issues/247)
|
||||
|
||||
|
||||
# List of the series of odoo
|
||||
# python version is defined, based on the OCA CI.
|
||||
# https://github.com/OCA/oca-addons-repo-template/blob/master/src/.github/workflows/%7B%25%20if%20ci%20%3D%3D%20'GitHub'%20%25%7Dtest.yml%7B%25%20endif%20%25%7D.jinja
|
||||
|
||||
|
||||
# tips
|
||||
```
|
||||
# execute sql request in postgres docker
|
||||
docker exec db psql --username=odoo --dbname=test_v12 -c "update res_partner set ""email"" = 'bib@bqsdfqsdf.txt';"
|
||||
```
|
||||
|
||||
# TODO Nice To have
|
||||
|
||||
- Fix gitlabci-local. For the time being, it is not possible to debug
|
||||
locally. (there are extra bugs locally that doesn't occures on gitlab,
|
||||
in ``cli_B_03_run_test.py``...
|
||||
|
||||
|
||||
- add
|
||||
|
||||
# Try gitlab runner
|
||||
|
||||
curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb"
|
||||
|
||||
sudo dpkg -i gitlab-runner_amd64.deb
|
||||
|
||||
(https://docs.gitlab.com/runner/install/linux-manually.html)
|
||||
|
||||
|
||||
# TODO:
|
||||
- check dynamic user id with
|
||||
https://github.com/camptocamp/docker-odoo-project/blob/master/bin/docker-entrypoint.sh
|
||||
|
||||
|
||||
in modules.csv.j2 :
|
||||
# TODO, this value are usefull for test for analyse between 13 and 14.
|
||||
# move that values in data/extra_script/modules.csv
|
||||
# and let this template with only 'base' module.
|
||||
|
||||
|
||||
|
||||
## Without postgres optimization
|
||||
2022-07-13 19:42
|
||||
2022-07-13 21:20
|
||||
|
||||
Duration : 1:37 (107)
|
||||
|
||||
## With postgres optimization
|
||||
|
||||
2022-07-13 21:52
|
||||
2022-07-14 23:11
|
||||
|
||||
duration : 1:19 (79)
|
||||
|
||||
16%
|
||||
449
README.bk
Normal file
449
README.bk
Normal file
|
|
@ -0,0 +1,449 @@
|
|||
|
||||
<a name="usage"/>
|
||||
|
||||
# Usage
|
||||
|
||||
**Note:**
|
||||
|
||||
the term ``odoo-openupgrade-wizard`` can be replaced by ``oow``
|
||||
in all the command lines below.
|
||||
|
||||
<a name="command-init"/>
|
||||
|
||||
## Command: ``init``
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard init\
|
||||
--initial-version=10.0\
|
||||
--final-version=12.0\
|
||||
--project-name=my-customer-10-12\
|
||||
--extra-repository=OCA/web,OCA/server-tools
|
||||
```
|
||||
|
||||
Initialize a folder to make a migration from a 10.0 and a 12.0 database.
|
||||
This will generate the following structure :
|
||||
|
||||
```
|
||||
filestore/
|
||||
log/
|
||||
2022_03_25__23_12_41__init.log
|
||||
...
|
||||
postgres_data/
|
||||
scripts/
|
||||
step_1__update__10.0/
|
||||
pre-migration.sql
|
||||
post-migration.py
|
||||
step_2__upgrade__11.0/
|
||||
...
|
||||
step_3__upgrade__12.0/
|
||||
...
|
||||
step_4__update__12.0/
|
||||
...
|
||||
src/
|
||||
env_10.0/
|
||||
extra_debian_requirements.txt
|
||||
Dockerfile
|
||||
odoo.conf
|
||||
extra_python_requirements.txt
|
||||
repos.yml
|
||||
src/
|
||||
env_11.0/
|
||||
...
|
||||
env_12.0/
|
||||
...
|
||||
config.yml
|
||||
modules.csv
|
||||
```
|
||||
|
||||
- ``config.yml`` is the main configuration file of your project.
|
||||
|
||||
- ``modules.csv`` file is an optional file. You can fill it with the list
|
||||
of your modules installed on your production. The first column of this
|
||||
file should contain the technical name of the module.
|
||||
|
||||
- ``log`` folder will contains all the log of the ``odoo-openupgrade-wizard``
|
||||
and the logs of the odoo instance that will be executed.
|
||||
|
||||
- ``filestore`` folder will contains the filestore of the odoo database(s)
|
||||
|
||||
- ``postgres_data`` folder will be used by postgres docker image to store
|
||||
database.
|
||||
|
||||
- ``scripts`` folder contains a folder per migration step. In each step folder:
|
||||
- ``pre-migration.sql`` can contains extra SQL queries you want to execute
|
||||
before beginning the step.
|
||||
- ``post-migration.py`` can contains extra python command to execute
|
||||
after the execution of the step.
|
||||
Script will be executed with ``odoo shell`` command. All the ORM is available
|
||||
via the ``env`` variable.
|
||||
|
||||
- ``src`` folder contains a folder per Odoo version. In each environment folder:
|
||||
- ``repos.yml`` enumerates the list of the repositories to use to run the odoo instance.
|
||||
The syntax should respect the ``gitaggregate`` command.
|
||||
(See : https://pypi.org/project/git-aggregator/)
|
||||
Repo files are pre-generated. You can update them with your custom settings.
|
||||
(custom branches, extra PRs, git shallow options, etc...)
|
||||
- ``extra_python_requirements.txt`` enumerates the list of extra python librairies
|
||||
required to run the odoo instance.
|
||||
The syntax should respect the ``pip install -r`` command.
|
||||
(See : https://pip.pypa.io/en/stable/reference/requirements-file-format/)
|
||||
- ``extra_debian_requirements.txt`` enumerates the list of extra system librairies
|
||||
required to run the odoo instance.
|
||||
- ``odoo.conf`` file. Add here extra configuration required for your custom modules.
|
||||
the classical keys (``db_host``, ``db_port``, etc...) are automatically
|
||||
autogenerated.
|
||||
|
||||
At this step, you should change the autogenerated files.
|
||||
You can use default files, if you have a very simple odoo instance without custom code,
|
||||
extra repositories, or dependencies...
|
||||
|
||||
**Note:**
|
||||
|
||||
- In your repos.yml, preserve ``openupgrade`` and ``server-tools`` repositories
|
||||
to have all the features of the librairies available.
|
||||
- In your repos.yml file, the odoo project should be in ``./src/odoo``
|
||||
and the openupgrade project should be in ``./src/openupgrade/`` folder.
|
||||
|
||||
<a name="command-pull-submodule"/>
|
||||
|
||||
## Command: ``pull-submodule``
|
||||
|
||||
**Prerequites:** init + being in a git repository. (if not, you can simply run ``git init``)
|
||||
|
||||
if you already have a repos.yml file on github / gitlab, it can be convenient to
|
||||
synchronize the repository, instead of copy past the ``repos.yml`` manually.
|
||||
|
||||
In that case, you can add extra values, in the ``config.yml`` file in the section
|
||||
|
||||
```yaml
|
||||
odoo_version_settings:
|
||||
12.0:
|
||||
repo_url: url_of_the_repo_that_contains_a_repos_yml_file
|
||||
repo_branch: 12.0
|
||||
repo_file_path: repos.yml
|
||||
```
|
||||
|
||||
then run following command :
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard pull-submodule
|
||||
```
|
||||
|
||||
<a name="command-get-code"/>
|
||||
|
||||
## Command: ``get-code``
|
||||
|
||||
**Prerequites:** init
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard get-code
|
||||
```
|
||||
|
||||
This command will simply get all the Odoo code required to run all the steps
|
||||
for your migration with the ``gitaggregate`` tools.
|
||||
|
||||
The code is defined in the ``repos.yml`` of each environment folders. (or in the
|
||||
directory ``repo_submodule`` if you use ``pull-submodule`` feature.)
|
||||
|
||||
**Note**
|
||||
|
||||
This step could take a big while !
|
||||
|
||||
**Optional arguments**
|
||||
|
||||
if you want to update the code of some given versions, you can provide an extra parameter:
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard get-code --versions 10.0,11.0
|
||||
```
|
||||
|
||||
<a name="command-docker-build"/>
|
||||
|
||||
## Command: ``docker-build``
|
||||
|
||||
**Prerequites:** init + get-code
|
||||
|
||||
This will build local docker images that will be used in the following steps.
|
||||
|
||||
At this end of this step executing the following command should show a docker image per version.
|
||||
|
||||
|
||||
```shell
|
||||
docker images --filter "reference=odoo-openupgrade-wizard-*"
|
||||
```
|
||||
```
|
||||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
odoo-openupgrade-wizard-image---my-customer-10-12---12.0 latest ef664c366208 2 weeks ago 1.39GB
|
||||
odoo-openupgrade-wizard-image---my-customer-10-12---11.0 latest 24e283fe4ae4 2 weeks ago 1.16GB
|
||||
odoo-openupgrade-wizard-image---my-customer-10-12---10.0 latest 9d94dce2bd4e 2 weeks ago 924MB
|
||||
```
|
||||
|
||||
**Optional arguments**
|
||||
|
||||
- if you want to (re)build an image for some given versions, you can provide
|
||||
an extra parameter: ``--versions 10.0,12.0``
|
||||
|
||||
**Note**
|
||||
|
||||
- This step could take a big while also !
|
||||
|
||||
|
||||
<a name="command-run"/>
|
||||
|
||||
## Command: ``run``
|
||||
|
||||
**Prerequites:** init + get-code + build
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard run\
|
||||
--step 1\
|
||||
--database DB_NAME
|
||||
```
|
||||
|
||||
Run an Odoo instance with the environment defined by the step argument.
|
||||
|
||||
The database will be created, if it doesn't exists.
|
||||
|
||||
if ``stop-after-init`` is disabled, the odoo instance will be available
|
||||
at your host, at the following url : http://localhost:9069
|
||||
(Port depends on your ``host_odoo_xmlrpc_port`` setting of your ``config.yml`` file)
|
||||
|
||||
**Optional arguments**
|
||||
|
||||
- You can add ``--init-modules=purchase,sale`` to install modules.
|
||||
|
||||
- You can add ``stop-after-init`` flag to turn off the process at the end
|
||||
of the installation.
|
||||
|
||||
|
||||
<a name="command-install-from-csv"/>
|
||||
|
||||
## Command: ``install-from-csv``
|
||||
|
||||
**Prerequites:** init + get-code + build
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard install-from-csv\
|
||||
--database DB_NAME
|
||||
```
|
||||
|
||||
Install the list of the modules defined in your ``modules.csv`` files on the
|
||||
given database.
|
||||
|
||||
The database will be created, if it doesn't exists.
|
||||
|
||||
To get a correct ``modules.csv`` file, the following query can be used:
|
||||
```shell
|
||||
psql -c "copy (select name, shortdesc from ir_module_module where state = 'installed' order by 1) to stdout csv" coopiteasy
|
||||
```
|
||||
|
||||
|
||||
<a name="command-upgrade"/>
|
||||
|
||||
## Command: ``upgrade``
|
||||
|
||||
**Prerequites:** init + get-code + build
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard upgrade\
|
||||
--database DB_NAME
|
||||
```
|
||||
|
||||
Realize an upgrade of the database from the initial version to
|
||||
the final version, following the different steps.
|
||||
|
||||
For each step, it will :
|
||||
|
||||
1. Execute the ``pre-migration.sql`` of the step.
|
||||
2. Realize an "update all" (in an upgrade or update context)
|
||||
3. Execute the scripts via XML-RPC (via ``odoorpc``) defined in
|
||||
the ``post-migration.py`` file.
|
||||
|
||||
**Optional arguments**
|
||||
|
||||
- You can add ``--first-step=2`` to start at the second step.
|
||||
|
||||
- You can add ``--last-step=3`` to end at the third step.
|
||||
|
||||
|
||||
<a name="command-generate-module-analysis"/>
|
||||
|
||||
## Command: ``generate-module-analysis``
|
||||
|
||||
**Prerequites:** init + get-code + build
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard generate-module-analysis\
|
||||
--database DB_NAME
|
||||
--step 2
|
||||
--modules MODULE_LIST
|
||||
```
|
||||
|
||||
Realize an analyze between the target version (in parameter via the step argument)
|
||||
and the previous version. It will generate analysis_file.txt files present
|
||||
in OpenUpgrade project.
|
||||
You can also use this fonction to analyze differences for custom / OCA modules
|
||||
between several versions, in case of refactoring.
|
||||
|
||||
<a name="command-estimate-workload"/>
|
||||
|
||||
## Command: ``estimate-workload``
|
||||
|
||||
**Prerequites:** init + get-code
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard estimate-workload
|
||||
```
|
||||
|
||||
Generate an HTML file name ``analysis.html`` with all the information regarding
|
||||
the work to do for the migration.
|
||||
- checks that the modules are present in each version. (by managing the
|
||||
renaming or merging of modules)
|
||||
- check that the analysis and migration have been done for the official
|
||||
modules present in odoo/odoo
|
||||
|
||||
<a name="command-psql"/>
|
||||
|
||||
## Command: ``psql``
|
||||
|
||||
**Prerequites:** init
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard psql
|
||||
--database DB_NAME
|
||||
--command "SQL_REQUEST"
|
||||
```
|
||||
|
||||
Execute an SQL Request on the target database.
|
||||
|
||||
**Optional arguments**
|
||||
|
||||
- If no ``database`` is provided, default ``postgres`` database will be used. exemple:
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard psql --command "\l";
|
||||
```
|
||||
Result:
|
||||
```
|
||||
List of databases
|
||||
Name | Owner | Encoding | Collate | Ctype | Access privileges
|
||||
------------+-------+----------+------------+------------+-------------------
|
||||
postgres | odoo | UTF8 | en_US.utf8 | en_US.utf8 |
|
||||
template0 | odoo | UTF8 | en_US.utf8 | en_US.utf8 | =c/odoo +
|
||||
| | | | | odoo=CTc/odoo
|
||||
template1 | odoo | UTF8 | en_US.utf8 | en_US.utf8 | =c/odoo +
|
||||
| | | | | odoo=CTc/odoo
|
||||
test_psql | odoo | UTF8 | en_US.utf8 | en_US.utf8 |
|
||||
|
||||
```
|
||||
|
||||
- if you execute request that return long result, you can choose to select ``pager`` or ``-no-pager``
|
||||
option to display the result via the click function ``echo_via_pager``.
|
||||
(see : https://click.palletsprojects.com/en/8.1.x/utils/#pager-support)
|
||||
|
||||
Note : Pager is enabled by default.
|
||||
|
||||
|
||||
- you can pass extra psql arguments inline.
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard psql
|
||||
--database=test_psql
|
||||
--command "select id, name from res_partner where name ilike '%admin%';"
|
||||
-H
|
||||
```
|
||||
Result:
|
||||
```html
|
||||
<table border="1">
|
||||
<tr>
|
||||
<th align="center">id</th>
|
||||
<th align="center">name</th>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">3</td>
|
||||
<td align="left">Administrator</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>(1 row)<br />
|
||||
</p>
|
||||
|
||||
```
|
||||
|
||||
See all the options here https://www.postgresql.org/docs/current/app-psql.html
|
||||
|
||||
<a name="command-copydb"/>
|
||||
|
||||
## Command: ``copydb``
|
||||
|
||||
**Prerequites:** init
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard copydb
|
||||
--source DB_NAME
|
||||
--dest NEW_DB_NAME
|
||||
```
|
||||
|
||||
Create an Odoo database by copying an existing one.
|
||||
|
||||
This script copies using postgres CREATEDB WITH TEMPLATE. It also copies
|
||||
the filestore.
|
||||
|
||||
<a name="command-dropdb"/>
|
||||
|
||||
## Command: ``dropdb``
|
||||
|
||||
**Prerequites:** init
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard dropdb
|
||||
--database DB_NAME
|
||||
```
|
||||
|
||||
Delete an Odoo database and its filestore.
|
||||
|
||||
This command will always success even if DB_NAME does not exists.
|
||||
|
||||
<a name="command-dumpdb"/>
|
||||
|
||||
## Command: ``dumpdb``
|
||||
|
||||
**Prerequites:** init
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard dumpdb
|
||||
--database DB_NAME
|
||||
--database-path DATABASE_PATH
|
||||
--filestore-path FILESTORE_PATH
|
||||
```
|
||||
|
||||
Dump the database DB_NAME to DATABASE_PATH and export the filestore
|
||||
related to DB_NAME into FILESTORE_PATH. To choose the format of the
|
||||
backup files look at the `--database-format` and `--filestore-format`.
|
||||
|
||||
*WARNING*: DATABASE_PATH should be a sub directory of the project path
|
||||
in orter to have the postgresql container able to write the dump file.
|
||||
For example, the project path is `/path/to/myproject` (where you run the
|
||||
`init` command), then DATABASE_PATH can be any of the subdirectory of
|
||||
`/path/to/myproject`.
|
||||
|
||||
**Optional arguments**
|
||||
|
||||
- To chose the database format use `--database-format`. Format can be
|
||||
one of the following:
|
||||
- `p` for plain sql text
|
||||
- `c` for custom compressed backup of `pg_dump`
|
||||
- `d` for directory structure
|
||||
- `t` for a tar version of the directory structure
|
||||
See also https://www.postgresql.org/docs/current/app-pgdump.html
|
||||
The default database format is `c`.
|
||||
|
||||
- To chose the filestore format use `--filestore-format`. Format can be
|
||||
one of the following:
|
||||
- `d` copy of the directory structure
|
||||
- `t` tar version of the directory structure (not compressed)
|
||||
- `tgz` tar version of the directory structure compressed with gzip.
|
||||
The default filestore format is `tgz`.
|
||||
|
||||
- By default, if database file or filestore file already exists, the
|
||||
command will fail, preserving the existing dump. If you need to
|
||||
overwrite the existing files, the `--force` option can be used.
|
||||
520
README.md
520
README.md
|
|
@ -1,3 +1,5 @@
|
|||
<!-- markdownlint-disable MD033 -->
|
||||
|
||||
[](https://gitlab.com/odoo-openupgrade-wizard/odoo-openupgrade-wizard/-/pipelines)
|
||||
[](https://gitlab.com/odoo-openupgrade-wizard/odoo-openupgrade-wizard/)
|
||||
[](https://www.gnu.org/licenses/agpl-3.0)
|
||||
|
|
@ -11,9 +13,10 @@
|
|||
|
||||
Odoo Openupgrade Wizard is a tool that helps developpers to make major
|
||||
upgrade of Odoo Community Edition. (formely OpenERP).
|
||||
It works with Openupgrade OCA tools. (https://github.com/oca/openupgrade)
|
||||
It works with Openupgrade OCA tools. (<https://github.com/oca/openupgrade>)
|
||||
|
||||
this tool is useful for complex migrations:
|
||||
|
||||
- migrate several versions
|
||||
- take advantage of the migration to install / uninstall modules
|
||||
- execute sql requests or odoo shell scripts between each migration
|
||||
|
|
@ -22,37 +25,45 @@ this tool is useful for complex migrations:
|
|||
It will create a migration environment (with all the code available)
|
||||
and provides helpers to run (and replay) migrations until it works.
|
||||
|
||||
* To develop and contribute to the library, refer to the ``DEVELOP.md`` file.
|
||||
* Refer to the ``ROADMAP.md`` file to see the current limitation, bugs, and task to do.
|
||||
* See authors in the ``CONTRIBUTORS.md`` file.
|
||||
- To develop and contribute to the library, refer to the
|
||||
[DEVELOP.md](https://gitlab.com/odoo-openupgrade-wizard/odoo-openupgrade-wizard/-/blob/main/DEVELOP.md)
|
||||
file.
|
||||
- Refer to the
|
||||
[Gitlab Issue Page](https://gitlab.com/odoo-openupgrade-wizard/odoo-openupgrade-wizard/-/issues)
|
||||
to see the current limitation, bugs, and task to do.
|
||||
- See authors in the
|
||||
[CONTRIBUTORS.md](https://gitlab.com/odoo-openupgrade-wizard/odoo-openupgrade-wizard/-/blob/main/CONTRIBUTORS.md)
|
||||
file.
|
||||
- See history in the
|
||||
[CHANGES.rst](https://gitlab.com/odoo-openupgrade-wizard/odoo-openupgrade-wizard/-/blob/main/CHANGES.rst)
|
||||
file.
|
||||
|
||||
# Table of Contents
|
||||
## Table of Contents
|
||||
|
||||
* [Installation](#installation)
|
||||
* [Usage](#usage)
|
||||
* [Command ``init``](#command-init)
|
||||
* [Command ``pull-submodule``](#command-pull-submodule)
|
||||
* [Command ``get-code``](#command-get-code)
|
||||
* [Command ``docker-build``](#command-docker-build)
|
||||
* [Command ``run``](#command-run)
|
||||
* [Command ``install-from-csv``](#command-install-from-csv)
|
||||
* [Command ``upgrade``](#command-upgrade)
|
||||
* [Command ``generate-module-analysis``](#command-generate-module-analysis)
|
||||
* [Command ``estimate-workload``](#command-estimate-workload)
|
||||
* [Command ``psql``](#command-psql)
|
||||
* [Command ``copydb``](#command-copydb)
|
||||
* [Command ``dropdb``](#command-dropdb)
|
||||
* [Command ``dumpdb``](#command-dumpdb)
|
||||
- [Installation](#installation)
|
||||
- [Usage](#usage)
|
||||
- [Command ``init``](#command-init)
|
||||
- [Command ``init``](#command-init)
|
||||
- [Command ``pull-submodule``](#command-pull-submodule)
|
||||
- [Command ``get-code``](#command-get-code)
|
||||
- [Command ``docker-build``](#command-docker-build)
|
||||
- [Command ``run``](#command-run)
|
||||
- [Command ``install-from-csv``](#command-install-from-csv)
|
||||
- [Command ``upgrade``](#command-upgrade)
|
||||
- [Command ``generate-module-analysis``](#command-generate-module-analysis)
|
||||
- [Command ``estimate-workload``](#command-estimate-workload)
|
||||
- [Command ``psql``](#command-psql)
|
||||
- [Command ``copydb``](#command-copydb)
|
||||
- [Command ``dropdb``](#command-dropdb)
|
||||
- [Command ``dumpdb``](#command-dumpdb)
|
||||
|
||||
<a name="installation"/>
|
||||
|
||||
# Installation
|
||||
## Installation<a name="installation"></a>
|
||||
|
||||
**Prerequites:**
|
||||
|
||||
* The tools run on debian system
|
||||
* You should have docker installed on your system
|
||||
* Some features require extra packages. To have all the features available run:
|
||||
- The tools run on debian system
|
||||
- You should have docker installed on your system
|
||||
- Some features require extra packages. To have all the features available run:
|
||||
|
||||
**Installation:**
|
||||
|
||||
|
|
@ -60,459 +71,10 @@ The library is available on [PyPI](https://pypi.org/project/odoo-openupgrade-wiz
|
|||
|
||||
To install it simply run :
|
||||
|
||||
``pipx install odoo-openupgrade-wizard``
|
||||
|
||||
(See alternative installation in ``DEVELOP.md`` file.)
|
||||
|
||||
<a name="usage"/>
|
||||
|
||||
# Usage
|
||||
|
||||
**Note:**
|
||||
|
||||
the term ``odoo-openupgrade-wizard`` can be replaced by ``oow``
|
||||
in all the command lines below.
|
||||
|
||||
<a name="command-init"/>
|
||||
|
||||
## Command: ``init``
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard init\
|
||||
--initial-version=10.0\
|
||||
--final-version=12.0\
|
||||
--project-name=my-customer-10-12\
|
||||
--extra-repository=OCA/web,OCA/server-tools
|
||||
pipx install odoo-openupgrade-wizard
|
||||
```
|
||||
|
||||
Initialize a folder to make a migration from a 10.0 and a 12.0 database.
|
||||
This will generate the following structure :
|
||||
|
||||
```
|
||||
filestore/
|
||||
log/
|
||||
2022_03_25__23_12_41__init.log
|
||||
...
|
||||
postgres_data/
|
||||
scripts/
|
||||
step_1__update__10.0/
|
||||
pre-migration.sql
|
||||
post-migration.py
|
||||
step_2__upgrade__11.0/
|
||||
...
|
||||
step_3__upgrade__12.0/
|
||||
...
|
||||
step_4__update__12.0/
|
||||
...
|
||||
src/
|
||||
env_10.0/
|
||||
extra_debian_requirements.txt
|
||||
Dockerfile
|
||||
odoo.conf
|
||||
extra_python_requirements.txt
|
||||
repos.yml
|
||||
src/
|
||||
env_11.0/
|
||||
...
|
||||
env_12.0/
|
||||
...
|
||||
config.yml
|
||||
modules.csv
|
||||
```
|
||||
|
||||
* ``config.yml`` is the main configuration file of your project.
|
||||
|
||||
* ``modules.csv`` file is an optional file. You can fill it with the list
|
||||
of your modules installed on your production. The first column of this
|
||||
file should contain the technical name of the module.
|
||||
|
||||
* ``log`` folder will contains all the log of the ``odoo-openupgrade-wizard``
|
||||
and the logs of the odoo instance that will be executed.
|
||||
|
||||
* ``filestore`` folder will contains the filestore of the odoo database(s)
|
||||
|
||||
* ``postgres_data`` folder will be used by postgres docker image to store
|
||||
database.
|
||||
|
||||
* ``scripts`` folder contains a folder per migration step. In each step folder:
|
||||
- ``pre-migration.sql`` can contains extra SQL queries you want to execute
|
||||
before beginning the step.
|
||||
- ``post-migration.py`` can contains extra python command to execute
|
||||
after the execution of the step.
|
||||
Script will be executed with ``odoo shell`` command. All the ORM is available
|
||||
via the ``env`` variable.
|
||||
|
||||
* ``src`` folder contains a folder per Odoo version. In each environment folder:
|
||||
|
||||
- ``repos.yml`` enumerates the list of the repositories to use to run the odoo instance.
|
||||
The syntax should respect the ``gitaggregate`` command.
|
||||
(See : https://pypi.org/project/git-aggregator/)
|
||||
Repo files are pre-generated. You can update them with your custom settings.
|
||||
(custom branches, extra PRs, git shallow options, etc...)
|
||||
|
||||
- ``extra_python_requirements.txt`` enumerates the list of extra python librairies
|
||||
required to run the odoo instance.
|
||||
The syntax should respect the ``pip install -r`` command.
|
||||
(See : https://pip.pypa.io/en/stable/reference/requirements-file-format/)
|
||||
|
||||
- ``extra_debian_requirements.txt`` enumerates the list of extra system librairies
|
||||
required to run the odoo instance.
|
||||
|
||||
- ``odoo.conf`` file. Add here extra configuration required for your custom modules.
|
||||
the classical keys (``db_host``, ``db_port``, etc...) are automatically
|
||||
autogenerated.
|
||||
|
||||
At this step, you should change the autogenerated files.
|
||||
You can use default files, if you have a very simple odoo instance without custom code,
|
||||
extra repositories, or dependencies...
|
||||
|
||||
**Note:**
|
||||
|
||||
- In your repos.yml, preserve ``openupgrade`` and ``server-tools`` repositories
|
||||
to have all the features of the librairies available.
|
||||
- In your repos.yml file, the odoo project should be in ``./src/odoo``
|
||||
and the openupgrade project should be in ``./src/openupgrade/`` folder.
|
||||
|
||||
<a name="command-pull-submodule"/>
|
||||
|
||||
## Command: ``pull-submodule``
|
||||
|
||||
**Prerequites:** init + being in a git repository. (if not, you can simply run ``git init``)
|
||||
|
||||
if you already have a repos.yml file on github / gitlab, it can be convenient to
|
||||
synchronize the repository, instead of copy past the ``repos.yml`` manually.
|
||||
|
||||
In that case, you can add extra values, in the ``config.yml`` file in the section
|
||||
|
||||
```yaml
|
||||
odoo_version_settings:
|
||||
12.0:
|
||||
repo_url: url_of_the_repo_that_contains_a_repos_yml_file
|
||||
repo_branch: 12.0
|
||||
repo_file_path: repos.yml
|
||||
```
|
||||
|
||||
then run following command :
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard pull-submodule
|
||||
```
|
||||
|
||||
<a name="command-get-code"/>
|
||||
|
||||
## Command: ``get-code``
|
||||
|
||||
**Prerequites:** init
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard get-code
|
||||
```
|
||||
|
||||
This command will simply get all the Odoo code required to run all the steps
|
||||
for your migration with the ``gitaggregate`` tools.
|
||||
|
||||
The code is defined in the ``repos.yml`` of each environment folders. (or in the
|
||||
directory ``repo_submodule`` if you use ``pull-submodule`` feature.)
|
||||
|
||||
**Note**
|
||||
|
||||
* This step could take a big while !
|
||||
|
||||
**Optional arguments**
|
||||
|
||||
if you want to update the code of some given versions, you can provide an extra parameter:
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard get-code --versions 10.0,11.0
|
||||
```
|
||||
|
||||
<a name="command-docker-build"/>
|
||||
|
||||
## Command: ``docker-build``
|
||||
|
||||
**Prerequites:** init + get-code
|
||||
|
||||
This will build local docker images that will be used in the following steps.
|
||||
|
||||
At this end of this step executing the following command should show a docker image per version.
|
||||
|
||||
|
||||
```shell
|
||||
docker images --filter "reference=odoo-openupgrade-wizard-*"
|
||||
```
|
||||
```
|
||||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
odoo-openupgrade-wizard-image---my-customer-10-12---12.0 latest ef664c366208 2 weeks ago 1.39GB
|
||||
odoo-openupgrade-wizard-image---my-customer-10-12---11.0 latest 24e283fe4ae4 2 weeks ago 1.16GB
|
||||
odoo-openupgrade-wizard-image---my-customer-10-12---10.0 latest 9d94dce2bd4e 2 weeks ago 924MB
|
||||
```
|
||||
|
||||
**Optional arguments**
|
||||
|
||||
* if you want to (re)build an image for some given versions, you can provide
|
||||
an extra parameter: ``--versions 10.0,12.0``
|
||||
|
||||
**Note**
|
||||
|
||||
* This step could take a big while also !
|
||||
|
||||
|
||||
<a name="command-run"/>
|
||||
|
||||
## Command: ``run``
|
||||
|
||||
**Prerequites:** init + get-code + build
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard run\
|
||||
--step 1\
|
||||
--database DB_NAME
|
||||
```
|
||||
|
||||
Run an Odoo instance with the environment defined by the step argument.
|
||||
|
||||
The database will be created, if it doesn't exists.
|
||||
|
||||
if ``stop-after-init`` is disabled, the odoo instance will be available
|
||||
at your host, at the following url : http://localhost:9069
|
||||
(Port depends on your ``host_odoo_xmlrpc_port`` setting of your ``config.yml`` file)
|
||||
|
||||
**Optional arguments**
|
||||
|
||||
* You can add ``--init-modules=purchase,sale`` to install modules.
|
||||
|
||||
* You can add ``stop-after-init`` flag to turn off the process at the end
|
||||
of the installation.
|
||||
|
||||
|
||||
<a name="command-install-from-csv"/>
|
||||
|
||||
## Command: ``install-from-csv``
|
||||
|
||||
**Prerequites:** init + get-code + build
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard install-from-csv\
|
||||
--database DB_NAME
|
||||
```
|
||||
|
||||
Install the list of the modules defined in your ``modules.csv`` files on the
|
||||
given database.
|
||||
|
||||
The database will be created, if it doesn't exists.
|
||||
|
||||
To get a correct ``modules.csv`` file, the following query can be used:
|
||||
```shell
|
||||
psql -c "copy (select name, shortdesc from ir_module_module where state = 'installed' order by 1) to stdout csv" coopiteasy
|
||||
```
|
||||
|
||||
|
||||
<a name="command-upgrade"/>
|
||||
|
||||
## Command: ``upgrade``
|
||||
|
||||
**Prerequites:** init + get-code + build
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard upgrade\
|
||||
--database DB_NAME
|
||||
```
|
||||
|
||||
Realize an upgrade of the database from the initial version to
|
||||
the final version, following the different steps.
|
||||
|
||||
For each step, it will :
|
||||
|
||||
1. Execute the ``pre-migration.sql`` of the step.
|
||||
2. Realize an "update all" (in an upgrade or update context)
|
||||
3. Execute the scripts via XML-RPC (via ``odoorpc``) defined in
|
||||
the ``post-migration.py`` file.
|
||||
|
||||
**Optional arguments**
|
||||
|
||||
* You can add ``--first-step=2`` to start at the second step.
|
||||
|
||||
* You can add ``--last-step=3`` to end at the third step.
|
||||
|
||||
|
||||
<a name="command-generate-module-analysis"/>
|
||||
|
||||
## Command: ``generate-module-analysis``
|
||||
|
||||
**Prerequites:** init + get-code + build
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard generate-module-analysis\
|
||||
--database DB_NAME
|
||||
--step 2
|
||||
--modules MODULE_LIST
|
||||
```
|
||||
|
||||
Realize an analyze between the target version (in parameter via the step argument)
|
||||
and the previous version. It will generate analysis_file.txt files present
|
||||
in OpenUpgrade project.
|
||||
You can also use this fonction to analyze differences for custom / OCA modules
|
||||
between several versions, in case of refactoring.
|
||||
|
||||
<a name="command-estimate-workload"/>
|
||||
|
||||
## Command: ``estimate-workload``
|
||||
|
||||
**Prerequites:** init + get-code
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard estimate-workload
|
||||
```
|
||||
|
||||
Generate an HTML file name ``analysis.html`` with all the information regarding
|
||||
the work to do for the migration.
|
||||
- checks that the modules are present in each version. (by managing the
|
||||
renaming or merging of modules)
|
||||
- check that the analysis and migration have been done for the official
|
||||
modules present in odoo/odoo
|
||||
|
||||
<a name="command-psql"/>
|
||||
|
||||
## Command: ``psql``
|
||||
|
||||
**Prerequites:** init
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard psql
|
||||
--database DB_NAME
|
||||
--command "SQL_REQUEST"
|
||||
```
|
||||
|
||||
Execute an SQL Request on the target database.
|
||||
|
||||
**Optional arguments**
|
||||
|
||||
* If no ``database`` is provided, default ``postgres`` database will be used. exemple:
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard psql --command "\l";
|
||||
```
|
||||
Result:
|
||||
```
|
||||
List of databases
|
||||
Name | Owner | Encoding | Collate | Ctype | Access privileges
|
||||
------------+-------+----------+------------+------------+-------------------
|
||||
postgres | odoo | UTF8 | en_US.utf8 | en_US.utf8 |
|
||||
template0 | odoo | UTF8 | en_US.utf8 | en_US.utf8 | =c/odoo +
|
||||
| | | | | odoo=CTc/odoo
|
||||
template1 | odoo | UTF8 | en_US.utf8 | en_US.utf8 | =c/odoo +
|
||||
| | | | | odoo=CTc/odoo
|
||||
test_psql | odoo | UTF8 | en_US.utf8 | en_US.utf8 |
|
||||
|
||||
```
|
||||
|
||||
* if you execute request that return long result, you can choose to select ``pager`` or ``-no-pager``
|
||||
option to display the result via the click function ``echo_via_pager``.
|
||||
(see : https://click.palletsprojects.com/en/8.1.x/utils/#pager-support)
|
||||
|
||||
Note : Pager is enabled by default.
|
||||
|
||||
|
||||
* you can pass extra psql arguments inline.
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard psql
|
||||
--database=test_psql
|
||||
--command "select id, name from res_partner where name ilike '%admin%';"
|
||||
-H
|
||||
```
|
||||
Result:
|
||||
```html
|
||||
<table border="1">
|
||||
<tr>
|
||||
<th align="center">id</th>
|
||||
<th align="center">name</th>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">3</td>
|
||||
<td align="left">Administrator</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>(1 row)<br />
|
||||
</p>
|
||||
|
||||
```
|
||||
|
||||
See all the options here https://www.postgresql.org/docs/current/app-psql.html
|
||||
|
||||
<a name="command-copydb"/>
|
||||
|
||||
## Command: ``copydb``
|
||||
|
||||
**Prerequites:** init
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard copydb
|
||||
--source DB_NAME
|
||||
--dest NEW_DB_NAME
|
||||
```
|
||||
|
||||
Create an Odoo database by copying an existing one.
|
||||
|
||||
This script copies using postgres CREATEDB WITH TEMPLATE. It also copies
|
||||
the filestore.
|
||||
|
||||
<a name="command-dropdb"/>
|
||||
|
||||
## Command: ``dropdb``
|
||||
|
||||
**Prerequites:** init
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard dropdb
|
||||
--database DB_NAME
|
||||
```
|
||||
|
||||
Delete an Odoo database and its filestore.
|
||||
|
||||
This command will always success even if DB_NAME does not exists.
|
||||
|
||||
<a name="command-dumpdb"/>
|
||||
|
||||
## Command: ``dumpdb``
|
||||
|
||||
**Prerequites:** init
|
||||
|
||||
```shell
|
||||
odoo-openupgrade-wizard dumpdb
|
||||
--database DB_NAME
|
||||
--database-path DATABASE_PATH
|
||||
--filestore-path FILESTORE_PATH
|
||||
```
|
||||
|
||||
Dump the database DB_NAME to DATABASE_PATH and export the filestore
|
||||
related to DB_NAME into FILESTORE_PATH. To choose the format of the
|
||||
backup files look at the `--database-format` and `--filestore-format`.
|
||||
|
||||
*WARNING*: DATABASE_PATH should be a sub directory of the project path
|
||||
in orter to have the postgresql container able to write the dump file.
|
||||
For example, the project path is `/path/to/myproject` (where you run the
|
||||
`init` command), then DATABASE_PATH can be any of the subdirectory of
|
||||
`/path/to/myproject`.
|
||||
|
||||
**Optional arguments**
|
||||
|
||||
* To chose the database format use `--database-format`. Format can be
|
||||
one of the following:
|
||||
- `p` for plain sql text
|
||||
- `c` for custom compressed backup of `pg_dump`
|
||||
- `d` for directory structure
|
||||
- `t` for a tar version of the directory structure
|
||||
See also https://www.postgresql.org/docs/current/app-pgdump.html
|
||||
The default database format is `c`.
|
||||
|
||||
* To chose the filestore format use `--filestore-format`. Format can be
|
||||
one of the following:
|
||||
- `d` copy of the directory structure
|
||||
- `t` tar version of the directory structure (not compressed)
|
||||
- `tgz` tar version of the directory structure compressed with gzip.
|
||||
The default filestore format is `tgz`.
|
||||
|
||||
* By default, if database file or filestore file already exists, the
|
||||
command will fail, preserving the existing dump. If you need to
|
||||
overwrite the existing files, the `--force` option can be used.
|
||||
See alternative installation in the
|
||||
[DEVELOP.md](https://gitlab.com/odoo-openupgrade-wizard/odoo-openupgrade-wizard/-/blob/main/DEVELOP.md)
|
||||
file.
|
||||
|
|
|
|||
45
ROADMAP.md
45
ROADMAP.md
|
|
@ -1,45 +0,0 @@
|
|||
# Python Version
|
||||
|
||||
* py310 is not available, due to dependencies to ``odoorpc`` that raise an error :
|
||||
``ERROR tests/cli_A_init_test.py - AttributeError: module 'collections' has no attribute 'MutableMapping'``
|
||||
Follow bug : https://stackoverflow.com/questions/69512672/getting-attributeerror-module-collections-has-no-attribute-mutablemapping-w
|
||||
|
||||
# openUpgradelib Versions
|
||||
|
||||
* ``openupgradelib`` requires a new feature psycopg2.sql since
|
||||
(21 Aug 2019)
|
||||
https://github.com/OCA/openupgradelib/commit/7408580e4469ba4b0cabb923da7facd71567a2fb
|
||||
so we pin openupgradelib==2.0.0 (21 Jul 2018)
|
||||
|
||||
The python version in the Odoo:12 docker image is : ``Python 3.5.3 (default, Apr 5 2021, 09:00:41)`` that is very old.
|
||||
|
||||
|
||||
- https://github.com/OCA/openupgradelib/issues/248
|
||||
- https://github.com/OCA/openupgradelib/issues/288
|
||||
- https://github.com/OCA/openupgradelib.git@ed01555b8ae20f66b3af178c8ecaf6edd110ce75#egg=openupgradelib
|
||||
|
||||
TODO : Fix via another way (other way than pining ``openuppgradelib`` version) the problem of old odoo versions. (it makes the upgrade failing for old revision (V8, etc...))
|
||||
|
||||
# Gitlab-CI
|
||||
|
||||
* for the time being, Features requiring ``odoorpc`` are failing in gitlab-CI.
|
||||
Tests are working locally but there is a network problem. For that reason, tests witch names
|
||||
begins by ``cli_2`` like (``cli_20_install_from_csv_test.py``) are disabled in ``.gitlab-ci.yml``.
|
||||
|
||||
TODO : work with Pierrick Brun, to run gitlab-runner on Akretion CI (without docker), to see if it is
|
||||
fixing the problem.
|
||||
|
||||
# Features Work In Progress
|
||||
|
||||
* Add a tools to analyze workload.
|
||||
|
||||
# Possible Improvments
|
||||
|
||||
* select ``without-demo all`` depending on if the database
|
||||
is created or not (and if current database contains demo data, checking if base.user_demo exists ?)
|
||||
|
||||
# Other points not in the scope of GRAP work
|
||||
|
||||
* Allow to use custom docker images.
|
||||
|
||||
* Check if there are default values for containers, limiting ressources.
|
||||
Loading…
Reference in New Issue
Block a user