From f8d641c508fd4faa19eee8eb12eafc810610e001 Mon Sep 17 00:00:00 2001 From: Jonas Pfefferle Date: Thu, 3 Jun 2021 09:44:16 +0200 Subject: [PATCH] ceph-volume: data_allocate_fraction: new validation class Move validator for data_allocate_fraction to utils.arg_validators Signed-off-by: Jonas Pfefferle (cherry picked from commit 287ab0e04980acff2edff3d142bd96a9f8ebb0d0) Conflicts: src/ceph-volume/ceph_volume/util/arg_validators.py --- src/ceph-volume/ceph_volume/devices/lvm/batch.py | 8 +------- src/ceph-volume/ceph_volume/util/arg_validators.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/ceph-volume/ceph_volume/devices/lvm/batch.py b/src/ceph-volume/ceph_volume/devices/lvm/batch.py index 44e0fc73c99..d867fe2d87e 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 @@ -298,14 +297,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 270c8a64879..ae62ace256f 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, decorators, process from ceph_volume.util.device import Device from ceph_volume.util import disk @@ -220,3 +221,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 -- 2.47.3