We are happy to announce the release of: freezer-api 7.0.0: OpenStack Backup and Restore API Service This release is part of the stein release series. Download the package from: https://tarballs.openstack.org/freezer-api/ For more details, please see below. 7.0.0 ^^^^^ Prelude ******* Added new tool "freezer-manager-status upgrade check". Currently freezer-api v1 is the default api version to be used in different freezer components. Freezer-api v1 doesn't support multi- tenancy and will be a blocker to support sqlalchemy. Freezer-api v2 was already implement and was being use as *experimental*. Freezer api v1 will be disabled by default in gate jobs Currently freezer-api supports only elasticsearch as database engine. Elasticsearch is adding complexity in deploying and running freezer, the need and planning to move to sqlalchemy has been a moving target since Pike. Now freezer-api should be able to support sqlalchemy, it's still under development, so not fully supported yet. There is work in progress to unify the database api so freezer can support more than one database driver at the same time. New Features ************ * Completely support sqlalchemy driver for freezer-api. The previous version only implemented part one. In this patch, sqlalchemy driver has been completely implemented for freezer-api. See links in detail: https://storyboard.openstack.org/#!/story/2004132 The configuration example is as follows: [database] connection = mysql+pymysql://root:stack@127.0.0.1/freezer?charset=utf8 [storage] backend = sqlalchemy driver = sqlalchemy * New framework for "freezer-manager-status upgrade check" command is added. This framework allows adding various checks which can be run before a Freezer API upgrade to ensure if the upgrade can be performed safely. * Fixed some minor bugs in freezer-api v2. Set freezer-api version 2 to stable and use it as the current version. The default behaviour of freezer now is to support multi-tenancy! All tempest tests are running against freezer api v2 * Freezer support for sqlalchemy in development. freezer-manage fully supports sqlalchemy database now! Known Issues ************ * No Backward compitibility support! * No Backward compitibility support! sqlalchemy will be only supported for freezer api version 2 Upgrade Notes ************* * Operator can now use new CLI tool "freezer-manager-status upgrade check" to check if Freezer API deployment can be safely upgraded from N-1 to N release. Deprecation Notes ***************** * Freezer api version 1 is deprecated and will be out of support end of Rocky release, to be removed in future releases!. Critical Issues *************** * All Freezer mappings needs to be upgraded to reflect project_id. Now smooth upgrade facility is provided! * Freezer api version 1 is broken and won't be supported! Bug Fixes ********* * Delete Backups using freezer-api v2 * Fixed remove mappings in freezer-manage as elasticsearch removed this feature, so now we have to delete the index not individual mappings! Changes in freezer-api 7.0.0.0b1..7.0.0 --------------------------------------- a73b804 Support search otion and limit, offset for sqlalchemy c480fa5 Change openstack-dev to openstack-discuss cdd34ec Add search option for list query 75d07f6 Add search_client unit test for search option from client cmd 95da463 Add search_client unit test for search option from client api 7b55e1b Add client search for sql 1cc79e1 Add search_session unit test for search option from client cmd 6cfcf2c Add search_action unit test for search option from client cmd 7927579 Add search_session unit test for search option 4862eb0 Add search_action unit test for search option from client api 11977ba Add backup search for sql f75a21c Add search_job unit test for search option from freezer client cmd cfcb707 Add search_job unit test for search option from freezer agent 1492a5e Support search in search_action for sqlalchemy b0b18bb Support search in search_session for sqlalchemy 2d5a483 Freezer scheduler search jobs error for sqlalchemy 57835be Add client search unit test for sql 8a351cc Add client delete unit test for sql 51b1e8e Add backup search unit test for sql 25376c4 Add session search unit test for sqlalchemy 3aa1b1d Add job search unit test for sqlalchemy 8f4a306 Add job replace unit test for sqlalchemy 15ef824 Add session replace unit test for sqlalchemy df2993f Add backup delete unit test for sql e3b5353 Add action search unit test 08e22ad Add session update unit test for sqlalchemy d9007cf Add job update unit test for sqlalchemy c084016 Add action replace unit test for sql c0f3449 Add action update unit test for sql ee85197 Add session delete unit test for sqlalchemy 3ec01e7 Add backup unit test for sql bf682fa Add job delete unit test for sqlalchemy 38c4a0b Add unit test for session table in sqlalchemy 18d0df6 Add client add and get unit test for sql 758830a Correct session_tag field type error 320b357 Add action delete unit test for sql 54c0e5c Add unit test for job table in sqlalchemy 421cb41 Add Action unit test for sql 0c23230 Update freezer-tempest-basic-salqlchemy job as a voting job 463c13a Add freezer-tempest-basic-sqlalchemy job in freezer-api 944e16b Fix tempest failure in sqlalchemy driver ab7d385 Add unit test framework for sqlalchemy driver 50f65ae Refactor sql driver api 9aa9028 Update jobs(v2) api-def 27403cc Don't quote {posargs} in tox.ini 75c1b64 Update min tox version to 2.0 6925ba2 modify document for api version v1 support for sql driver d1a5e93 Correct errors about freezer-api supporting for V1 and V2 api fc701f9 add api version v1 support for sql driver 4cf9e1c Upgrade Checkers : spelling correction ca1c830 Update tox.ini bffde58 Add devstack sqlalchemy support for freezer cb83529 Update clients(v2) api-ref 63927a3 set enable_v1_api=false in config sample 1130896 Update backups(v2) api-ref 25a9065 Modify driver for bp add-mysql-support-for-freezer 88ce38c Add freezer-manager-status upgrade check command framework 48ea1e4 Fix a typo in delete job api d79df98 Update actions-v2 api-ref cee24d3 Update Backup Service api-ref 60b1cb7 Add jobs api for bp add-mysql-support-for-freezer 83fb412 Add backup api for bp add-mysql-support-for-freezer aacbe8a Add backup table for bp add-mysql-support-for-freezer 796c41a Add jobs table for bp add-mysql-support-for-freezer 6064f9f Add session api for bp add-mysql-support-for-freezer 83d1996 Add session table for bp add-mysql-support-for-freezer d2e1c19 Release the notes about Sqlalchemy driver for freezer-api 4f68595 Add action api for bp add-mysql-support-for-freezer 8c63de5 Add action table for bp add-mysql-support-for-freezer 9db61ba Add clients api for bp add-mysql-support-for-freezer 93a000a Change config_id to client_id in clients table 522e55a Add clients table for bp add-mysql-support-for-freezer 1937caa Add sqlalchemy migration in v2 for bp add-mysql-support-for-freezer 45f06cb There are errors in executing session-add-job in v2 interface 4db4a6c Add freezer_api.api.v2.homedoc unit test cases 3bded47 Add gate/check test job b76b4bc Fix freezer_api.api.v2.sessions bug: doc.items() is not a iter object 1178086 Add freezer_api.api.v2.jobs unit test cases ef24c92 Add freezer_api.api.v2.clients unit test cases 4aa9702 Add unit test cases of v2 interfaces: backup 023616a when installing from pip python plugin is embedded in the binary 5fbb03d Add unit test cases of v2 interfaces: action. 339bff2 Adjust unit test directory. 45b9bc9 Modifying code comments errors. "v1" modified to "v2",and add new parameter {project_id} fc08821 Remove ababdoned code. 2b45672 python3.6 expects 'encoding' as keyword argument. 1424395 add python 3.6 unit test job e6fdd0b switch release job to python 3 d1f713e import zuul job settings from project-config 32ac17c fix bug link in readme 2c2e604 fix request mock object due to change in oslo.policy 85b8aee fix tox python3 overrides fc4fb5a update pylint to 1.9.2 db4b507 Add py36 testenv 8e6f9c7 fix pep8 error under python 3 67e5953 Rework AseertEqual params order in freezer-api from (got, expected) to (expected, got) a4a68b3 Delete request for non-existent ID will be 404. Diffstat (except docs and test files) ------------------------------------- .zuul.yaml | 48 + README.rst | 2 +- api-ref/source/v1/actions-v1.inc | 9 +- api-ref/source/v1/backups-v1.inc | 7 + api-ref/source/v1/clients-v1.inc | 7 + api-ref/source/v1/index.rst | 6 +- api-ref/source/v1/jobs-v1.inc | 7 + api-ref/source/v1/parameters.yaml | 9 + .../source/v1/samples/actions-list-request.json | 12 + api-ref/source/v1/samples/backup-list-request.json | 12 + .../source/v1/samples/clients-list-request.json | 12 + api-ref/source/v1/samples/jobs-list-request.json | 12 + .../source/v1/samples/sessions-list-request.json | 12 + api-ref/source/v1/sessions-v1.inc | 7 + api-ref/source/v2/actions-v2.inc | 252 +++++ api-ref/source/v2/backups-v2.inc | 91 +- api-ref/source/v2/clients-v2.inc | 186 ++++ api-ref/source/v2/index.rst | 6 +- api-ref/source/v2/jobs-v2.inc | 183 +++- api-ref/source/v2/parameters.yaml | 239 ++++- .../source/v2/samples/actions-create-request.json | 15 + .../source/v2/samples/actions-create-response.json | 4 + .../source/v2/samples/actions-get-response.json | 19 + .../source/v2/samples/actions-list-request.json | 12 + .../source/v2/samples/actions-list-response.json | 44 + .../source/v2/samples/actions-update-request.json | 15 + .../source/v2/samples/actions-update-response.json | 5 + api-ref/source/v2/samples/backup-get-response.json | 39 + api-ref/source/v2/samples/backup-list-request.json | 12 + .../source/v2/samples/backup-list-response.json | 2 + api-ref/source/v2/samples/client-get-response.json | 11 + .../source/v2/samples/clients-create-request.json | 8 + .../source/v2/samples/clients-create-response.json | 1 + .../source/v2/samples/clients-list-request.json | 12 + .../source/v2/samples/clients-list-response.json | 26 + api-ref/source/v2/samples/job-create-request.json | 2 - api-ref/source/v2/samples/job-get-response.json | 41 + api-ref/source/v2/samples/job-update-request.json | 25 + api-ref/source/v2/samples/job-update-response.json | 1 + api-ref/source/v2/samples/jobs-list-request.json | 12 + api-ref/source/v2/samples/jobs-list-response.json | 6 +- .../source/v2/samples/session-start-request.json | 6 + .../source/v2/samples/session-start-response.json | 4 + .../source/v2/samples/sessions-create-request.json | 10 + .../v2/samples/sessions-create-response.json | 4 + .../source/v2/samples/sessions-get-response.json | 16 + .../v2/samples/sessions-get-with-job-response.json | 26 + .../source/v2/samples/sessions-list-request.json | 12 + .../source/v2/samples/sessions-list-response.json | 30 + .../source/v2/samples/sessions-update-request.json | 10 + .../v2/samples/sessions-update-response.json | 5 + api-ref/source/v2/sessions-v2.inc | 353 +++++++ devstack/README.rst | 5 + devstack/lib/freezer-api | 57 +- etc/freezer/freezer-api.conf.sample | 48 +- etc/freezer/freezer-paste.ini | 3 - freezer_api/api/common/resource.py | 2 +- freezer_api/api/common/utils.py | 10 + freezer_api/api/v1/actions.py | 13 +- freezer_api/api/v1/backups.py | 15 +- freezer_api/api/v1/clients.py | 15 +- freezer_api/api/v1/jobs.py | 12 +- freezer_api/api/v1/sessions.py | 13 +- freezer_api/api/v2/actions.py | 20 +- freezer_api/api/v2/backups.py | 13 +- freezer_api/api/v2/clients.py | 11 +- freezer_api/api/v2/jobs.py | 21 +- freezer_api/api/v2/sessions.py | 33 +- freezer_api/api/versions.py | 3 +- freezer_api/cmd/manage.py | 2 +- freezer_api/cmd/status.py | 52 + freezer_api/common/config.py | 50 +- freezer_api/db/base.py | 1 + freezer_api/db/elasticsearch/driver.py | 11 +- freezer_api/db/sqlalchemy/api.py | 1002 ++++++++++++++++++++ freezer_api/db/sqlalchemy/driver.py | 39 +- freezer_api/db/sqlalchemy/migrate_repo/__init__.py | 0 freezer_api/db/sqlalchemy/migrate_repo/migrate.cfg | 20 + .../migrate_repo/versions/001_freezer_api_init.py | 170 ++++ .../sqlalchemy/migrate_repo/versions/__init__.py | 0 freezer_api/db/sqlalchemy/models.py | 155 ++- freezer_api/service.py | 13 +- lower-constraints.txt | 45 +- ...l-support-for-freezer-api-e226f59425a2183c.yaml | 13 + ...s-upgrade-check-framework-f3d73fc7ee4c4b20.yaml | 13 + requirements.txt | 3 +- setup.cfg | 5 +- test-requirements.txt | 4 +- tox.ini | 37 +- 128 files changed, 8738 insertions(+), 1861 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 8f6a80d..3d9337a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4 +4 @@ -elasticsearch<=3.0.0,>=2.0.0 # Apache-2.0 +elasticsearch<3.0.0,>=2.0.0 # Apache-2.0 @@ -16,0 +17 @@ oslo.policy>=1.30.0 # Apache-2.0 +oslo.upgradecheck>=0.1.0 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index 82a56fd..9b95872 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -4 +4 @@ -astroid<1.4.0 # LGPLv2.1 # breaks pylint 1.4.4 +astroid==1.6.5 # LGPLv2.1 @@ -6 +6 @@ flake8<2.6.0,>=2.5.4 # MIT -pylint==1.4.5 # GPLv2 +pylint==1.9.2 # GPLv2