Getting Started

This section provides information on how to install and use juju-verify.

Requirements

Juju 2.8.10 or higher is required. More information about installing juju can be found juju_installing.

Charms revisions

The juju-verify tool works with this charm revisions:

  • to verify ceph-osd units: cs:ceph-osd and cs:ceph-mon

  • to verify ceph-mon units: cs:ceph-mon

  • to verify nova-compute units: cs:nova-compute

  • to verify neutron-gateway units: cs:neutron-gateway

Installing

juju-verify tool can be installed on various platforms via pip or snap. It is tested and supported on amd64 but should work on other platforms as well.

python package

The python package can be installed using pip:

pip install juju-verify

See also

More information can be found here pypi.org.

snap

The Snap package can be installed using the command:

snap install juju-verify

See also

More information can be found here snapcraft.

How to use

In this section, we will go through all CLI arguments, as well as the list of supported checks and charms. Several usage examples have been included.

Description of CLI

After successfully installing juju-verify, help instructions can be displayed using this command:

$ juju verify --help
usage: juju-verify [-h] [--model MODEL] [-l {trace,debug,info}] [-s]
                   [--map-charm MAP_CHARM]
                   (--units UNITS [UNITS ...] | --machines MACHINES [MACHINES ...])
                   {shutdown,reboot}

Verify that it's safe to perform selected action on specified units.
Currently supported charms are:
  * nova-compute
  * ceph-osd
  * ceph-mon
  * neutron-gateway

positional arguments:
  {shutdown,reboot}     Check to verify.

optional arguments:
  -h, --help            show this help message and exit
  --model MODEL, -m MODEL
                        Connect to specific model.
  -l {trace,debug,info}, --log-level {trace,debug,info}
                        Set amount of displayed information
  -s, --stop-on-failure
                        Stop running checks after a failed one.
  --map-charm MAP_CHARM
                        WARNING: This option can lead to failed verifications
                        when used incorrectly. This option allows users to
                        explicitly specify the charm used by an application.
                        Typical use cases involve the usage of local charms or
                        non-official charmhub repositories. Expected value
                        format is <APP_NAME>:<CHARM_NAME>. For list of
                        supported charms, see description in --help
  --units UNITS [UNITS ...], -u UNITS [UNITS ...]
                        Units to check.
  --machines MACHINES [MACHINES ...], -M MACHINES [MACHINES ...]
                        Check all units on the machine.

checks

There are currently only two supported checks

  • shutdown

  • reboot

which will provide the user with information about the safe removal of the units/machines.

charms

At the same time, both checks are implemented for the following charms:

  • neutron-gateway

  • nova-compute

  • ceph-osd

  • ceph-mon

See also

For more information about which checks are run for each charms visit: Verifier design and architecture.

units/machines

Multiple values can be passed to the --units and --machines arguments. There are two ways of using them:

juju-verify reboot --units ceph-osd/0 ceph-osd/1
# or
juju-verify reboot --units ceph-osd/0 --units ceph-osd/1

Stop on failure

There is an option to stop running checks after a first failed one.

Find below the difference in behavior when the flag is used.

Without --stop-on-failure

$ juju-verify reboot -u ceph-osd/0 ceph-osd/1
===[ceph-osd/0, ceph-osd/1]===
Checks:
[OK] ceph-mon/2: Ceph cluster is healthy
[FAIL] The minimum number of replicas in 'ceph-osd' is 1 and it's not safe to reboot/shutdown 2 units. 0 units are not active.
[FAIL] It's not safe to reboot/shutdown units ceph-osd/0, ceph-osd/1 in the availability zone '10-default(-1),1-juju-1234-ceph-0(-2),1-juju-1234-ceph-1(-3),1-juju-1234-ceph-2(-3),0-osd.1(1),0-osd.0(2),0-osd.2(3)'.

Result: Failed

With --stop-on-failure

$ juju-verify reboot --stop-on-failure -u ceph-osd/0 ceph-osd/1
===[ceph-osd/0, ceph-osd/1]===
Checks:
[OK] ceph-mon/2: Ceph cluster is healthy
[FAIL] The minimum number of replicas in 'ceph-osd' is 1 and it's not safe to reboot/shutdown 2 units. 0 units are not active.

Result: Failed

Charm mapping

This option enables the user to explicitly tell juju-verify which charm a specific application deploys.

By default, juju-verify parses URL from which the charm was deployed to identify the charm. However this may fail if charm was deployed from local source or from non-official charmstore repository. In such cases, this option can be used to specify which charm is an application deploying.

For example, if the ceph-osd charm uses a local path to deploy the ceph-osd-ssd application, the following command could be used to verify units of the mentioned application:

$ juju-verify reboot --unit ceph-osd-ssd/0 --map-charm ceph-osd-ssd:ceph-osd

The charm name specified via this option must be one of the charms supported by juju-verify. To get list of supported charms that can be mapped to applications, see description in --help output.

$ juju-verify --help

This option can be repeated multiple times if there’s a need to specify mappings of multiple application.

Usage examples

ceph-osd units verification

The following example consists of 3 ceph-osd units and 3 ceph-mon units. The Ceph cluster replication factor across all pools is 3 (size=3, min_size=2). This means that the cluster will be degraded when less than 3 copies of a PG exist, and it will stop accepting R/W when less than 2 copies of a PG exist.

Let’s see what juju-verify tells us to reboot one ceph-osd unit.

$ juju-verify reboot -u ceph-osd/0
===[ceph-osd/0]===
Checks:
[OK] ceph-mon/2: Ceph cluster is healthy
[OK] Minimum replica number check passed.
[OK] Availability zone check passed.

Result: OK (All checks passed)

However, if we try to reboot two units instead of one, the check should fail. This is because when two units are removed, only one will remain and at least two are needed.

$ juju-verify reboot -u ceph-osd/0 ceph-osd/1
===[ceph-osd/0, ceph-osd/1]===
Checks:
[OK] ceph-mon/2: Ceph cluster is healthy
[FAIL] The minimum number of replicas in 'ceph-osd' is 1 and it's not safe to reboot/shutdown 2 units. 0 units are not active.
[FAIL] It's not safe to reboot/shutdown units ceph-osd/0, ceph-osd/1 in the availability zone '10-default(-1),1-juju-1234-ceph-0(-2),1-juju-1234-ceph-1(-3),1-juju-1234-ceph-2(-3),0-osd.1(1),0-osd.0(2),0-osd.2(3)'.

Result: Failed