From: Jonas Pfefferle Date: Thu, 3 Jun 2021 07:44:16 +0000 (+0200) Subject: ceph-volume: data_allocate_fraction: new validation class X-Git-Tag: v17.1.0~1723^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=287ab0e04980acff2edff3d142bd96a9f8ebb0d0;p=ceph.git ceph-volume: data_allocate_fraction: new validation class Move validator for data_allocate_fraction to utils.arg_validators Signed-off-by: Jonas Pfefferle --- diff --git a/src/ceph-volume/ceph_volume/devices/lvm/batch.py b/src/ceph-volume/ceph_volume/devices/lvm/batch.py index 94ab26888ea6..d953b1ac599b 100644 --- a/src/ceph-volume/ceph_volume/devices/lvm/batch.py +++ b/src/ceph-volume/ceph_volume/devices/lvm/batch.py @@ -1,7 +1,6 @@ import argparse from collections import namedtuple import json -import math import logging from textwrap import dedent from ceph_volume import terminal, decorators @@ -270,14 +269,9 @@ class Batch(object): ' if more slots then osds-per-device are specified, slots' 'will stay unoccupied'), ) - def data_allocate_fraction(pct): - pct_float = float(pct) - if math.isnan(pct_float) or pct_float == 0.0 or pct_float < 0.0 or pct_float > 1.0: - raise argparse.ArgumentTypeError('Percentage not in (0,1.0]') - return pct_float parser.add_argument( '--data-allocate-fraction', - type=data_allocate_fraction, + type=arg_validators.ValidFraction(), help='Fraction to allocate from data device (0,1.0]', default=1.0 ) diff --git a/src/ceph-volume/ceph_volume/util/arg_validators.py b/src/ceph-volume/ceph_volume/util/arg_validators.py index 94cb4f691dbe..e04e2018834e 100644 --- a/src/ceph-volume/ceph_volume/util/arg_validators.py +++ b/src/ceph-volume/ceph_volume/util/arg_validators.py @@ -1,5 +1,6 @@ import argparse import os +import math from ceph_volume import terminal from ceph_volume import decorators from ceph_volume.util import disk @@ -148,3 +149,14 @@ def exclude_group_options(parser, groups, argv=None): terminal.warning(msg) last_group = group_name last_flag = flag + +class ValidFraction(object): + """ + Validate fraction is in (0, 1.0] + """ + + def __call__(self, fraction): + fraction_float = float(fraction) + if math.isnan(fraction_float) or fraction_float <= 0.0 or fraction_float > 1.0: + raise argparse.ArgumentTypeError('Fraction not in (0,1.0]') + return fraction_float