]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: data_allocate_fraction: new validation class
authorJonas Pfefferle <pepperjo@japf.ch>
Thu, 3 Jun 2021 07:44:16 +0000 (09:44 +0200)
committerAdam King <adking@redhat.com>
Thu, 21 Sep 2023 13:07:48 +0000 (09:07 -0400)
Move validator for data_allocate_fraction to utils.arg_validators

Signed-off-by: Jonas Pfefferle <pepperjo@japf.ch>
(cherry picked from commit 287ab0e04980acff2edff3d142bd96a9f8ebb0d0)

Conflicts:
src/ceph-volume/ceph_volume/util/arg_validators.py

src/ceph-volume/ceph_volume/devices/lvm/batch.py
src/ceph-volume/ceph_volume/util/arg_validators.py

index 44e0fc73c99b84909cdf4578df64f047518fe450..d867fe2d87e3bb33c30bbce277433095449d80f1 100644 (file)
@@ -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
         )
index 270c8a64879b664ec4ab95ca14b6d9e82a30db52..ae62ace256f3e6e98a932f2fb19f396e0d076aca 100644 (file)
@@ -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