n_data 20 include/pcmki/pcmki_sched_notif.h gboolean activity, notify_data_t *n_data); n_data 22 include/pcmki/pcmki_sched_notif.h void pcmk__create_notification_keys(pe_resource_t *rsc, notify_data_t *n_data, n_data 25 include/pcmki/pcmki_sched_notif.h void create_notifications(pe_resource_t *rsc, notify_data_t *n_data, n_data 28 include/pcmki/pcmki_sched_notif.h void free_notification_data(notify_data_t *n_data); n_data 196 lib/pacemaker/pcmk_sched_notif.c add_notify_data_to_action_meta(notify_data_t *n_data, pe_action_t *action) n_data 198 lib/pacemaker/pcmk_sched_notif.c for (GSList *item = n_data->keys; item; item = item->next) { n_data 207 lib/pacemaker/pcmk_sched_notif.c notify_data_t * n_data, pe_working_set_t * data_set) n_data 240 lib/pacemaker/pcmk_sched_notif.c add_notify_data_to_action_meta(n_data, trigger); n_data 252 lib/pacemaker/pcmk_sched_notif.c pe_post_notify(pe_resource_t * rsc, pe_node_t * node, notify_data_t * n_data, pe_working_set_t * data_set) n_data 258 lib/pacemaker/pcmk_sched_notif.c if (n_data->post == NULL) { n_data 262 lib/pacemaker/pcmk_sched_notif.c notify = pe_notify(rsc, node, n_data->post, n_data->post_done, n_data, data_set); n_data 268 lib/pacemaker/pcmk_sched_notif.c if (n_data->post_done) { n_data 284 lib/pacemaker/pcmk_sched_notif.c order_actions(n_data->post_done, mon, pe_order_optional); n_data 303 lib/pacemaker/pcmk_sched_notif.c notify_data_t *n_data = NULL; n_data 309 lib/pacemaker/pcmk_sched_notif.c n_data = calloc(1, sizeof(notify_data_t)); n_data 310 lib/pacemaker/pcmk_sched_notif.c n_data->action = action; n_data 315 lib/pacemaker/pcmk_sched_notif.c n_data->pre = n_data 320 lib/pacemaker/pcmk_sched_notif.c update_action_flags(n_data->pre, pe_action_pseudo, __func__, __LINE__); n_data 321 lib/pacemaker/pcmk_sched_notif.c update_action_flags(n_data->pre, pe_action_runnable, __func__, n_data 324 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre->meta, "notify_type", "pre"); n_data 325 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre->meta, "notify_operation", n_data->action); n_data 327 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre->meta, "notify_key_type", "pre"); n_data 328 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre->meta, "notify_key_operation", start->task); n_data 332 lib/pacemaker/pcmk_sched_notif.c n_data->pre_done = custom_action(rsc, key, RSC_NOTIFIED, NULL, n_data 336 lib/pacemaker/pcmk_sched_notif.c update_action_flags(n_data->pre_done, pe_action_pseudo, __func__, n_data 338 lib/pacemaker/pcmk_sched_notif.c update_action_flags(n_data->pre_done, pe_action_runnable, __func__, n_data 341 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre_done->meta, "notify_type", "pre"); n_data 342 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre_done->meta, "notify_operation", n_data->action); n_data 344 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre_done->meta, "notify_key_type", "confirmed-pre"); n_data 345 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre_done->meta, "notify_key_operation", start->task); n_data 347 lib/pacemaker/pcmk_sched_notif.c order_actions(n_data->pre_done, start, pe_order_optional); n_data 348 lib/pacemaker/pcmk_sched_notif.c order_actions(n_data->pre, n_data->pre_done, pe_order_optional); n_data 354 lib/pacemaker/pcmk_sched_notif.c n_data->post = custom_action(rsc, key, RSC_NOTIFY, NULL, n_data 358 lib/pacemaker/pcmk_sched_notif.c n_data->post->priority = INFINITY; n_data 359 lib/pacemaker/pcmk_sched_notif.c update_action_flags(n_data->post, pe_action_pseudo, __func__, n_data 362 lib/pacemaker/pcmk_sched_notif.c update_action_flags(n_data->post, pe_action_runnable, __func__, n_data 365 lib/pacemaker/pcmk_sched_notif.c update_action_flags(n_data->post, pe_action_runnable | pe_action_clear, n_data 369 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post->meta, "notify_type", "post"); n_data 370 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post->meta, "notify_operation", n_data->action); n_data 372 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post->meta, "notify_key_type", "post"); n_data 373 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post->meta, "notify_key_operation", end->task); n_data 377 lib/pacemaker/pcmk_sched_notif.c n_data->post_done = custom_action(rsc, key, RSC_NOTIFIED, NULL, n_data 381 lib/pacemaker/pcmk_sched_notif.c n_data->post_done->priority = INFINITY; n_data 382 lib/pacemaker/pcmk_sched_notif.c update_action_flags(n_data->post_done, pe_action_pseudo, __func__, n_data 385 lib/pacemaker/pcmk_sched_notif.c update_action_flags(n_data->post_done, pe_action_runnable, n_data 388 lib/pacemaker/pcmk_sched_notif.c update_action_flags(n_data->post_done, pe_action_runnable | pe_action_clear, n_data 392 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post_done->meta, "notify_type", "post"); n_data 393 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post_done->meta, "notify_operation", n_data->action); n_data 395 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post_done->meta, "notify_key_type", "confirmed-post"); n_data 396 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post_done->meta, "notify_key_operation", end->task); n_data 398 lib/pacemaker/pcmk_sched_notif.c order_actions(end, n_data->post, pe_order_implies_then); n_data 399 lib/pacemaker/pcmk_sched_notif.c order_actions(n_data->post, n_data->post_done, pe_order_implies_then); n_data 403 lib/pacemaker/pcmk_sched_notif.c order_actions(n_data->pre_done, n_data->post, pe_order_optional); n_data 405 lib/pacemaker/pcmk_sched_notif.c return n_data; n_data 410 lib/pacemaker/pcmk_sched_notif.c notify_data_t * n_data) n_data 413 lib/pacemaker/pcmk_sched_notif.c if(n_data->allowed_nodes == NULL) { n_data 414 lib/pacemaker/pcmk_sched_notif.c n_data->allowed_nodes = rsc->allowed_nodes; n_data 423 lib/pacemaker/pcmk_sched_notif.c collect_notification_data(child, state, activity, n_data); n_data 442 lib/pacemaker/pcmk_sched_notif.c n_data->inactive = g_list_prepend(n_data->inactive, entry); n_data 445 lib/pacemaker/pcmk_sched_notif.c n_data->active = g_list_prepend(n_data->active, entry); n_data 448 lib/pacemaker/pcmk_sched_notif.c n_data->unpromoted = g_list_prepend(n_data->unpromoted, entry); n_data 449 lib/pacemaker/pcmk_sched_notif.c n_data->active = g_list_prepend(n_data->active, n_data 453 lib/pacemaker/pcmk_sched_notif.c n_data->promoted = g_list_prepend(n_data->promoted, entry); n_data 454 lib/pacemaker/pcmk_sched_notif.c n_data->active = g_list_prepend(n_data->active, n_data 490 lib/pacemaker/pcmk_sched_notif.c n_data->start = g_list_prepend(n_data->start, entry); n_data 493 lib/pacemaker/pcmk_sched_notif.c n_data->stop = g_list_prepend(n_data->stop, entry); n_data 496 lib/pacemaker/pcmk_sched_notif.c n_data->promote = g_list_prepend(n_data->promote, entry); n_data 499 lib/pacemaker/pcmk_sched_notif.c n_data->demote = g_list_prepend(n_data->demote, entry); n_data 510 lib/pacemaker/pcmk_sched_notif.c #define add_notify_env(n_data, key, value) do { \ n_data 511 lib/pacemaker/pcmk_sched_notif.c n_data->keys = pcmk_prepend_nvpair(n_data->keys, key, value); \ n_data 514 lib/pacemaker/pcmk_sched_notif.c #define add_notify_env_free(n_data, key, value) do { \ n_data 515 lib/pacemaker/pcmk_sched_notif.c n_data->keys = pcmk_prepend_nvpair(n_data->keys, key, value); \ n_data 529 lib/pacemaker/pcmk_sched_notif.c notify_data_t *n_data, n_data 539 lib/pacemaker/pcmk_sched_notif.c n_data->stop = expand_list(n_data->stop, &rsc_list, &node_list); n_data 541 lib/pacemaker/pcmk_sched_notif.c && pcmk__str_eq(n_data->action, RSC_STOP, pcmk__str_casei)) { n_data 544 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_stop_resource", rsc_list); n_data 545 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_stop_uname", node_list); n_data 547 lib/pacemaker/pcmk_sched_notif.c if ((n_data->start != NULL) n_data 548 lib/pacemaker/pcmk_sched_notif.c && pcmk__str_eq(n_data->action, RSC_START, pcmk__str_casei)) { n_data 551 lib/pacemaker/pcmk_sched_notif.c n_data->start = expand_list(n_data->start, &rsc_list, &node_list); n_data 552 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_start_resource", rsc_list); n_data 553 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_start_uname", node_list); n_data 555 lib/pacemaker/pcmk_sched_notif.c if ((n_data->demote != NULL) n_data 556 lib/pacemaker/pcmk_sched_notif.c && pcmk__str_eq(n_data->action, RSC_DEMOTE, pcmk__str_casei)) { n_data 559 lib/pacemaker/pcmk_sched_notif.c n_data->demote = expand_list(n_data->demote, &rsc_list, &node_list); n_data 560 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_demote_resource", rsc_list); n_data 561 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_demote_uname", node_list); n_data 563 lib/pacemaker/pcmk_sched_notif.c if ((n_data->promote != NULL) n_data 564 lib/pacemaker/pcmk_sched_notif.c && pcmk__str_eq(n_data->action, RSC_PROMOTE, pcmk__str_casei)) { n_data 567 lib/pacemaker/pcmk_sched_notif.c n_data->promote = expand_list(n_data->promote, &rsc_list, &node_list); n_data 568 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_promote_resource", rsc_list); n_data 569 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_promote_uname", node_list); n_data 571 lib/pacemaker/pcmk_sched_notif.c n_data->active = expand_list(n_data->active, &rsc_list, &node_list); n_data 572 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_active_resource", rsc_list); n_data 573 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_active_uname", node_list); n_data 575 lib/pacemaker/pcmk_sched_notif.c n_data->unpromoted = expand_list(n_data->unpromoted, &rsc_list, &node_list); n_data 576 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_unpromoted_resource", rsc_list); n_data 577 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_unpromoted_uname", node_list); n_data 580 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_slave_resource", rsc_list); n_data 581 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_slave_uname", node_list); n_data 583 lib/pacemaker/pcmk_sched_notif.c n_data->promoted = expand_list(n_data->promoted, &rsc_list, &node_list); n_data 584 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_promoted_resource", rsc_list); n_data 585 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_promoted_uname", node_list); n_data 588 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_master_resource", rsc_list); n_data 589 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_master_uname", node_list); n_data 591 lib/pacemaker/pcmk_sched_notif.c n_data->inactive = expand_list(n_data->inactive, &rsc_list, NULL); n_data 592 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_inactive_resource", rsc_list); n_data 594 lib/pacemaker/pcmk_sched_notif.c nodes = g_hash_table_get_values(n_data->allowed_nodes); n_data 603 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_available_uname", node_list); n_data 609 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_all_hosts", metal_list); n_data 613 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_all_uname", node_list); n_data 615 lib/pacemaker/pcmk_sched_notif.c if (required && n_data->pre) { n_data 616 lib/pacemaker/pcmk_sched_notif.c update_action_flags(n_data->pre, pe_action_optional | pe_action_clear, n_data 618 lib/pacemaker/pcmk_sched_notif.c update_action_flags(n_data->pre_done, pe_action_optional | pe_action_clear, n_data 622 lib/pacemaker/pcmk_sched_notif.c if (required && n_data->post) { n_data 623 lib/pacemaker/pcmk_sched_notif.c update_action_flags(n_data->post, pe_action_optional | pe_action_clear, n_data 625 lib/pacemaker/pcmk_sched_notif.c update_action_flags(n_data->post_done, pe_action_optional | pe_action_clear, n_data 653 lib/pacemaker/pcmk_sched_notif.c create_notifications(pe_resource_t * rsc, notify_data_t * n_data, pe_working_set_t * data_set) n_data 658 lib/pacemaker/pcmk_sched_notif.c enum action_tasks task = text2task(n_data->action); n_data 665 lib/pacemaker/pcmk_sched_notif.c create_notifications(child, n_data, data_set); n_data 685 lib/pacemaker/pcmk_sched_notif.c add_notify_data_to_action_meta(n_data, op); n_data 695 lib/pacemaker/pcmk_sched_notif.c if (n_data->start == NULL) { n_data 697 lib/pacemaker/pcmk_sched_notif.c n_data->action, rsc->id, role2text(rsc->role), role2text(rsc->next_role)); n_data 702 lib/pacemaker/pcmk_sched_notif.c if (n_data->promote == NULL) { n_data 704 lib/pacemaker/pcmk_sched_notif.c n_data->action, rsc->id, role2text(rsc->role), role2text(rsc->next_role)); n_data 709 lib/pacemaker/pcmk_sched_notif.c if (n_data->demote == NULL) { n_data 711 lib/pacemaker/pcmk_sched_notif.c n_data->action, rsc->id, role2text(rsc->role), role2text(rsc->next_role)); n_data 723 lib/pacemaker/pcmk_sched_notif.c n_data->action, rsc->id, role2text(rsc->role), role2text(rsc->next_role)); n_data 744 lib/pacemaker/pcmk_sched_notif.c pe_notify(rsc, current_node, n_data->pre, n_data->pre_done, n_data, data_set); n_data 747 lib/pacemaker/pcmk_sched_notif.c pe_post_notify(rsc, current_node, n_data, data_set); n_data 777 lib/pacemaker/pcmk_sched_notif.c pe_notify(rsc, rsc->allocated_to, n_data->pre, n_data->pre_done, n_data, data_set); n_data 779 lib/pacemaker/pcmk_sched_notif.c pe_post_notify(rsc, rsc->allocated_to, n_data, data_set); n_data 785 lib/pacemaker/pcmk_sched_notif.c free_notification_data(notify_data_t * n_data) n_data 787 lib/pacemaker/pcmk_sched_notif.c if (n_data == NULL) { n_data 791 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->stop, free); n_data 792 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->start, free); n_data 793 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->demote, free); n_data 794 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->promote, free); n_data 795 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->promoted, free); n_data 796 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->unpromoted, free); n_data 797 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->active, free); n_data 798 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->inactive, free); n_data 799 lib/pacemaker/pcmk_sched_notif.c pcmk_free_nvpairs(n_data->keys); n_data 800 lib/pacemaker/pcmk_sched_notif.c free(n_data); n_data 808 lib/pacemaker/pcmk_sched_notif.c notify_data_t *n_data; n_data 811 lib/pacemaker/pcmk_sched_notif.c n_data = create_notification_boundaries(rsc, RSC_STOP, NULL, stonith_op, n_data 813 lib/pacemaker/pcmk_sched_notif.c collect_notification_data(rsc, TRUE, FALSE, n_data); n_data 814 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_stop_resource", rsc->id); n_data 815 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_stop_uname", action->node->details->uname); n_data 816 lib/pacemaker/pcmk_sched_notif.c create_notifications(uber_parent(rsc), n_data, data_set); n_data 817 lib/pacemaker/pcmk_sched_notif.c free_notification_data(n_data);