summaryrefslogtreecommitdiffstats
path: root/include/crm/common/clone_internal.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 13:39:29 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 13:39:29 +0000
commitb41961d74fe7ff2d4d4abaca92454e87c561e49f (patch)
treeb34e3826a7b649dafdbd05081140c990c96d736d /include/crm/common/clone_internal.h
parentReleasing progress-linux version 2.1.7-1~progress7.99u1. (diff)
downloadpacemaker-b41961d74fe7ff2d4d4abaca92454e87c561e49f.tar.xz
pacemaker-b41961d74fe7ff2d4d4abaca92454e87c561e49f.zip
Merging upstream version 2.1.8~rc1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'include/crm/common/clone_internal.h')
-rw-r--r--include/crm/common/clone_internal.h52
1 files changed, 50 insertions, 2 deletions
diff --git a/include/crm/common/clone_internal.h b/include/crm/common/clone_internal.h
index 494ee74..db001a0 100644
--- a/include/crm/common/clone_internal.h
+++ b/include/crm/common/clone_internal.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2023 the Pacemaker project contributors
+ * Copyright 2004-2024 the Pacemaker project contributors
*
* The version control history for this file may have further details.
*
@@ -8,7 +8,11 @@
*/
#ifndef PCMK__CRM_COMMON_CLONE_INTERNAL__H
-# define PCMK__CRM_COMMON_CLONE_INTERNAL__H
+#define PCMK__CRM_COMMON_CLONE_INTERNAL__H
+
+#include <stdbool.h> // bool
+#include <crm/common/scheduler_types.h> // pcmk_resource_t
+#include <crm/common/resources.h> // pcmk_rsc_variant_clone
#ifdef __cplusplus
extern "C" {
@@ -26,6 +30,50 @@ enum pcmk__clone_flags {
pcmk__clone_promotion_constrained = (1 << 2),
};
+/*!
+ * \internal
+ * \brief Check whether a resource is a clone resource
+ *
+ * \param[in] rsc Resource to check
+ *
+ * \return true if \p rsc is a clone, otherwise false
+ *
+ * \note This does not return true if \p rsc has a clone ancestor.
+ */
+static inline bool
+pcmk__is_clone(const pcmk_resource_t *rsc)
+{
+ return (rsc != NULL) && (rsc->variant == pcmk_rsc_variant_clone);
+}
+
+/*!
+ * \internal
+ * \brief Check whether a resource is a globally unique clone
+ *
+ * \param[in] rsc Resource to check
+ *
+ * \return true if \p rsc is a unique clone, otherwise false
+ */
+static inline bool
+pcmk__is_unique_clone(const pcmk_resource_t *rsc)
+{
+ return pcmk__is_clone(rsc) && pcmk_is_set(rsc->flags, pcmk_rsc_unique);
+}
+
+/*!
+ * \internal
+ * \brief Check whether a resource is an anonymous clone
+ *
+ * \param[in] rsc Resource to check
+ *
+ * \return true if \p rsc is an anonymous clone, otherwise false
+ */
+static inline bool
+pcmk__is_anonymous_clone(const pcmk_resource_t *rsc)
+{
+ return pcmk__is_clone(rsc) && !pcmk_is_set(rsc->flags, pcmk_rsc_unique);
+}
+
#ifdef __cplusplus
}
#endif