Browse Source
This adds basic framework for tricircle-status upgrade check commands. For now it has only "check_placeholder" check implemented. Real checks can be added to this tool in the future. Story: 2003657 Task: 26160 Change-Id: I33c5cb6b89852749f4c1915ed70315d502774b64changes/70/615470/3
8 changed files with 187 additions and 0 deletions
@ -0,0 +1,78 @@
|
||||
================ |
||||
tricircle-status |
||||
================ |
||||
|
||||
Synopsis |
||||
======== |
||||
|
||||
:: |
||||
|
||||
tricircle-status <category> <command> [<args>] |
||||
|
||||
Description |
||||
=========== |
||||
|
||||
:program:`tricircle-status` is a tool that provides routines for checking the |
||||
status of a Tricircle deployment. |
||||
|
||||
Options |
||||
======= |
||||
|
||||
The standard pattern for executing a :program:`tricircle-status` command is:: |
||||
|
||||
tricircle-status <category> <command> [<args>] |
||||
|
||||
Run without arguments to see a list of available command categories:: |
||||
|
||||
tricircle-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:: |
||||
|
||||
tricircle-status upgrade |
||||
|
||||
These sections describe the available categories and arguments for |
||||
:program:`tricircle-status`. |
||||
|
||||
Upgrade |
||||
~~~~~~~ |
||||
|
||||
.. _tricircle-status-checks: |
||||
|
||||
``tricircle-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 databases and services. |
||||
|
||||
**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** |
||||
|
||||
**6.0.0 (Stein)** |
||||
|
||||
* Placeholder to be filled in with checks as they are added in Stein. |
@ -0,0 +1,13 @@
|
||||
--- |
||||
prelude: > |
||||
Added new tool ``tricircle-status upgrade check``. |
||||
features: |
||||
- | |
||||
New framework for ``tricircle-status upgrade check`` command is added. |
||||
This framework allows adding various checks which can be run before a |
||||
Tricircle upgrade to ensure if the upgrade can be performed safely. |
||||
upgrade: |
||||
- | |
||||
Operator can now use new CLI tool ``tricircle-status upgrade check`` |
||||
to check if Tricircle deployment can be safely upgraded from |
||||
N-1 to N release. |
@ -0,0 +1,54 @@
|
||||
# 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_config import cfg |
||||
from oslo_upgradecheck import upgradecheck |
||||
|
||||
from tricircle.common.i18n import _ |
||||
|
||||
|
||||
class Checks(upgradecheck.UpgradeCommands): |
||||
|
||||
"""Upgrade checks for the tricircle-status upgrade check command |
||||
|
||||
Upgrade checks should be added as separate methods in this class |
||||
and added to _upgrade_checks tuple. |
||||
""" |
||||
|
||||
def _check_placeholder(self): |
||||
# This is just a placeholder for upgrade checks, it should be |
||||
# removed when the actual checks are added |
||||
return upgradecheck.Result(upgradecheck.Code.SUCCESS) |
||||
|
||||
# The format of the check functions is to return an |
||||
# oslo_upgradecheck.upgradecheck.Result |
||||
# object with the appropriate |
||||
# oslo_upgradecheck.upgradecheck.Code and details set. |
||||
# If the check hits warnings or failures then those should be stored |
||||
# in the returned Result's "details" attribute. The |
||||
# summary will be rolled up at the end of the check() method. |
||||
_upgrade_checks = ( |
||||
# In the future there should be some real checks added here |
||||
(_('Placeholder'), _check_placeholder), |
||||
) |
||||
|
||||
|
||||
def main(): |
||||
return upgradecheck.main( |
||||
cfg.CONF, project='tricircle', upgrade_command=Checks()) |
||||
|
||||
if __name__ == '__main__': |
||||
sys.exit(main()) |
@ -0,0 +1,31 @@
|
||||
# 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 unittest |
||||
|
||||
from oslo_upgradecheck.upgradecheck import Code |
||||
|
||||
from tricircle.cmd import status |
||||
|
||||
|
||||
class TestUpgradeChecks(unittest.TestCase): |
||||
|
||||
def setUp(self): |
||||
super(TestUpgradeChecks, self).setUp() |
||||
self.cmd = status.Checks() |
||||
|
||||
def test__check_placeholder(self): |
||||
check_result = self.cmd._check_placeholder() |
||||
self.assertEqual( |
||||
Code.SUCCESS, check_result.code) |
Loading…
Reference in new issue