brian wickman created AURORA-254:
------------------------------------

             Summary: add a pluggable configuration validation mechanism
                 Key: AURORA-254
                 URL: https://issues.apache.org/jira/browse/AURORA-254
             Project: Aurora
          Issue Type: Task
          Components: Client
            Reporter: brian wickman
            Priority: Minor


In the past we've gone through deprecation cycles that match patterns on 
configs and flag warnings to the users.  We should generalize this pattern so 
that we can register validators to be applied to configs after parsing.  E.g.

{noformat}

class AuroraConfig(object):
  @classmethod
  def register_validator(cls, matcher, action):
    cls.VALIDATORS.append((matcher, action))

...snip snip ... in parse_config or whatever...

  for (matcher, action) in self.VALIDATORS.items():
    if matcher(self.job):
      action()
{noformat}

This way we can inject things at runtime like

{noformat}
def isupper_matcher(job):
  return any(ch.isupper() for ch in str(job.user()))

def isupper_action(job):
  die('Silly rabbit, no users have upper-case characters!  Got: %s' % 
job.user())

AuroraConfig.register_validator(isupper_matcher, isupper_action)
{noformat}




--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to