1
2
3
4
5
6
7
8
9
10 #ifndef PCMK__CRM_PENGINE_RULES__H
11 # define PCMK__CRM_PENGINE_RULES__H
12
13 # include <glib.h>
14 # include <crm/crm.h>
15 # include <crm/common/iso8601.h>
16 # include <crm/pengine/common.h>
17
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21
22 enum expression_type {
23 not_expr = 0,
24 nested_rule = 1,
25 attr_expr = 2,
26 loc_expr = 3,
27 role_expr = 4,
28 time_expr = 5,
29 #if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1)
30
31 version_expr = 6,
32 #endif
33 rsc_expr = 7,
34 op_expr = 8,
35 };
36
37 enum expression_type find_expression_type(xmlNode * expr);
38
39 gboolean pe_evaluate_rules(xmlNode *ruleset, GHashTable *node_hash,
40 crm_time_t *now, crm_time_t *next_change);
41
42 gboolean pe_test_rule(xmlNode *rule, GHashTable *node_hash,
43 enum rsc_role_e role, crm_time_t *now,
44 crm_time_t *next_change, pe_match_data_t *match_data);
45
46 gboolean pe_test_expression(xmlNode *expr, GHashTable *node_hash,
47 enum rsc_role_e role, crm_time_t *now,
48 crm_time_t *next_change,
49 pe_match_data_t *match_data);
50
51 void pe_eval_nvpairs(xmlNode *top, const xmlNode *xml_obj, const char *set_name,
52 const pe_rule_eval_data_t *rule_data, GHashTable *hash,
53 const char *always_first, gboolean overwrite,
54 crm_time_t *next_change);
55
56 void pe_unpack_nvpairs(xmlNode *top, const xmlNode *xml_obj,
57 const char *set_name, GHashTable *node_hash,
58 GHashTable *hash, const char *always_first,
59 gboolean overwrite, crm_time_t *now,
60 crm_time_t *next_change);
61
62 char *pe_expand_re_matches(const char *string,
63 const pe_re_match_data_t *match_data);
64
65 gboolean pe_eval_rules(xmlNode *ruleset, const pe_rule_eval_data_t *rule_data,
66 crm_time_t *next_change);
67 gboolean pe_eval_expr(xmlNode *rule, const pe_rule_eval_data_t *rule_data,
68 crm_time_t *next_change);
69 gboolean pe_eval_subexpr(xmlNode *expr, const pe_rule_eval_data_t *rule_data,
70 crm_time_t *next_change);
71
72 #if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1)
73 #include <crm/pengine/rules_compat.h>
74 #endif
75
76 #ifdef __cplusplus
77 }
78 #endif
79
80 #endif