diff --git a/doc/source/cli/glancestatus.rst b/doc/source/cli/glancestatus.rst new file mode 100644 index 0000000000..6aa5e87c46 --- /dev/null +++ b/doc/source/cli/glancestatus.rst @@ -0,0 +1,95 @@ +============= +glance-status +============= + +--------------------- +Glance Status Utility +--------------------- + +.. include:: header.txt + +SYNOPSIS +======== + +:: + + glance-status [options] + +DESCRIPTION +=========== + +``glance-status`` is a command line utility to aid operators in upgrading +glance by running programmable checks for things that might prevent upgrades. + +COMMANDS +======== + +``upgrade`` + This is the prefix for checking the glance deployment for any upgrade + issues that might prevent glance from upgrading. + +You can also run with a category argument such as ``upgrade`` to see a list of +all commands in that category:: + + glance-status upgrade + +These sections describe the available categories and arguments for +:command:`glance-status`. + +Categories and commands +----------------------- + +``glance-status upgrade check`` + Performs a release-specific readiness check before restarting services with + new code, or upgrading. 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** + + **18.0.0 (Stein)** + + * Placeholder to be filled in with checks as they are added in Stein. + +OPTIONS +======= + +**General Options** + +``-h, --help`` + show this help message and exit + +``--config-dir DIR`` + Path to a config directory to pull `*.conf` files from. + This file set is sorted, so as to provide a predictable + parse order if individual options are over-ridden. The + set is parsed after the file(s) specified via previous + --config-file, arguments hence over-ridden options in + the directory take precedence. + +``--config-file PATH`` + Path to a config file to use. Multiple config files can + be specified, with values in later files taking + precedence. Defaults to None. + +.. include:: footer.txt diff --git a/glance/cmd/status.py b/glance/cmd/status.py new file mode 100644 index 0000000000..c2b03d5e3d --- /dev/null +++ b/glance/cmd/status.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python + +# 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_config import cfg +from oslo_upgradecheck import upgradecheck + +CONF = cfg.CONF + + +class Checks(upgradecheck.UpgradeCommands): + """Programmable upgrade checks.""" + + pass + + +def main(): + return upgradecheck.main(CONF, 'glance', Checks()) diff --git a/lower-constraints.txt b/lower-constraints.txt index 252b4e3544..6beaebec40 100644 --- a/lower-constraints.txt +++ b/lower-constraints.txt @@ -73,6 +73,7 @@ oslo.middleware==3.31.0 oslo.policy==1.30.0 oslo.serialization==2.25.0 oslo.service==1.30.0 +oslo.upgradecheck==0.1.0 oslo.utils==3.33.0 oslotest==3.2.0 osprofiler==1.4.0 diff --git a/releasenotes/notes/bp-upgrade-checks-b3272c3ddb4e8cf7.yaml b/releasenotes/notes/bp-upgrade-checks-b3272c3ddb4e8cf7.yaml new file mode 100644 index 0000000000..241eec422b --- /dev/null +++ b/releasenotes/notes/bp-upgrade-checks-b3272c3ddb4e8cf7.yaml @@ -0,0 +1,9 @@ +--- +features: + - | + [`Community Goal `_] + Support has been added for developers to write pre-upgrade checks. + Operators can run these checks using ``glance-status upgrade check``. + This allows operators to be more confident when upgrading their deployments + by having a tool that automates programmable checks against the deployment + configuration or dataset. diff --git a/requirements.txt b/requirements.txt index 5e49adacf9..407a00b193 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,6 +18,7 @@ httplib2>=0.9.1 # MIT oslo.config>=5.2.0 # Apache-2.0 oslo.concurrency>=3.26.0 # Apache-2.0 oslo.context>=2.19.2 # Apache-2.0 +oslo.upgradecheck>=0.1.0 # Apache-2.0 oslo.utils>=3.33.0 # Apache-2.0 stevedore>=1.20.0 # Apache-2.0 futurist>=1.2.0 # Apache-2.0 diff --git a/setup.cfg b/setup.cfg index 653fc31e7d..a8d07bc6f0 100644 --- a/setup.cfg +++ b/setup.cfg @@ -43,6 +43,7 @@ console_scripts = glance-registry = glance.cmd.registry:main glance-replicator = glance.cmd.replicator:main glance-scrubber = glance.cmd.scrubber:main + glance-status = glance.cmd.status:main wsgi_scripts = glance-wsgi-api = glance.common.wsgi_app:init_app glance.common.image_location_strategy.modules =