summaryrefslogtreecommitdiffstats
path: root/include/pcmki/pcmki_ticket.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/pcmki/pcmki_ticket.h')
-rw-r--r--include/pcmki/pcmki_ticket.h154
1 files changed, 154 insertions, 0 deletions
diff --git a/include/pcmki/pcmki_ticket.h b/include/pcmki/pcmki_ticket.h
new file mode 100644
index 0000000..a4606fc
--- /dev/null
+++ b/include/pcmki/pcmki_ticket.h
@@ -0,0 +1,154 @@
+/*
+ * Copyright 2024 the Pacemaker project contributors
+ *
+ * The version control history for this file may have further details.
+ *
+ * This source code is licensed under the GNU Lesser General Public License
+ * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
+ */
+
+#ifndef PCMK__PCMKI_PCMKI_TICKET__H
+# define PCMK__PCMKI_PCMKI_TICKET__H
+
+#include <crm/common/output_internal.h>
+
+#include <crm/cib/cib_types.h>
+
+/*!
+ * \internal
+ * \brief Return the state XML for a given ticket
+ *
+ * \param[in] cib Open CIB connection
+ * \param[in] ticket_id Ticket to get state for, or \c NULL for all tickets
+ * \param[out] state Where to store the result XML
+ *
+ * \return Standard Pacemaker return code
+ *
+ * \note If \p ticket_id is not \c NULL and more than one ticket exists with
+ * that ID, this function returns \c pcmk_rc_duplicate_id.
+ */
+int pcmk__get_ticket_state(cib_t *cib, const char *ticket_id, xmlNode **state);
+
+/*!
+ * \internal
+ * \brief Display the constraints that apply to a given ticket
+ *
+ * \param[in,out] out Output object
+ * \param[in] cib Open CIB connection
+ * \param[in] ticket_id Ticket to find constraints for,
+ * or \c NULL for all ticket constraints
+ *
+ * \return Standard Pacemaker return code
+ */
+int pcmk__ticket_constraints(pcmk__output_t *out, cib_t *cib, const char *ticket_id);
+
+/*!
+ * \internal
+ * \brief Delete a ticket's state from the local cluster site
+ *
+ * \param[in,out] out Output object
+ * \param[in] cib Open CIB connection
+ * \param[in] scheduler Scheduler data
+ * \param[in] ticket_id Ticket to delete
+ * \param[in] force If \c true, delete the ticket even if it has
+ * been granted
+ *
+ * \return Standard Pacemaker return code
+ */
+int pcmk__ticket_delete(pcmk__output_t *out, cib_t *cib, pcmk_scheduler_t *scheduler,
+ const char *ticket_id, bool force);
+
+/*!
+ * \internal
+ * \brief Return the value of a ticket's attribute
+ *
+ * \param[in,out] out Output object
+ * \param[in,out] scheduler Scheduler data
+ * \param[in] ticket_id Ticket to find attribute value for
+ * \param[in] attr_name Attribute's name to find value for
+ * \param[in] attr_default If either the ticket or the attribute do not
+ * exist, use this as the value in the output
+ *
+ * \return Standard Pacemaker return code
+ */
+int pcmk__ticket_get_attr(pcmk__output_t *out, pcmk_scheduler_t *scheduler,
+ const char *ticket_id, const char *attr_name,
+ const char *attr_default);
+
+/*!
+ * \brief Return information about the given ticket
+ *
+ * \param[in,out] out Output object
+ * \param[in,out] scheduler Scheduler data
+ * \param[in] ticket_id Ticket to display info for, or \c NULL for
+ * all tickets
+ * \param[in] details If true (and \p out is not an XML format
+ * object), output any additional attributes
+ * set on a ticket beyond the basics
+ * \param[in] raw If true (and \p out is not an XML format
+ * object), simply list the IDs of all tickets.
+ * This does not make a lot of sense if
+ * \p ticket_id is not NULL, but that will not
+ * raise an error.
+ *
+ * \return Standard Pacemaker return code
+ */
+int pcmk__ticket_info(pcmk__output_t *out, pcmk_scheduler_t *scheduler,
+ const char *ticket_id, bool details, bool raw);
+
+/*!
+ * \brief Remove the given attribute(s) from a ticket
+ *
+ * \param[in,out] out Output object
+ * \param[in] cib Open CIB connection
+ * \param[in,out] scheduler Scheduler data
+ * \param[in] ticket_id Ticket to remove attributes from
+ * \param[in] attr_delete A list of attribute names
+ * \param[in] force Attempting to remove the granted attribute of
+ * \p ticket_id will cause this function to return
+ * \c EACCES unless \p force is set to \c true
+ *
+ * \return Standard Pacemaker return code
+ */
+int pcmk__ticket_remove_attr(pcmk__output_t *out, cib_t *cib, pcmk_scheduler_t *scheduler,
+ const char *ticket_id, GList *attr_delete, bool force);
+
+/*!
+ * \brief Set the given attribute(s) on a ticket
+ *
+ * \param[in,out] out Output object
+ * \param[in] cib Open CIB connection
+ * \param[in,out] scheduler Scheduler data
+ * \param[in] ticket_id Ticket to set attributes on
+ * \param[in] attr_set A hash table of attributes, where keys are the
+ * attribute names and the values are the attribute
+ * values
+ * \param[in] force Attempting to change the granted status of
+ * \p ticket_id will cause this function to return
+ * \c EACCES unless \p force is set to \c true
+ *
+ * \return Standard Pacemaker return code
+ *
+ * \note If no \p ticket_id attribute exists but \p attr_set is non-NULL, the
+ * ticket will be created with the given attributes.
+ */
+int pcmk__ticket_set_attr(pcmk__output_t *out, cib_t *cib, pcmk_scheduler_t *scheduler,
+ const char *ticket_id, GHashTable *attr_set, bool force);
+
+/*!
+ * \internal
+ * \brief Return a ticket's state XML
+ *
+ * \param[in,out] out Output object
+ * \param[in] cib Open CIB connection
+ * \param[in] ticket_id Ticket to find constraints for,
+ * or \c NULL for all ticket constraints
+ *
+ * \return Standard Pacemaker return code
+ *
+ * \note If \p ticket_id is not \c NULL and more than one ticket exists with
+ * that ID, this function returns \c pcmk_rc_duplicate_id.
+ */
+int pcmk__ticket_state(pcmk__output_t *out, cib_t *cib, const char *ticket_id);
+
+#endif