pacemaker  2.1.6-802a72226b
Scalable High-Availability cluster resource manager
Enumerations | Functions
rules.h File Reference
#include <glib.h>
#include <crm/crm.h>
#include <crm/common/iso8601.h>
#include <crm/pengine/common.h>
#include <crm/pengine/rules_compat.h>
Include dependency graph for rules.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Enumerations

enum  expression_type {
  not_expr = 0, nested_rule = 1, attr_expr = 2, loc_expr = 3,
  role_expr = 4, time_expr = 5, version_expr = 6, rsc_expr = 7,
  op_expr = 8
}
 

Functions

enum expression_type find_expression_type (xmlNode *expr)
 
gboolean pe_evaluate_rules (xmlNode *ruleset, GHashTable *node_hash, crm_time_t *now, crm_time_t *next_change)
 Evaluate any rules contained by given XML element. More...
 
gboolean pe_test_rule (xmlNode *rule, GHashTable *node_hash, enum rsc_role_e role, crm_time_t *now, crm_time_t *next_change, pe_match_data_t *match_data)
 
gboolean pe_test_expression (xmlNode *expr, GHashTable *node_hash, enum rsc_role_e role, crm_time_t *now, crm_time_t *next_change, pe_match_data_t *match_data)
 Evaluate one rule subelement (pass/fail) More...
 
void pe_eval_nvpairs (xmlNode *top, const xmlNode *xml_obj, const char *set_name, const pe_rule_eval_data_t *rule_data, GHashTable *hash, const char *always_first, gboolean overwrite, crm_time_t *next_change)
 Extract nvpair blocks contained by an XML element into a hash table. More...
 
void pe_unpack_nvpairs (xmlNode *top, const xmlNode *xml_obj, const char *set_name, GHashTable *node_hash, GHashTable *hash, const char *always_first, gboolean overwrite, crm_time_t *now, crm_time_t *next_change)
 Extract nvpair blocks contained by an XML element into a hash table. More...
 
char * pe_expand_re_matches (const char *string, const pe_re_match_data_t *match_data)
 Expand any regular expression submatches (%0-%9) in a string. More...
 
gboolean pe_eval_rules (xmlNode *ruleset, const pe_rule_eval_data_t *rule_data, crm_time_t *next_change)
 Evaluate rules. More...
 
gboolean pe_eval_expr (xmlNode *rule, const pe_rule_eval_data_t *rule_data, crm_time_t *next_change)
 Evaluate all of a rule's expressions. More...
 
gboolean pe_eval_subexpr (xmlNode *expr, const pe_rule_eval_data_t *rule_data, crm_time_t *next_change)
 Evaluate a single rule expression, including any subexpressions. More...
 

Enumeration Type Documentation

◆ expression_type

Enumerator
not_expr 
nested_rule 
attr_expr 
loc_expr 
role_expr 
time_expr 
version_expr 
Deprecated:
Do not use (will be removed in a future release)
rsc_expr 
op_expr 

Definition at line 22 of file rules.h.

Function Documentation

◆ find_expression_type()

enum expression_type find_expression_type ( xmlNode *  expr)

Definition at line 105 of file rules.c.

◆ pe_eval_expr()

gboolean pe_eval_expr ( xmlNode *  rule,
const pe_rule_eval_data_t rule_data,
crm_time_t next_change 
)

Evaluate all of a rule's expressions.

Parameters
[in,out]ruleXML containing a rule definition or its id-ref
[in]rule_dataMatching parameters to check against rule
[out]next_changeIf not NULL, set to when evaluation will change
Returns
TRUE if rule_data passes rule, otherwise FALSE

Definition at line 660 of file rules.c.

◆ pe_eval_nvpairs()

void pe_eval_nvpairs ( xmlNode *  top,
const xmlNode *  xml_obj,
const char *  set_name,
const pe_rule_eval_data_t rule_data,
GHashTable *  hash,
const char *  always_first,
gboolean  overwrite,
crm_time_t next_change 
)

Extract nvpair blocks contained by an XML element into a hash table.

