update(userspace/engine): let the rule loader reader and collector be able to load rules with both numeric and semver string required_engine_version

Signed-off-by: Lorenzo Susini <susinilorenzo1@gmail.com>
This commit is contained in:
Lorenzo Susini
2023-09-26 10:22:36 +00:00
committed by poiana
parent cd6cb14c08
commit f8cbeaaa9b
4 changed files with 32 additions and 9 deletions

View File

@@ -145,11 +145,19 @@ const indexed_vector<rule_loader::rule_info>& rule_loader::collector::rules() co
void rule_loader::collector::define(configuration& cfg, engine_version_info& info)
{
auto v = falco_engine::engine_version();
THROW(v < info.version, "Rules require engine version "
+ std::to_string(info.version) + ", but engine version is " + std::to_string(v),
info.ctx);
if(m_required_engine_version.version < info.version)
auto engine_version = sinsp_version(falco_engine::engine_version());
sinsp_version required_engine_version(info.version);
THROW(!required_engine_version.m_valid, "Unable to parse " + info.version
+ " as a semver string. Expected \"x.y.z\" semver format.", info.ctx);
THROW(!engine_version.check(required_engine_version), "Rules require engine version "
+ required_engine_version.as_string() + " but engine version is "
+ engine_version.as_string(), info.ctx);
sinsp_version current_required_engine_version(m_required_engine_version.version);
// Store max required_engine_version
if(current_required_engine_version.check(required_engine_version))
{
m_required_engine_version = info;
}