Ejemplo n.º 1
0
    def __init__(self, minimum_quota, **kwargs):
        """Constructor.

    Args:
      minimum_quota [dict of number]: Dictionary of resource metric names
         and quota they require. The predicate will check that the available
         resource quota can accomodate the additional number in this dict.

      See base class (ValuePredicate) for additional kwargs.
    """
        self.__minimum_quota = dict(minimum_quota)
        self.__logger = logging.getLogger(__name__)
        self.__diff = FieldDifference('limit', 'usage')
        super(QuotaPredicate, self).__init__(**kwargs)
Ejemplo n.º 2
0
def make_quota_result(context, valid, source, require, metric):
  """Construct the values returned by QuotaPredicate.

  These are what is currently implemented, but the current implementation
  is not correct because it uses PathValue of made up paths rather than
  expressing that we are looking for the difference among two paths.
  """
  diff = FieldDifference('limit', 'usage')
  for value in source:
    if value['metric'] == metric:
      pred = PathPredicate('', pred=NUM_GE(require[metric]), transform=diff)
      return pred(context, value)

  raise ValueError('Missing metric')
Ejemplo n.º 3
0
 def test_field_difference_indirect(self):
     context = ExecutionContext()
     source = {'a': 7, 'b': 4}
     xform = FieldDifference(lambda x: 'b', lambda x: 'a')
     self.assertEqual(-3, xform(context, source))
Ejemplo n.º 4
0
 def test_field_difference(self):
     context = ExecutionContext()
     source = {'a': 7, 'b': 4}
     xform = FieldDifference('a', 'b')
     self.assertEqual(3, xform(context, source))
Ejemplo n.º 5
0
 def test_field_difference_eq(self):
     orig = FieldDifference('X', 'Y')
     same = FieldDifference('X', 'Y')
     diff = FieldDifference('Y', 'X')
     self.assertEqual(orig, same)
     self.assertNotEqual(orig, diff)