pacemaker  2.0.5-ba59be712
Scalable High-Availability cluster resource manager
rules.h
Go to the documentation of this file.
1 /*
2  * Copyright 2004-2020 the Pacemaker project contributors
3  *
4  * The version control history for this file may have further details.
5  *
6  * This source code is licensed under the GNU Lesser General Public License
7  * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
8  */
9 
10 #ifndef PENGINE_RULES__H
11 # define PENGINE_RULES__H
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 # include <glib.h>
18 
19 # include <crm/crm.h>
20 # include <crm/common/iso8601.h>
21 # include <crm/pengine/common.h>
22 
33 };
34 
35 enum expression_type find_expression_type(xmlNode * expr);
36 
37 gboolean pe_evaluate_rules(xmlNode *ruleset, GHashTable *node_hash,
38  crm_time_t *now, crm_time_t *next_change);
39 
40 gboolean pe_test_rule(xmlNode *rule, GHashTable *node_hash,
41  enum rsc_role_e role, crm_time_t *now,
42  crm_time_t *next_change, pe_match_data_t *match_data);
43 
44 gboolean pe_test_expression(xmlNode *expr, GHashTable *node_hash,
45  enum rsc_role_e role, crm_time_t *now,
46  crm_time_t *next_change,
47  pe_match_data_t *match_data);
48 
49 void pe_eval_nvpairs(xmlNode *top, xmlNode *xml_obj, const char *set_name,
50  pe_rule_eval_data_t *rule_data, GHashTable *hash,
51  const char *always_first, gboolean overwrite,
52  crm_time_t *next_change);
53 
54 void pe_unpack_nvpairs(xmlNode *top, xmlNode *xml_obj, const char *set_name,
55  GHashTable *node_hash, GHashTable *hash,
56  const char *always_first, gboolean overwrite,
57  crm_time_t *now, crm_time_t *next_change);
58 
59 #if ENABLE_VERSIONED_ATTRS
60 void pe_eval_versioned_attributes(xmlNode *top, xmlNode *xml_obj,
61  const char *set_name, pe_rule_eval_data_t *rule_data,
62  xmlNode *hash, crm_time_t *next_change);
63 
64 GHashTable *pe_unpack_versioned_parameters(xmlNode *versioned_params, const char *ra_version);
65 #endif
66 
67 char *pe_expand_re_matches(const char *string, pe_re_match_data_t * match_data);
68 
69 gboolean pe_eval_rules(xmlNode *ruleset, pe_rule_eval_data_t *rule_data,
70  crm_time_t *next_change);
71 gboolean pe_eval_expr(xmlNode *rule, pe_rule_eval_data_t *rule_data,
72  crm_time_t *next_change);
73 gboolean pe_eval_subexpr(xmlNode *expr, pe_rule_eval_data_t *rule_data,
74  crm_time_t *next_change);
75 
76 #ifndef PCMK__NO_COMPAT
77 /* Everything here is deprecated and kept only for public API backward
78  * compatibility. It will be moved to compatibility.h in a future release.
79  */
80 
82 gboolean test_ruleset(xmlNode *ruleset, GHashTable *node_hash, crm_time_t *now);
83 
85 gboolean test_rule(xmlNode *rule, GHashTable *node_hash, enum rsc_role_e role,
86  crm_time_t *now);
87 
89 gboolean pe_test_rule_re(xmlNode *rule, GHashTable *node_hash,
90  enum rsc_role_e role, crm_time_t *now,
91  pe_re_match_data_t *re_match_data);
92 
94 gboolean pe_test_rule_full(xmlNode *rule, GHashTable *node_hash,
95  enum rsc_role_e role, crm_time_t *now,
96  pe_match_data_t *match_data);
97 
99 gboolean test_expression(xmlNode *expr, GHashTable *node_hash,
100  enum rsc_role_e role, crm_time_t *now);
101 
103 gboolean pe_test_expression_re(xmlNode *expr, GHashTable *node_hash,
104  enum rsc_role_e role, crm_time_t *now,
105  pe_re_match_data_t *re_match_data);
106 
108 gboolean pe_test_expression_full(xmlNode *expr, GHashTable *node_hash,
109  enum rsc_role_e role,
110  crm_time_t *now, pe_match_data_t *match_data);
111 
113 void unpack_instance_attributes(xmlNode *top, xmlNode *xml_obj,
114  const char *set_name, GHashTable *node_hash,
115  GHashTable *hash, const char *always_first,
116  gboolean overwrite, crm_time_t *now);
117 #endif
118 
119 #ifdef __cplusplus
120 }
121 #endif
122 
123 #endif
A dumping ground.
Definition: rules.h:31
gboolean pe_eval_rules(xmlNode *ruleset, pe_rule_eval_data_t *rule_data, crm_time_t *next_change)
Definition: rules.c:825
void pe_unpack_nvpairs(xmlNode *top, 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.
Definition: rules.c:713
void pe_eval_nvpairs(xmlNode *top, xmlNode *xml_obj, const char *set_name, pe_rule_eval_data_t *rule_data, GHashTable *hash, const char *always_first, gboolean overwrite, crm_time_t *next_change)
Definition: rules.c:690
struct crm_time_s crm_time_t
Definition: iso8601.h:32
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: rules.c:55
gboolean pe_test_expression_re(xmlNode *expr, GHashTable *node_hash, enum rsc_role_e role, crm_time_t *now, pe_re_match_data_t *re_match_data)
Definition: rules.c:1425
gboolean pe_eval_expr(xmlNode *rule, pe_rule_eval_data_t *rule_data, crm_time_t *next_change)
Definition: rules.c:849
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)
Definition: rules.c:88
Definition: rules.h:32
enum expression_type find_expression_type(xmlNode *expr)
Definition: rules.c:105
Definition: rules.h:24
gboolean pe_test_rule_full(xmlNode *rule, GHashTable *node_hash, enum rsc_role_e role, crm_time_t *now, pe_match_data_t *match_data)
Definition: rules.c:1412
ISO_8601 Date handling.
gboolean pe_eval_subexpr(xmlNode *expr, pe_rule_eval_data_t *rule_data, crm_time_t *next_change)
Definition: rules.c:891
char * pe_expand_re_matches(const char *string, pe_re_match_data_t *match_data)
Definition: rules.c:743
gboolean test_ruleset(xmlNode *ruleset, GHashTable *node_hash, crm_time_t *now)
Definition: rules.c:1389
gboolean pe_test_expression_full(xmlNode *expr, GHashTable *node_hash, enum rsc_role_e role, crm_time_t *now, pe_match_data_t *match_data)
Definition: rules.c:1436
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.
Definition: rules.c:39
gboolean pe_test_rule_re(xmlNode *rule, GHashTable *node_hash, enum rsc_role_e role, crm_time_t *now, pe_re_match_data_t *re_match_data)
Definition: rules.c:1401
rsc_role_e
Definition: common.h:91
Definition: rules.h:27
void unpack_instance_attributes(xmlNode *top, xmlNode *xml_obj, const char *set_name, GHashTable *node_hash, GHashTable *hash, const char *always_first, gboolean overwrite, crm_time_t *now)
Definition: rules.c:1444
gboolean test_rule(xmlNode *rule, GHashTable *node_hash, enum rsc_role_e role, crm_time_t *now)
Definition: rules.c:1395
expression_type
Definition: rules.h:23
gboolean test_expression(xmlNode *expr, GHashTable *node_hash, enum rsc_role_e role, crm_time_t *now)
Definition: rules.c:1419