Beispiel #1
0
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)
Beispiel #2
0
class ValidateMesos(Validator):
    config_class = ConfigMesos
    option = True
    defaults = {
        'master_address': None,
        'master_port': 5050,
        'secret_file': None,
        'role': '*',
        'principal': 'tron',
        'enabled': False,
        'default_volumes': (),
        'dockercfg_location': None,
        'offer_timeout': 300,
    }

    validators = {
        'master_address':
        valid_master_address,
        'master_port':
        valid_int,
        'secret':
        valid_string,
        'role':
        valid_string,
        'enabled':
        valid_bool,
        'default_volumes':
        build_list_of_type_validator(valid_volume, allow_empty=True),
        'dockercfg_location':
        valid_string,
        'offer_timeout':
        valid_int,
    }
Beispiel #3
0
class ValidateSSHOptions(Validator):
    """Validate SSH options."""
    config_class =                  ConfigSSHOptions
    optional =                      True
    defaults = {
        'agent':                    False,
        'identities':               (),
        'known_hosts_file':         None,
        'connect_timeout':          30,
        'idle_connection_timeout':  3600,
        'jitter_min_load':          4,
        'jitter_max_delay':         20,
        'jitter_load_factor':       1,
    }

    validators = {
        'agent':                    valid_bool,
        'identities':               build_list_of_type_validator(
                                        valid_identity_file, allow_empty=True),
        'known_hosts_file':         valid_known_hosts_file,
        'connect_timeout':          config_utils.valid_int,
        'idle_connection_timeout':  config_utils.valid_int,
        'jitter_min_load':          config_utils.valid_int,
        'jitter_max_delay':         config_utils.valid_int,
        'jitter_load_factor':       config_utils.valid_int,
    }

    def post_validation(self, valid_input, config_context):
        if config_context.partial:
            return

        if valid_input['agent'] and 'SSH_AUTH_SOCK' not in os.environ:
            raise ConfigError("No SSH Agent available ($SSH_AUTH_SOCK)")
Beispiel #4
0
class ValidateNodePool(Validator):
    config_class = schema.ConfigNodePool
    validators = {
        'name': valid_identifier,
        'nodes': build_list_of_type_validator(valid_identifier),
    }

    def cast(self, node_pool, _context):
        if isinstance(node_pool, list):
            node_pool = dict(nodes=node_pool)
        return node_pool

    def set_defaults(self, node_pool, _):
        node_pool.setdefault('name', '_'.join(node_pool['nodes']))
Beispiel #5
0
class ValidateAction(Validator):
    """Validate an action."""
    config_class =              ConfigAction

    defaults = {
        'node':                 None,
        'requires':             (),
    }
    requires = build_list_of_type_validator(valid_action_name, allow_empty=True)
    validators = {
        'name':                 valid_action_name,
        'command':              build_format_string_validator(action_context),
        'node':                 valid_node_name,
        'requires':             requires,
    }
Beispiel #6
0
 def setup_validator(self):
     self.item_validator = mock.Mock()
     self.validator = build_list_of_type_validator(self.item_validator)
Beispiel #7
0
 def setup_validator(self):
     self.item_validator = mock.Mock()
     self.validator = build_list_of_type_validator(self.item_validator)