def set_all_param_values(self, param_values): original_values = dict(self.parameter_values) processed = {} anything_changed = True while (len(processed) < len(self.parameters)) and anything_changed: anything_changed = False for parameter in self.parameters: if parameter.name in processed: continue required_parameters = parameter.get_required_parameters() if required_parameters and any(r not in processed for r in required_parameters): continue value = parameter.normalize_user_value(param_values.get(parameter.name)) validation_error = parameter.validate_value(value) if validation_error: self.parameter_values.set(original_values) raise InvalidValueException(parameter.name, validation_error) self.parameter_values[parameter.name] = value processed[parameter.name] = parameter anything_changed = True if not anything_changed: remaining = [p.name for p in self.parameters if p.name not in processed] self.parameter_values.set(original_values) raise Exception('Could not resolve order for dependencies. Remaining: ' + str(remaining)) for key, value in param_values.items(): if self.find_parameter(key) is None: LOGGER.warning('Incoming value for unknown parameter ' + key)
def list_files(self, path): if not self._is_recursive_server_file(): raise WrongParameterUsageException(self.name, 'Can list files only for recursive file parameters') validation_error = self._validate_recursive_path(path, intermediate=True) if validation_error: raise InvalidValueException(self.name, validation_error) full_path = self._build_list_file_path(path) result = [] if is_empty(self.file_type) or self.file_type == FILE_TYPE_FILE: files = model_helper.list_files(full_path, FILE_TYPE_FILE, self.file_extensions) for file in files: result.append({'name': file, 'type': FILE_TYPE_FILE, 'readable': True}) dirs = model_helper.list_files(full_path, FILE_TYPE_DIR) for dir in dirs: dir_path = os.path.join(full_path, dir) readable = os.access(dir_path, os.R_OK) result.append({'name': dir, 'type': FILE_TYPE_DIR, 'readable': readable}) return result
def set_all_param_values(self, param_values, skip_invalid_parameters=False): original_values = dict(self.parameter_values) processed = {} anything_changed = True def get_sort_key(parameter): if parameter.name in self._included_config_path.required_parameters: return len(parameter.get_required_parameters()) return 100 + len(parameter.get_required_parameters()) sorted_parameters = sorted(self.parameters, key=get_sort_key) while (len(processed) < len(self.parameters)) and anything_changed: anything_changed = False parameters = sorted_parameters + [ p for p in self.parameters if p not in sorted_parameters ] for parameter in parameters: if parameter.name in processed: continue required_parameters = parameter.get_required_parameters() if required_parameters and any(r not in processed for r in required_parameters): continue value = parameter.normalize_user_value( param_values.get(parameter.name)) validation_error = parameter.validate_value(value) if validation_error: if skip_invalid_parameters: logging.warning('Parameter ' + parameter.name + ' has invalid value, skipping') value = parameter.normalize_user_value(None) else: self.parameter_values.set(original_values) raise InvalidValueException(parameter.name, validation_error) self.parameter_values[parameter.name] = value processed[parameter.name] = parameter anything_changed = True if not anything_changed: remaining = [ p.name for p in self.parameters if p.name not in processed ] self.parameter_values.set(original_values) raise Exception( 'Could not resolve order for dependencies. Remaining: ' + str(remaining)) for key, value in param_values.items(): if self.find_parameter(key) is None: LOGGER.warning('Incoming value for unknown parameter ' + key)
def set_param_value(self, param_name, value): parameter = self.find_parameter(param_name) if parameter is None: LOGGER.warning('Parameter ' + param_name + ' does not exist in ' + self.name) return validation_error = parameter.validate_value(value, ignore_required=True) if validation_error is not None: self.parameter_values[param_name] = None raise InvalidValueException(param_name, validation_error) self.parameter_values[param_name] = value