mirror of https://github.com/Icinga/icinga2.git
Change DB IDO 'categories' attribute to Array notation
Example: categories = [ "DbCatProgramStatus", "DbCatState" ] The old method with constants and OR is still supported but deprecated. refs #11445 fixes #12024
This commit is contained in:
parent
14fdb794e2
commit
091274e417
|
@ -722,7 +722,7 @@ Configuration Attributes:
|
||||||
enable_ha |**Optional.** Enable the high availability functionality. Only valid in a [cluster setup](13-distributed-monitoring-ha.md#high-availability-db-ido). Defaults to "true".
|
enable_ha |**Optional.** Enable the high availability functionality. Only valid in a [cluster setup](13-distributed-monitoring-ha.md#high-availability-db-ido). Defaults to "true".
|
||||||
failover_timeout | **Optional.** Set the failover timeout in a [HA cluster](13-distributed-monitoring-ha.md#high-availability-db-ido). Must not be lower than 60s. Defaults to "60s".
|
failover_timeout | **Optional.** Set the failover timeout in a [HA cluster](13-distributed-monitoring-ha.md#high-availability-db-ido). Must not be lower than 60s. Defaults to "60s".
|
||||||
cleanup |**Optional.** Dictionary with items for historical table cleanup.
|
cleanup |**Optional.** Dictionary with items for historical table cleanup.
|
||||||
categories |**Optional.** The types of information that should be written to the database.
|
categories |**Optional.** Array of information types that should be written to the database.
|
||||||
|
|
||||||
Cleanup Items:
|
Cleanup Items:
|
||||||
|
|
||||||
|
@ -763,9 +763,14 @@ Data Categories:
|
||||||
DbCatRetention | Retention data | Icinga Web 2
|
DbCatRetention | Retention data | Icinga Web 2
|
||||||
DbCatStateHistory | Historical state data | Icinga Web 2
|
DbCatStateHistory | Historical state data | Icinga Web 2
|
||||||
|
|
||||||
Multiple categories can be combined using the `|` operator. In addition to
|
In addition to the category flags listed above the `DbCatEverything`
|
||||||
the category flags listed above the `DbCatEverything` flag may be used as
|
flag may be used as a shortcut for listing all flags.
|
||||||
a shortcut for listing all flags.
|
|
||||||
|
> **Note**
|
||||||
|
>
|
||||||
|
> The previous way of defining the `categories` attribute e.g.
|
||||||
|
> `DbCatProgramStatus | DbCatState` was deprecated in 2.5 and will
|
||||||
|
> be removed in future versions.
|
||||||
|
|
||||||
External interfaces like Icinga Web 2 require everything except `DbCatCheck`
|
External interfaces like Icinga Web 2 require everything except `DbCatCheck`
|
||||||
which is the default value if `categories` is not set.
|
which is the default value if `categories` is not set.
|
||||||
|
@ -806,7 +811,7 @@ Configuration Attributes:
|
||||||
enable_ha |**Optional.** Enable the high availability functionality. Only valid in a [cluster setup](13-distributed-monitoring-ha.md#high-availability-db-ido). Defaults to "true".
|
enable_ha |**Optional.** Enable the high availability functionality. Only valid in a [cluster setup](13-distributed-monitoring-ha.md#high-availability-db-ido). Defaults to "true".
|
||||||
failover_timeout | **Optional.** Set the failover timeout in a [HA cluster](13-distributed-monitoring-ha.md#high-availability-db-ido). Must not be lower than 60s. Defaults to "60s".
|
failover_timeout | **Optional.** Set the failover timeout in a [HA cluster](13-distributed-monitoring-ha.md#high-availability-db-ido). Must not be lower than 60s. Defaults to "60s".
|
||||||
cleanup |**Optional.** Dictionary with items for historical table cleanup.
|
cleanup |**Optional.** Dictionary with items for historical table cleanup.
|
||||||
categories |**Optional.** The types of information that should be written to the database.
|
categories |**Optional.** Array of information types that should be written to the database.
|
||||||
|
|
||||||
Cleanup Items:
|
Cleanup Items:
|
||||||
|
|
||||||
|
@ -847,9 +852,14 @@ Data Categories:
|
||||||
DbCatRetention | Retention data | Icinga Web 2
|
DbCatRetention | Retention data | Icinga Web 2
|
||||||
DbCatStateHistory | Historical state data | Icinga Web 2
|
DbCatStateHistory | Historical state data | Icinga Web 2
|
||||||
|
|
||||||
Multiple categories can be combined using the `|` operator. In addition to
|
In addition to the category flags listed above the `DbCatEverything`
|
||||||
the category flags listed above the `DbCatEverything` flag may be used as
|
flag may be used as a shortcut for listing all flags.
|
||||||
a shortcut for listing all flags.
|
|
||||||
|
> **Note**
|
||||||
|
>
|
||||||
|
> The previous way of defining the `categories` attribute e.g.
|
||||||
|
> `DbCatProgramStatus | DbCatState` was deprecated in 2.5 and will
|
||||||
|
> be removed in future versions.
|
||||||
|
|
||||||
External interfaces like Icinga Web 2 require everything except `DbCatCheck`
|
External interfaces like Icinga Web 2 require everything except `DbCatCheck`
|
||||||
which is the default value if `categories` is not set.
|
which is the default value if `categories` is not set.
|
||||||
|
|
|
@ -46,6 +46,14 @@ void DbConnection::OnConfigLoaded(void)
|
||||||
{
|
{
|
||||||
ConfigObject::OnConfigLoaded();
|
ConfigObject::OnConfigLoaded();
|
||||||
|
|
||||||
|
Value categories = GetCategories();
|
||||||
|
|
||||||
|
//TODO: Remove 'cat1 | cat2' notation in 2.6
|
||||||
|
if (categories.IsNumber())
|
||||||
|
SetCategoryFilter(categories);
|
||||||
|
else
|
||||||
|
SetCategoryFilter(FilterArrayToInt(categories, DbQuery::GetCategoryFilterMap(), DbCatEverything));
|
||||||
|
|
||||||
if (!GetEnableHa()) {
|
if (!GetEnableHa()) {
|
||||||
Log(LogDebug, "DbConnection")
|
Log(LogDebug, "DbConnection")
|
||||||
<< "HA functionality disabled. Won't pause IDO connection: " << GetName();
|
<< "HA functionality disabled. Won't pause IDO connection: " << GetName();
|
||||||
|
|
|
@ -35,13 +35,27 @@ abstract class DbConnection : ConfigObject
|
||||||
default {{{ return new Dictionary(); }}}
|
default {{{ return new Dictionary(); }}}
|
||||||
};
|
};
|
||||||
|
|
||||||
[config] int categories {
|
[config] Value categories {
|
||||||
default {{{
|
default {{{
|
||||||
return DbCatConfig | DbCatState | DbCatAcknowledgement |
|
Array::Ptr cat = new Array();
|
||||||
DbCatComment | DbCatDowntime | DbCatEventHandler | DbCatExternalCommand | DbCatFlapping |
|
cat->Add("DbCatConfig");
|
||||||
DbCatLog | DbCatNotification | DbCatProgramStatus | DbCatRetention | DbCatStateHistory;
|
cat->Add("DbCatState");
|
||||||
|
cat->Add("DbCatAcknowledgement");
|
||||||
|
cat->Add("DbCatComment");
|
||||||
|
cat->Add("DbCatDowntime");
|
||||||
|
cat->Add("DbCatEventHandler");
|
||||||
|
cat->Add("DbCatExternalCommand");
|
||||||
|
cat->Add("DbCatFlapping");
|
||||||
|
cat->Add("DbCatLog");
|
||||||
|
cat->Add("DbCatNotification");
|
||||||
|
cat->Add("DbCatProgramStatus");
|
||||||
|
cat->Add("DbCatRetention");
|
||||||
|
cat->Add("DbCatStateHistory");
|
||||||
|
|
||||||
|
return cat;
|
||||||
}}}
|
}}}
|
||||||
};
|
};
|
||||||
|
int categories_filter_real (CategoryFilter);
|
||||||
|
|
||||||
[config] bool enable_ha {
|
[config] bool enable_ha {
|
||||||
default {{{ return true; }}}
|
default {{{ return true; }}}
|
||||||
|
@ -77,6 +91,12 @@ validator DbConnection {
|
||||||
Number servicechecks_age;
|
Number servicechecks_age;
|
||||||
Number systemcommands_age;
|
Number systemcommands_age;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Number categories;
|
||||||
|
Array categories {
|
||||||
|
String "*";
|
||||||
|
Number "*";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,8 @@ using namespace icinga;
|
||||||
|
|
||||||
INITIALIZE_ONCE(&DbQuery::StaticInitialize);
|
INITIALIZE_ONCE(&DbQuery::StaticInitialize);
|
||||||
|
|
||||||
|
std::map<String, int> DbQuery::m_CategoryFilterMap;
|
||||||
|
|
||||||
void DbQuery::StaticInitialize(void)
|
void DbQuery::StaticInitialize(void)
|
||||||
{
|
{
|
||||||
ScriptGlobal::Set("DbCatConfig", DbCatConfig);
|
ScriptGlobal::Set("DbCatConfig", DbCatConfig);
|
||||||
|
@ -42,5 +44,26 @@ void DbQuery::StaticInitialize(void)
|
||||||
ScriptGlobal::Set("DbCatRetention", DbCatRetention);
|
ScriptGlobal::Set("DbCatRetention", DbCatRetention);
|
||||||
ScriptGlobal::Set("DbCatStateHistory", DbCatStateHistory);
|
ScriptGlobal::Set("DbCatStateHistory", DbCatStateHistory);
|
||||||
|
|
||||||
ScriptGlobal::Set("DbCatEverything", ~(unsigned int)0);
|
ScriptGlobal::Set("DbCatEverything", DbCatEverything);
|
||||||
|
|
||||||
|
m_CategoryFilterMap["DbCatConfig"] = DbCatConfig;
|
||||||
|
m_CategoryFilterMap["DbCatState"] = DbCatState;
|
||||||
|
m_CategoryFilterMap["DbCatAcknowledgement"] = DbCatAcknowledgement;
|
||||||
|
m_CategoryFilterMap["DbCatComment"] = DbCatComment;
|
||||||
|
m_CategoryFilterMap["DbCatDowntime"] = DbCatDowntime;
|
||||||
|
m_CategoryFilterMap["DbCatEventHandler"] = DbCatEventHandler;
|
||||||
|
m_CategoryFilterMap["DbCatExternalCommand"] = DbCatExternalCommand;
|
||||||
|
m_CategoryFilterMap["DbCatFlapping"] = DbCatFlapping;
|
||||||
|
m_CategoryFilterMap["DbCatCheck"] = DbCatCheck;
|
||||||
|
m_CategoryFilterMap["DbCatLog"] = DbCatLog;
|
||||||
|
m_CategoryFilterMap["DbCatNotification"] = DbCatNotification;
|
||||||
|
m_CategoryFilterMap["DbCatProgramStatus"] = DbCatProgramStatus;
|
||||||
|
m_CategoryFilterMap["DbCatRetention"] = DbCatRetention;
|
||||||
|
m_CategoryFilterMap["DbCatStateHistory"] = DbCatStateHistory;
|
||||||
|
m_CategoryFilterMap["DbCatEverything"] = DbCatEverything;
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::map<String, int>& DbQuery::GetCategoryFilterMap(void)
|
||||||
|
{
|
||||||
|
return m_CategoryFilterMap;
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,23 +39,23 @@ enum DbQueryType
|
||||||
|
|
||||||
enum DbQueryCategory
|
enum DbQueryCategory
|
||||||
{
|
{
|
||||||
DbCatInvalid = -1,
|
DbCatInvalid = 0, //-1 is required for DbCatEverything
|
||||||
|
DbCatEverything = ~0,
|
||||||
|
|
||||||
DbCatConfig = (1 << 0),
|
DbCatConfig = 1,
|
||||||
DbCatState = (1 << 1),
|
DbCatState = 2,
|
||||||
|
DbCatAcknowledgement = 4,
|
||||||
DbCatAcknowledgement = (1 << 2),
|
DbCatComment = 8,
|
||||||
DbCatComment = (1 << 3),
|
DbCatDowntime = 16,
|
||||||
DbCatDowntime = (1 << 4),
|
DbCatEventHandler = 32,
|
||||||
DbCatEventHandler = (1 << 5),
|
DbCatExternalCommand = 64,
|
||||||
DbCatExternalCommand = (1 << 6),
|
DbCatFlapping = 128,
|
||||||
DbCatFlapping = (1 << 7),
|
DbCatCheck = 256,
|
||||||
DbCatCheck = (1 << 8),
|
DbCatLog = 512,
|
||||||
DbCatLog = (1 << 9),
|
DbCatNotification = 1024,
|
||||||
DbCatNotification = (1 << 10),
|
DbCatProgramStatus = 2048,
|
||||||
DbCatProgramStatus = (1 << 11),
|
DbCatRetention = 4096,
|
||||||
DbCatRetention = (1 << 12),
|
DbCatStateHistory = 8192
|
||||||
DbCatStateHistory = (1 << 13)
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class DbObject;
|
class DbObject;
|
||||||
|
@ -79,6 +79,11 @@ struct I2_DB_IDO_API DbQuery
|
||||||
DbQuery(void)
|
DbQuery(void)
|
||||||
: Type(0), Category(DbCatInvalid), ConfigUpdate(false), StatusUpdate(false), Priority(PriorityLow)
|
: Type(0), Category(DbCatInvalid), ConfigUpdate(false), StatusUpdate(false), Priority(PriorityLow)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
static const std::map<String, int>& GetCategoryFilterMap(void);
|
||||||
|
|
||||||
|
private:
|
||||||
|
static std::map<String, int> m_CategoryFilterMap;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -872,7 +872,7 @@ void IdoMysqlConnection::InternalExecuteQuery(const DbQuery& query, DbQueryType
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((query.Category & GetCategories()) == 0)
|
if (GetCategoryFilter() != DbCatEverything && (query.Category & GetCategoryFilter()) == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (query.Object && query.Object->GetObject()->GetExtension("agent_check").ToBool())
|
if (query.Object && query.Object->GetObject()->GetExtension("agent_check").ToBool())
|
||||||
|
|
|
@ -734,7 +734,7 @@ void IdoPgsqlConnection::InternalExecuteQuery(const DbQuery& query, DbQueryType
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((query.Category & GetCategories()) == 0)
|
if (GetCategoryFilter() != DbCatEverything && (query.Category & GetCategoryFilter()) == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (query.Object && query.Object->GetObject()->GetExtension("agent_check").ToBool())
|
if (query.Object && query.Object->GetObject()->GetExtension("agent_check").ToBool())
|
||||||
|
|
Loading…
Reference in New Issue