Merge "Support upgrade checks"
This commit is contained in:
53
cloudkitty/cli/status.py
Normal file
53
cloudkitty/cli/status.py
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Copyright 2018 Objectif Libre
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
#
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from oslo_config import cfg
|
||||||
|
from oslo_upgradecheck import upgradecheck
|
||||||
|
|
||||||
|
from cloudkitty.i18n import _
|
||||||
|
# Import needed to register storage options
|
||||||
|
from cloudkitty import storage # noqa
|
||||||
|
|
||||||
|
|
||||||
|
CONF = cfg.CONF
|
||||||
|
|
||||||
|
|
||||||
|
class CloudkittyUpgradeChecks(upgradecheck.UpgradeCommands):
|
||||||
|
|
||||||
|
def _storage_version(self):
|
||||||
|
if CONF.storage.version < 2:
|
||||||
|
return upgradecheck.Result(
|
||||||
|
upgradecheck.Code.WARNING,
|
||||||
|
'Storage version is inferior to 2. Support for v1 storage '
|
||||||
|
'will be dropped in a future release.',
|
||||||
|
)
|
||||||
|
return upgradecheck.Result(upgradecheck.Code.SUCCESS)
|
||||||
|
|
||||||
|
_upgrade_checks = (
|
||||||
|
(_('Storage version'), _storage_version),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
return upgradecheck.main(
|
||||||
|
conf=CONF,
|
||||||
|
project='cloudkitty',
|
||||||
|
upgrade_command=CloudkittyUpgradeChecks(),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.exit(main())
|
0
cloudkitty/tests/cli/__init__.py
Normal file
0
cloudkitty/tests/cli/__init__.py
Normal file
39
cloudkitty/tests/cli/test_status.py
Normal file
39
cloudkitty/tests/cli/test_status.py
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# Copyright 2018 Objectif Libre
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
#
|
||||||
|
from oslo_upgradecheck import upgradecheck
|
||||||
|
|
||||||
|
from cloudkitty.cli import status
|
||||||
|
from cloudkitty import tests
|
||||||
|
|
||||||
|
|
||||||
|
class CloudKittyStatusCheckUpgradeTest(tests.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(CloudKittyStatusCheckUpgradeTest, self).setUp()
|
||||||
|
self._checks = status.CloudkittyUpgradeChecks()
|
||||||
|
|
||||||
|
def test_storage_version_with_v1(self):
|
||||||
|
self.conf.set_override('version', 1, 'storage')
|
||||||
|
self.assertEqual(
|
||||||
|
upgradecheck.Code.WARNING,
|
||||||
|
self._checks._storage_version().code,
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_storage_version_with_v2(self):
|
||||||
|
self.conf.set_override('version', 2, 'storage')
|
||||||
|
self.assertEqual(
|
||||||
|
upgradecheck.Code.SUCCESS,
|
||||||
|
self._checks._storage_version().code,
|
||||||
|
)
|
85
doc/source/admin/cli/cloudkitty-status.rst
Normal file
85
doc/source/admin/cli/cloudkitty-status.rst
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
=====================
|
||||||
|
Cloudkitty Status CLI
|
||||||
|
=====================
|
||||||
|
|
||||||
|
This chapter documents :command:`cloudkitty-status`.
|
||||||
|
|
||||||
|
For help on a specific :command:`cloudkitty-status` command, enter:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cloudkitty-status COMMAND --help
|
||||||
|
|
||||||
|
cloudkitty-status
|
||||||
|
=================
|
||||||
|
|
||||||
|
:program:`cloudkitty-status` is a tool that provides routines for checking the
|
||||||
|
status of a Cloudkitty deployment.
|
||||||
|
|
||||||
|
The standard pattern for executing a :program:`cloudkitty-status` command is:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
cloudkitty-status <category> <command> [<args>]
|
||||||
|
|
||||||
|
Run without arguments to see a list of available command categories:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
cloudkitty-status
|
||||||
|
|
||||||
|
Categories are:
|
||||||
|
|
||||||
|
* ``upgrade``
|
||||||
|
|
||||||
|
Detailed descriptions are below.
|
||||||
|
|
||||||
|
You can also run with a category argument such as ``upgrade`` to see a list of
|
||||||
|
all commands in that category:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
cloudkitty-status upgrade
|
||||||
|
|
||||||
|
The following sections describe the available categories and arguments for
|
||||||
|
:program:`cloudkitty-status`.
|
||||||
|
|
||||||
|
cloudkitty-status upgrade
|
||||||
|
=========================
|
||||||
|
|
||||||
|
.. _cloudkitty-status-upgrade-check:
|
||||||
|
|
||||||
|
cloudkitty-status upgrade check
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
``cloudkitty-status upgrade check``
|
||||||
|
Performs a release-specific readiness check before restarting services with
|
||||||
|
new code. This command expects to have complete configuration and access
|
||||||
|
to the database.
|
||||||
|
|
||||||
|
**Return Codes**
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:widths: 20 80
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Return code
|
||||||
|
- Description
|
||||||
|
* - 0
|
||||||
|
- All upgrade readiness checks passed successfully and there is nothing
|
||||||
|
to do.
|
||||||
|
* - 1
|
||||||
|
- At least one check encountered an issue and requires further
|
||||||
|
investigation. This is considered a warning but the upgrade may be OK.
|
||||||
|
* - 2
|
||||||
|
- There was an upgrade status check failure that needs to be
|
||||||
|
investigated. This should be considered something that stops an
|
||||||
|
upgrade.
|
||||||
|
* - 255
|
||||||
|
- An unexpected error occurred.
|
||||||
|
|
||||||
|
**History of Checks**
|
||||||
|
|
||||||
|
**9.0.0 (Stein)**
|
||||||
|
|
||||||
|
* Checks that the storage interface version is 2 (which is default).
|
10
doc/source/admin/cli/index.rst
Normal file
10
doc/source/admin/cli/index.rst
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Command-Line Interface Reference
|
||||||
|
================================
|
||||||
|
|
||||||
|
Information on the commands available through Cloudkitty's Command Line
|
||||||
|
Interface (CLI) can be found in this section.
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
cloudkitty-status
|
@@ -9,3 +9,4 @@ Administration Guide
|
|||||||
quick_deployment/index
|
quick_deployment/index
|
||||||
install/index
|
install/index
|
||||||
configuration/index
|
configuration/index
|
||||||
|
cli/index
|
||||||
|
@@ -21,6 +21,7 @@ oslo.messaging==5.24.2 # Apache-2.0
|
|||||||
oslo.middleware==3.27.0 # Apache-2.0
|
oslo.middleware==3.27.0 # Apache-2.0
|
||||||
oslo.policy==0.5.0 # Apache-2.0
|
oslo.policy==0.5.0 # Apache-2.0
|
||||||
oslo.utils==3.5.0 # Apache-2.0
|
oslo.utils==3.5.0 # Apache-2.0
|
||||||
|
oslo.upgradecheck==0.1.1 # Apache-2.0
|
||||||
SQLAlchemy==1.0.10 # MIT
|
SQLAlchemy==1.0.10 # MIT
|
||||||
six==1.9.0 # MIT
|
six==1.9.0 # MIT
|
||||||
stevedore==1.5.0 # Apache-2.0
|
stevedore==1.5.0 # Apache-2.0
|
||||||
|
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
A new ``cloudkitty-status upgrade check`` command has been added. It can be
|
||||||
|
used to validate a deployment before upgrading it from release N-1 to N.
|
@@ -23,6 +23,7 @@ oslo.messaging>=5.24.2,!=9.0.0 # Apache-2.0
|
|||||||
oslo.middleware>=3.27.0 # Apache-2.0
|
oslo.middleware>=3.27.0 # Apache-2.0
|
||||||
oslo.policy>=0.5.0 # Apache-2.0
|
oslo.policy>=0.5.0 # Apache-2.0
|
||||||
oslo.utils>=3.5.0 # Apache-2.0
|
oslo.utils>=3.5.0 # Apache-2.0
|
||||||
|
oslo.upgradecheck>=0.1.1 # Apache-2.0
|
||||||
SQLAlchemy>=1.0.10,!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8 # MIT
|
SQLAlchemy>=1.0.10,!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8 # MIT
|
||||||
six>=1.9.0 # MIT
|
six>=1.9.0 # MIT
|
||||||
stevedore>=1.5.0 # Apache-2.0
|
stevedore>=1.5.0 # Apache-2.0
|
||||||
|
@@ -28,6 +28,7 @@ console_scripts =
|
|||||||
cloudkitty-processor = cloudkitty.cli.processor:main
|
cloudkitty-processor = cloudkitty.cli.processor:main
|
||||||
cloudkitty-storage-init = cloudkitty.cli.storage:main
|
cloudkitty-storage-init = cloudkitty.cli.storage:main
|
||||||
cloudkitty-writer = cloudkitty.cli.writer:main
|
cloudkitty-writer = cloudkitty.cli.writer:main
|
||||||
|
cloudkitty-status = cloudkitty.cli.status:main
|
||||||
|
|
||||||
wsgi_scripts =
|
wsgi_scripts =
|
||||||
cloudkitty-api = cloudkitty.api.app:build_wsgi_app
|
cloudkitty-api = cloudkitty.api.app:build_wsgi_app
|
||||||
|
Reference in New Issue
Block a user