Parameters
[in,out]topXML document root (used to expand id-ref's)
[in]xml_objXML element containing blocks of nvpair elements
[in]set_nameIf not NULL, only use blocks of this element
[in]rule_dataMatching parameters to use when unpacking
[out]hashWhere to store extracted name/value pairs
[in]always_firstIf not NULL, process block with this ID first
[in]overwriteWhether to replace existing values with same name
[out]next_changeIf not NULL, set to when evaluation will change

Definition at line 497 of file rules.c.

◆ pe_eval_rules()

gboolean pe_eval_rules ( xmlNode *  ruleset,
const pe_rule_eval_data_t rule_data,
crm_time_t next_change 
)

Evaluate rules.

Parameters
[in,out]rulesetXML possibly containing rule sub-elements
[in]rule_data
[out]next_changeIf not NULL, set to when evaluation will change
Returns
TRUE if there are no rules or

Definition at line 626 of file rules.c.

◆ pe_eval_subexpr()

gboolean pe_eval_subexpr ( xmlNode *  expr,
const pe_rule_eval_data_t rule_data,
crm_time_t next_change 
)

Evaluate a single rule expression, including any subexpressions.

Parameters
[in,out]exprXML containing a rule expression
[in]rule_dataMatching parameters to check against expression
[out]next_changeIf not NULL, set to when evaluation will change
Returns
TRUE if rule_data passes expr, otherwise FALSE

Definition at line 712 of file rules.c.

◆ pe_evaluate_rules()

gboolean pe_evaluate_rules ( xmlNode *  ruleset,
GHashTable *  node_hash,
crm_time_t now,
crm_time_t next_change 
)

Evaluate any rules contained by given XML element.

Parameters
[in,out]xmlXML element to check for rules
[in]node_hashNode attributes to use to evaluate expressions
[in]nowTime to use when evaluating expressions
[out]next_changeIf not NULL, set to when evaluation will change
Returns
TRUE if no rules, or any of rules present is in effect, else FALSE

Definition at line 39 of file rules.c.

◆ pe_expand_re_matches()

char* pe_expand_re_matches ( const char *  string,
const pe_re_match_data_t match_data 
)

Expand any regular expression submatches (%0-%9) in a string.

Parameters
[in]stringString possibly containing submatch variables
[in]match_dataIf not NULL, regular expression matches
Returns
Newly allocated string identical to string with submatches expanded, or NULL if there were no matches

Definition at line 560 of file rules.c.

◆ pe_test_expression()

gboolean pe_test_expression ( xmlNode *  expr,
GHashTable *  node_hash,
enum rsc_role_e  role,
crm_time_t now,
crm_time_t next_change,
pe_match_data_t match_data 
)

Evaluate one rule subelement (pass/fail)

A rule element may contain another rule, a node attribute expression, or a date expression. Given any one of those, evaluate it and return whether it passed.

Parameters
[in,out]exprRule subelement XML
[in]node_hashNode attributes to use when evaluating expression
[in]roleResource role to use when evaluating expression
[in]nowTime to use when evaluating expression
[out]next_changeIf not NULL, set to when evaluation will change
[in]match_dataIf not NULL, resource back-references and params
Returns
TRUE if expression is in effect under given conditions, else FALSE

Definition at line 88 of file rules.c.

◆ pe_test_rule()

gboolean pe_test_rule ( xmlNode *  rule,
GHashTable *  node_hash,
enum rsc_role_e  role,
crm_time_t now,
crm_time_t next_change,
pe_match_data_t match_data 
)

Definition at line 55 of file rules.c.

◆ pe_unpack_nvpairs()

void pe_unpack_nvpairs ( xmlNode *  top,
const xmlNode *  xml_obj,
const char *  set_name,
GHashTable *  node_hash,
GHashTable *  hash,
const char *  always_first,
gboolean  overwrite,
crm_time_t now,
crm_time_t next_change 
)

Extract nvpair blocks contained by an XML element into a hash table.

Parameters
[in,out]topXML document root (used to expand id-ref's)
[in]xml_objXML element containing blocks of nvpair elements
[in]set_nameElement name to identify nvpair blocks
[in]node_hashNode attributes to use when evaluating rules
[out]hashWhere to store extracted name/value pairs
[in]always_firstIf not NULL, process block with this ID first
[in]overwriteWhether to replace existing values with same name
[in]nowTime to use when evaluating rules
[out]next_changeIf not NULL, set to when evaluation will change

Definition at line 532 of file rules.c.