Browse Source
This commit adds the functionality of magnum-status CLI for performing upgrade checks as part of the Stein cycle upgrade-checkers goal. It only includes a sample check which must be replaced by real checks in future. Change-Id: Ia8a74fd8bd5a804e71bb04eb0615fa114a517bc4 Story: 2003657 Task: 26138changes/05/611505/7
9 changed files with 205 additions and 0 deletions
@ -0,0 +1,10 @@
|
||||
Magnum CLI Documentation |
||||
======================== |
||||
|
||||
In this section you will find information on Magnum’s command line |
||||
interface. |
||||
|
||||
.. toctree:: |
||||
:maxdepth: 1 |
||||
|
||||
magnum-status |
@ -0,0 +1,95 @@
|
||||
============= |
||||
magnum-status |
||||
============= |
||||
|
||||
---------------------------------------- |
||||
CLI interface for Magnum status commands |
||||
---------------------------------------- |
||||
|
||||
Synopsis |
||||
======== |
||||
|
||||
:: |
||||
|
||||
magnum-status <category> <command> [<args>] |
||||
|
||||
Description |
||||
=========== |
||||
|
||||
:program:`magnum-status` is a tool that provides routines for checking the |
||||
status of a Magnum deployment. |
||||
|
||||
Options |
||||
======= |
||||
|
||||
The standard pattern for executing a :program:`magnum-status` command is:: |
||||
|
||||
magnum-status <category> <command> [<args>] |
||||
|
||||
Run without arguments to see a list of available command categories:: |
||||
|
||||
magnum-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:: |
||||
|
||||
magnum-status upgrade |
||||
|
||||
These sections describe the available categories and arguments for |
||||
:program:`magnum-status`. |
||||
|
||||
Upgrade |
||||
~~~~~~~ |
||||
|
||||
.. _magnum-status-checks: |
||||
|
||||
``magnum-status upgrade check`` |
||||
Performs a release-specific readiness check before restarting services with |
||||
new code. For example, missing or changed configuration options, |
||||
incompatible object states, or other conditions that could lead to |
||||
failures while upgrading. |
||||
|
||||
.. table:: **Sample Output** |
||||
|
||||
+------------------------+ |
||||
| Upgrade Check Results | |
||||
+========================+ |
||||
| Check: Sample Check | |
||||
| | |
||||
| Result: Success | |
||||
| | |
||||
| Details: Sample detail | |
||||
+------------------------+ |
||||
|
||||
**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** |
||||
|
||||
**8.0.0 (Stein)** |
||||
|
||||
* Sample check to be filled in with checks as they are added in Stein. |
@ -0,0 +1,53 @@
|
||||
# Copyright (c) 2018 NEC, Corp. |
||||
# |
||||
# 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_upgradecheck import upgradecheck |
||||
|
||||
import magnum.conf |
||||
from magnum.i18n import _ |
||||
|
||||
CONF = magnum.conf.CONF |
||||
|
||||
|
||||
class Checks(upgradecheck.UpgradeCommands): |
||||
|
||||
"""Contains upgrade checks |
||||
|
||||
Various upgrade checks should be added as separate methods in this class |
||||
and added to _upgrade_checks tuple. |
||||
""" |
||||
|
||||
def _sample_check(self): |
||||
"""This is sample check added to test the upgrade check framework |
||||
|
||||
It needs to be removed after adding any real upgrade check |
||||
""" |
||||
return upgradecheck.Result(upgradecheck.Code.SUCCESS, 'Sample detail') |
||||
|
||||
_upgrade_checks = ( |
||||
# Sample check added for now. |
||||
# Whereas in future real checks must be added here in tuple |
||||
(_('Sample Check'), _sample_check), |
||||
) |
||||
|
||||
|
||||
def main(): |
||||
return upgradecheck.main( |
||||
CONF, project='magnum', upgrade_command=Checks()) |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
sys.exit(main()) |
@ -0,0 +1,30 @@
|
||||
# Copyright (c) 2018 NEC, Corp. |
||||
# |
||||
# 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.upgradecheck import Code |
||||
|
||||
from magnum.cmd import status |
||||
from magnum.tests import base |
||||
|
||||
|
||||
class TestUpgradeChecks(base.TestCase): |
||||
|
||||
def setUp(self): |
||||
super(TestUpgradeChecks, self).setUp() |
||||
self.cmd = status.Checks() |
||||
|
||||
def test__sample_check(self): |
||||
check_result = self.cmd._sample_check() |
||||
self.assertEqual( |
||||
Code.SUCCESS, check_result.code) |
@ -0,0 +1,8 @@
|
||||
--- |
||||
prelude: > |
||||
Added new tool ``magnum-status upgrade check``. |
||||
features: |
||||
- | |
||||
New framework for ``magnum-status upgrade check`` command is added. |
||||
This framework allows adding various checks which can be run before a |
||||
Magnum upgrade to ensure if the upgrade can be performed safely. |
Loading…
Reference in new issue