import argparse
from collections import namedtuple
import json
-import math
import logging
from textwrap import dedent
from ceph_volume import terminal, decorators
' 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
)
import argparse
import os
+import math
from ceph_volume import terminal
from ceph_volume import decorators
from ceph_volume.util import disk
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