class ValidateCleanupAction(Validator): config_class = ConfigCleanupAction defaults = { 'node': None, 'name': CLEANUP_ACTION_NAME, 'retries': None, 'retries_delay': None, 'expected_runtime': datetime.timedelta(hours=24), 'executor': schema.ExecutorTypes.ssh, 'cpus': None, 'mem': None, 'constraints': None, 'docker_image': None, 'docker_parameters': None, 'env': None, 'extra_volumes': None, 'trigger_downstreams': None, 'triggered_by': None, 'on_upstream_rerun': None, } validators = { 'name': valid_cleanup_action_name, 'command': build_format_string_validator(action_context), 'node': valid_node_name, 'retries': valid_int, 'retries_delay': config_utils.valid_time_delta, 'expected_runtime': config_utils.valid_time_delta, 'executor': config_utils.build_enum_validator(schema.ExecutorTypes), 'cpus': valid_float, 'mem': valid_float, 'constraints': build_list_of_type_validator(valid_constraint, allow_empty=True), 'docker_image': valid_string, 'docker_parameters': build_list_of_type_validator(valid_docker_parameter, allow_empty=True), 'env': valid_dict, 'extra_volumes': build_list_of_type_validator(valid_volume, allow_empty=True), 'trigger_downstreams': valid_trigger_downstreams, 'triggered_by': build_list_of_type_validator(valid_string, allow_empty=True), 'on_upstream_rerun': config_utils.build_enum_validator(schema.ActionOnRerun), } def post_validation(self, action, config_context): valid_mesos_action(action, config_context)
class ValidateVolume(Validator): config_class = ConfigVolume validators = { 'container_path': valid_string, 'host_path': valid_string, 'mode': config_utils.build_enum_validator(['RO', 'RW']), }
class ValidateConstraint(Validator): config_class = ConfigConstraint validators = { 'attribute': valid_string, 'operator': config_utils.build_enum_validator(OPERATORS.keys()), 'value': valid_string, }
class ScheduleValidator(config_utils.Validator): """Validate the structure of a scheduler config.""" config_class = ConfigGenericSchedule defaults = { 'jitter': datetime.timedelta() } validators = { 'type': config_utils.build_enum_validator(schedulers.keys()), 'jitter': config_utils.valid_time_delta }
class ValidateActionRunner(Validator): config_class = schema.ConfigActionRunner optional = True defaults = { 'runner_type': None, 'remote_exec_path': '', 'remote_status_path': '/tmp', } validators = { 'runner_type': config_utils.build_enum_validator(schema.ActionRunnerTypes, ), 'remote_status_path': valid_string, 'remote_exec_path': valid_string, }
class ValidateStatePersistence(Validator): config_class = schema.ConfigState defaults = { 'buffer_size': 1, 'connection_details': None, } validators = { 'name': valid_string, 'store_type': config_utils.build_enum_validator( schema.StatePersistenceTypes), 'connection_details': valid_string, 'buffer_size': valid_int, } def post_validation(self, config, config_context): buffer_size = config.get('buffer_size') if buffer_size and buffer_size < 1: path = config_context.path raise ConfigError("%s buffer_size must be >= 1." % path)
def setup_enum_validator(self): self.enum = dict(a=1, b=2) self.validator = config_utils.build_enum_validator(self.enum) self.context = config_utils.NullConfigContext