|
rpm-build |
3ee90c |
/*
|
|
rpm-build |
3ee90c |
* Copyright 2004-2019 the Pacemaker project contributors
|
|
rpm-build |
3ee90c |
*
|
|
rpm-build |
3ee90c |
* The version control history for this file may have further details.
|
|
rpm-build |
3ee90c |
*
|
|
rpm-build |
3ee90c |
* This source code is licensed under the GNU Lesser General Public License
|
|
rpm-build |
3ee90c |
* version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
|
|
rpm-build |
3ee90c |
*/
|
|
rpm-build |
3ee90c |
|
|
rpm-build |
3ee90c |
#ifndef PENGINE_STATUS__H
|
|
rpm-build |
3ee90c |
# define PENGINE_STATUS__H
|
|
rpm-build |
3ee90c |
|
|
rpm-build |
3ee90c |
#ifdef __cplusplus
|
|
rpm-build |
3ee90c |
extern "C" {
|
|
rpm-build |
3ee90c |
#endif
|
|
rpm-build |
3ee90c |
|
|
rpm-build |
3ee90c |
/*!
|
|
rpm-build |
3ee90c |
* \file
|
|
rpm-build |
3ee90c |
* \brief Cluster status and scheduling
|
|
rpm-build |
3ee90c |
* \ingroup pengine
|
|
rpm-build |
3ee90c |
*/
|
|
rpm-build |
3ee90c |
|
|
rpm-build |
3ee90c |
# include <glib.h> // gboolean
|
|
rpm-build |
3ee90c |
# include <stdbool.h> // bool
|
|
rpm-build |
3ee90c |
# include <crm/crm.h> // GListPtr
|
|
rpm-build |
3ee90c |
# include <crm/common/iso8601.h>
|
|
rpm-build |
3ee90c |
# include <crm/pengine/common.h>
|
|
rpm-build |
3ee90c |
# include <crm/pengine/pe_types.h> // pe_node_t, pe_resource_t, etc.
|
|
rpm-build |
3ee90c |
# include <crm/pengine/complex.h>
|
|
rpm-build |
3ee90c |
|
|
rpm-build |
3ee90c |
const char *rsc_printable_id(pe_resource_t *rsc);
|
|
rpm-build |
3ee90c |
gboolean cluster_status(pe_working_set_t * data_set);
|
|
rpm-build |
3ee90c |
pe_working_set_t *pe_new_working_set(void);
|
|
rpm-build |
3ee90c |
void pe_free_working_set(pe_working_set_t *data_set);
|
|
rpm-build |
3ee90c |
void set_working_set_defaults(pe_working_set_t * data_set);
|
|
rpm-build |
3ee90c |
void cleanup_calculations(pe_working_set_t * data_set);
|
|
rpm-build |
3ee90c |
void pe_reset_working_set(pe_working_set_t *data_set);
|
|
rpm-build |
3ee90c |
pe_resource_t *pe_find_resource(GListPtr rsc_list, const char *id_rh);
|
|
rpm-build |
3ee90c |
pe_resource_t *pe_find_resource_with_flags(GListPtr rsc_list, const char *id, enum pe_find flags);
|
|
rpm-build |
3ee90c |
pe_node_t *pe_find_node(GListPtr node_list, const char *uname);
|
|
rpm-build |
3ee90c |
pe_node_t *pe_find_node_id(GListPtr node_list, const char *id);
|
|
rpm-build |
3ee90c |
pe_node_t *pe_find_node_any(GListPtr node_list, const char *id, const char *uname);
|
|
rpm-build |
3ee90c |
GListPtr find_operations(const char *rsc, const char *node, gboolean active_filter,
|
|
rpm-build |
3ee90c |
pe_working_set_t * data_set);
|
|
rpm-build |
3ee90c |
int pe_bundle_replicas(const pe_resource_t *rsc);
|
|
rpm-build |
3ee90c |
#if ENABLE_VERSIONED_ATTRS
|
|
rpm-build |
3ee90c |
pe_rsc_action_details_t *pe_rsc_action_details(pe_action_t *action);
|
|
rpm-build |
3ee90c |
#endif
|
|
rpm-build |
3ee90c |
|
|
rpm-build |
3ee90c |
/*!
|
|
rpm-build |
3ee90c |
* \brief Check whether a resource is any clone type
|
|
rpm-build |
3ee90c |
*
|
|
rpm-build |
3ee90c |
* \param[in] rsc Resource to check
|
|
rpm-build |
3ee90c |
*
|
|
rpm-build |
3ee90c |
* \return TRUE if resource is clone, FALSE otherwise
|
|
rpm-build |
3ee90c |
*/
|
|
rpm-build |
3ee90c |
static inline bool
|
|
rpm-build |
3ee90c |
pe_rsc_is_clone(pe_resource_t *rsc)
|
|
rpm-build |
3ee90c |
{
|
|
rpm-build |
3ee90c |
return rsc && (rsc->variant == pe_clone);
|
|
rpm-build |
3ee90c |
}
|
|
rpm-build |
3ee90c |
|
|
rpm-build |
3ee90c |
/*!
|
|
rpm-build |
3ee90c |
* \brief Check whether a resource is a globally unique clone
|
|
rpm-build |
3ee90c |
*
|
|
rpm-build |
3ee90c |
* \param[in] rsc Resource to check
|
|
rpm-build |
3ee90c |
*
|
|
rpm-build |
3ee90c |
* \return TRUE if resource is unique clone, FALSE otherwise
|
|
rpm-build |
3ee90c |
*/
|
|
rpm-build |
3ee90c |
static inline bool
|
|
rpm-build |
3ee90c |
pe_rsc_is_unique_clone(pe_resource_t *rsc)
|
|
rpm-build |
3ee90c |
{
|
|
rpm-build |
3ee90c |
return pe_rsc_is_clone(rsc) && is_set(rsc->flags, pe_rsc_unique);
|
|
rpm-build |
3ee90c |
}
|
|
rpm-build |
3ee90c |
|
|
rpm-build |
3ee90c |
/*!
|
|
rpm-build |
3ee90c |
* \brief Check whether a resource is an anonymous clone
|
|
rpm-build |
3ee90c |
*
|
|
rpm-build |
3ee90c |
* \param[in] rsc Resource to check
|
|
rpm-build |
3ee90c |
*
|
|
rpm-build |
3ee90c |
* \return TRUE if resource is anonymous clone, FALSE otherwise
|
|
rpm-build |
3ee90c |
*/
|
|
rpm-build |
3ee90c |
static inline bool
|
|
rpm-build |
3ee90c |
pe_rsc_is_anon_clone(pe_resource_t *rsc)
|
|
rpm-build |
3ee90c |
{
|
|
rpm-build |
3ee90c |
return pe_rsc_is_clone(rsc) && is_not_set(rsc->flags, pe_rsc_unique);
|
|
rpm-build |
3ee90c |
}
|
|
rpm-build |
3ee90c |
|
|
rpm-build |
3ee90c |
/*!
|
|
rpm-build |
3ee90c |
* \brief Check whether a resource is part of a bundle
|
|
rpm-build |
3ee90c |
*
|
|
rpm-build |
3ee90c |
* \param[in] rsc Resource to check
|
|
rpm-build |
3ee90c |
*
|
|
rpm-build |
3ee90c |
* \return TRUE if resource is part of a bundle, FALSE otherwise
|
|
rpm-build |
3ee90c |
*/
|
|
rpm-build |
3ee90c |
static inline bool
|
|
rpm-build |
3ee90c |
pe_rsc_is_bundled(pe_resource_t *rsc)
|
|
rpm-build |
3ee90c |
{
|
|
rpm-build |
3ee90c |
return uber_parent(rsc)->parent != NULL;
|
|
rpm-build |
3ee90c |
}
|
|
rpm-build |
3ee90c |
|
|
rpm-build |
3ee90c |
#ifdef __cplusplus
|
|
rpm-build |
3ee90c |
}
|
|
rpm-build |
3ee90c |
#endif
|
|
rpm-build |
3ee90c |
|
|
rpm-build |
3ee90c |
#endif
|