n_data 311 lib/pacemaker/libpacemaker_private.h void pcmk__create_notifications(pe_resource_t *rsc, notify_data_t *n_data); n_data 320 lib/pacemaker/libpacemaker_private.h void pcmk__free_notification_data(notify_data_t *n_data); n_data 265 lib/pacemaker/pcmk_sched_notif.c add_notify_data_to_action_meta(notify_data_t *n_data, pe_action_t *action) n_data 267 lib/pacemaker/pcmk_sched_notif.c for (GSList *item = n_data->keys; item; item = item->next) { n_data 316 lib/pacemaker/pcmk_sched_notif.c pe_action_t *notify_done, notify_data_t *n_data) n_data 356 lib/pacemaker/pcmk_sched_notif.c add_notify_data_to_action_meta(n_data, notify_action); n_data 374 lib/pacemaker/pcmk_sched_notif.c notify_data_t *n_data) n_data 379 lib/pacemaker/pcmk_sched_notif.c notify = new_notify_action(rsc, node, n_data->post, n_data->post_done, n_data 380 lib/pacemaker/pcmk_sched_notif.c n_data); n_data 386 lib/pacemaker/pcmk_sched_notif.c if (n_data->post_done == NULL) { n_data 399 lib/pacemaker/pcmk_sched_notif.c order_actions(n_data->post_done, mon, pe_order_optional); n_data 438 lib/pacemaker/pcmk_sched_notif.c notify_data_t *n_data = NULL; n_data 444 lib/pacemaker/pcmk_sched_notif.c n_data = calloc(1, sizeof(notify_data_t)); n_data 445 lib/pacemaker/pcmk_sched_notif.c CRM_ASSERT(n_data != NULL); n_data 447 lib/pacemaker/pcmk_sched_notif.c n_data->action = task; n_data 452 lib/pacemaker/pcmk_sched_notif.c n_data->pre = new_notify_pseudo_action(rsc, action, RSC_NOTIFY, "pre"); n_data 453 lib/pacemaker/pcmk_sched_notif.c pe__set_action_flags(n_data->pre, pe_action_runnable); n_data 454 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre->meta, "notify_type", "pre"); n_data 455 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre->meta, "notify_operation", n_data->action); n_data 458 lib/pacemaker/pcmk_sched_notif.c n_data->pre_done = new_notify_pseudo_action(rsc, action, RSC_NOTIFIED, n_data 460 lib/pacemaker/pcmk_sched_notif.c pe__set_action_flags(n_data->pre_done, pe_action_runnable); n_data 461 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre_done->meta, "notify_type", "pre"); n_data 462 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre_done->meta, n_data 463 lib/pacemaker/pcmk_sched_notif.c "notify_operation", n_data->action); n_data 466 lib/pacemaker/pcmk_sched_notif.c order_actions(n_data->pre, n_data->pre_done, pe_order_optional); n_data 467 lib/pacemaker/pcmk_sched_notif.c order_actions(n_data->pre_done, action, pe_order_optional); n_data 473 lib/pacemaker/pcmk_sched_notif.c n_data->post = new_notify_pseudo_action(rsc, complete, RSC_NOTIFY, n_data 475 lib/pacemaker/pcmk_sched_notif.c n_data->post->priority = INFINITY; n_data 477 lib/pacemaker/pcmk_sched_notif.c pe__set_action_flags(n_data->post, pe_action_runnable); n_data 479 lib/pacemaker/pcmk_sched_notif.c pe__clear_action_flags(n_data->post, pe_action_runnable); n_data 481 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post->meta, "notify_type", "post"); n_data 482 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post->meta, "notify_operation", n_data->action); n_data 485 lib/pacemaker/pcmk_sched_notif.c n_data->post_done = new_notify_pseudo_action(rsc, complete, n_data 488 lib/pacemaker/pcmk_sched_notif.c n_data->post_done->priority = INFINITY; n_data 490 lib/pacemaker/pcmk_sched_notif.c pe__set_action_flags(n_data->post_done, pe_action_runnable); n_data 492 lib/pacemaker/pcmk_sched_notif.c pe__clear_action_flags(n_data->post_done, pe_action_runnable); n_data 494 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post_done->meta, "notify_type", "post"); n_data 495 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post_done->meta, n_data 496 lib/pacemaker/pcmk_sched_notif.c "notify_operation", n_data->action); n_data 499 lib/pacemaker/pcmk_sched_notif.c order_actions(complete, n_data->post, pe_order_implies_then); n_data 500 lib/pacemaker/pcmk_sched_notif.c order_actions(n_data->post, n_data->post_done, pe_order_implies_then); n_data 505 lib/pacemaker/pcmk_sched_notif.c order_actions(n_data->pre_done, n_data->post, pe_order_optional); n_data 507 lib/pacemaker/pcmk_sched_notif.c return n_data; n_data 540 lib/pacemaker/pcmk_sched_notif.c collect_resource_data(pe_resource_t *rsc, bool activity, notify_data_t *n_data) n_data 546 lib/pacemaker/pcmk_sched_notif.c if (n_data->allowed_nodes == NULL) { n_data 547 lib/pacemaker/pcmk_sched_notif.c n_data->allowed_nodes = rsc->allowed_nodes; n_data 555 lib/pacemaker/pcmk_sched_notif.c collect_resource_data(child, activity, n_data); n_data 570 lib/pacemaker/pcmk_sched_notif.c n_data->inactive = g_list_prepend(n_data->inactive, entry); n_data 574 lib/pacemaker/pcmk_sched_notif.c n_data->active = g_list_prepend(n_data->active, entry); n_data 578 lib/pacemaker/pcmk_sched_notif.c n_data->unpromoted = g_list_prepend(n_data->unpromoted, entry); n_data 579 lib/pacemaker/pcmk_sched_notif.c n_data->active = g_list_prepend(n_data->active, n_data 584 lib/pacemaker/pcmk_sched_notif.c n_data->promoted = g_list_prepend(n_data->promoted, entry); n_data 585 lib/pacemaker/pcmk_sched_notif.c n_data->active = g_list_prepend(n_data->active, n_data 619 lib/pacemaker/pcmk_sched_notif.c n_data->start = g_list_prepend(n_data->start, entry); n_data 622 lib/pacemaker/pcmk_sched_notif.c n_data->stop = g_list_prepend(n_data->stop, entry); n_data 625 lib/pacemaker/pcmk_sched_notif.c n_data->promote = g_list_prepend(n_data->promote, entry); n_data 628 lib/pacemaker/pcmk_sched_notif.c n_data->demote = g_list_prepend(n_data->demote, entry); n_data 638 lib/pacemaker/pcmk_sched_notif.c #define add_notify_env(n_data, key, value) do { \ n_data 639 lib/pacemaker/pcmk_sched_notif.c n_data->keys = pcmk_prepend_nvpair(n_data->keys, key, value); \ n_data 642 lib/pacemaker/pcmk_sched_notif.c #define add_notify_env_free(n_data, key, value) do { \ n_data 643 lib/pacemaker/pcmk_sched_notif.c n_data->keys = pcmk_prepend_nvpair(n_data->keys, key, value); \ n_data 655 lib/pacemaker/pcmk_sched_notif.c add_notif_keys(pe_resource_t *rsc, notify_data_t *n_data) n_data 664 lib/pacemaker/pcmk_sched_notif.c n_data->stop = notify_entries_to_strings(n_data->stop, n_data 667 lib/pacemaker/pcmk_sched_notif.c && pcmk__str_eq(n_data->action, RSC_STOP, pcmk__str_casei)) { n_data 670 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_stop_resource", rsc_list); n_data 671 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_stop_uname", node_list); n_data 673 lib/pacemaker/pcmk_sched_notif.c if ((n_data->start != NULL) n_data 674 lib/pacemaker/pcmk_sched_notif.c && pcmk__str_eq(n_data->action, RSC_START, pcmk__str_none)) { n_data 677 lib/pacemaker/pcmk_sched_notif.c n_data->start = notify_entries_to_strings(n_data->start, n_data 679 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_start_resource", rsc_list); n_data 680 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_start_uname", node_list); n_data 682 lib/pacemaker/pcmk_sched_notif.c if ((n_data->demote != NULL) n_data 683 lib/pacemaker/pcmk_sched_notif.c && pcmk__str_eq(n_data->action, RSC_DEMOTE, pcmk__str_none)) { n_data 686 lib/pacemaker/pcmk_sched_notif.c n_data->demote = notify_entries_to_strings(n_data->demote, n_data 688 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_demote_resource", rsc_list); n_data 689 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_demote_uname", node_list); n_data 691 lib/pacemaker/pcmk_sched_notif.c if ((n_data->promote != NULL) n_data 692 lib/pacemaker/pcmk_sched_notif.c && pcmk__str_eq(n_data->action, RSC_PROMOTE, pcmk__str_none)) { n_data 695 lib/pacemaker/pcmk_sched_notif.c n_data->promote = notify_entries_to_strings(n_data->promote, n_data 697 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_promote_resource", rsc_list); n_data 698 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_promote_uname", node_list); n_data 700 lib/pacemaker/pcmk_sched_notif.c n_data->active = notify_entries_to_strings(n_data->active, n_data 702 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_active_resource", rsc_list); n_data 703 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_active_uname", node_list); n_data 705 lib/pacemaker/pcmk_sched_notif.c n_data->unpromoted = notify_entries_to_strings(n_data->unpromoted, n_data 707 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_unpromoted_resource", rsc_list); n_data 708 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_unpromoted_uname", node_list); n_data 711 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_slave_resource", rsc_list); n_data 712 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_slave_uname", node_list); n_data 714 lib/pacemaker/pcmk_sched_notif.c n_data->promoted = notify_entries_to_strings(n_data->promoted, n_data 716 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_promoted_resource", rsc_list); n_data 717 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_promoted_uname", node_list); n_data 720 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_master_resource", rsc_list); n_data 721 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_master_uname", node_list); n_data 723 lib/pacemaker/pcmk_sched_notif.c n_data->inactive = notify_entries_to_strings(n_data->inactive, n_data 725 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_inactive_resource", rsc_list); n_data 727 lib/pacemaker/pcmk_sched_notif.c nodes = g_hash_table_get_values(n_data->allowed_nodes); n_data 736 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_available_uname", node_list); n_data 742 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_all_hosts", metal_list); n_data 746 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_all_uname", node_list); n_data 748 lib/pacemaker/pcmk_sched_notif.c if (required && (n_data->pre != NULL)) { n_data 749 lib/pacemaker/pcmk_sched_notif.c pe__clear_action_flags(n_data->pre, pe_action_optional); n_data 750 lib/pacemaker/pcmk_sched_notif.c pe__clear_action_flags(n_data->pre_done, pe_action_optional); n_data 753 lib/pacemaker/pcmk_sched_notif.c if (required && (n_data->post != NULL)) { n_data 754 lib/pacemaker/pcmk_sched_notif.c pe__clear_action_flags(n_data->post, pe_action_optional); n_data 755 lib/pacemaker/pcmk_sched_notif.c pe__clear_action_flags(n_data->post_done, pe_action_optional); n_data 789 lib/pacemaker/pcmk_sched_notif.c create_notify_actions(pe_resource_t *rsc, notify_data_t *n_data) n_data 794 lib/pacemaker/pcmk_sched_notif.c enum action_tasks task = text2task(n_data->action); n_data 798 lib/pacemaker/pcmk_sched_notif.c g_list_foreach(rsc->children, (GFunc) create_notify_actions, n_data); n_data 812 lib/pacemaker/pcmk_sched_notif.c add_notify_data_to_action_meta(n_data, op); n_data 823 lib/pacemaker/pcmk_sched_notif.c if (n_data->start == NULL) { n_data 825 lib/pacemaker/pcmk_sched_notif.c rsc->id, n_data->action); n_data 831 lib/pacemaker/pcmk_sched_notif.c if (n_data->promote == NULL) { n_data 833 lib/pacemaker/pcmk_sched_notif.c rsc->id, n_data->action); n_data 839 lib/pacemaker/pcmk_sched_notif.c if (n_data->demote == NULL) { n_data 841 lib/pacemaker/pcmk_sched_notif.c rsc->id, n_data->action); n_data 852 lib/pacemaker/pcmk_sched_notif.c rsc->id, n_data->action); n_data 872 lib/pacemaker/pcmk_sched_notif.c new_notify_action(rsc, current_node, n_data->pre, n_data 873 lib/pacemaker/pcmk_sched_notif.c n_data->pre_done, n_data); n_data 877 lib/pacemaker/pcmk_sched_notif.c new_post_notify_action(rsc, current_node, n_data); n_data 908 lib/pacemaker/pcmk_sched_notif.c new_notify_action(rsc, rsc->allocated_to, n_data->pre, n_data 909 lib/pacemaker/pcmk_sched_notif.c n_data->pre_done, n_data); n_data 911 lib/pacemaker/pcmk_sched_notif.c new_post_notify_action(rsc, rsc->allocated_to, n_data); n_data 923 lib/pacemaker/pcmk_sched_notif.c pcmk__create_notifications(pe_resource_t *rsc, notify_data_t *n_data) n_data 925 lib/pacemaker/pcmk_sched_notif.c if ((rsc == NULL) || (n_data == NULL)) { n_data 928 lib/pacemaker/pcmk_sched_notif.c collect_resource_data(rsc, true, n_data); n_data 929 lib/pacemaker/pcmk_sched_notif.c add_notif_keys(rsc, n_data); n_data 930 lib/pacemaker/pcmk_sched_notif.c create_notify_actions(rsc, n_data); n_data 940 lib/pacemaker/pcmk_sched_notif.c pcmk__free_notification_data(notify_data_t *n_data) n_data 942 lib/pacemaker/pcmk_sched_notif.c if (n_data == NULL) { n_data 945 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->stop, free); n_data 946 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->start, free); n_data 947 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->demote, free); n_data 948 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->promote, free); n_data 949 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->promoted, free); n_data 950 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->unpromoted, free); n_data 951 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->active, free); n_data 952 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->inactive, free); n_data 953 lib/pacemaker/pcmk_sched_notif.c pcmk_free_nvpairs(n_data->keys); n_data 954 lib/pacemaker/pcmk_sched_notif.c free(n_data); n_data 975 lib/pacemaker/pcmk_sched_notif.c notify_data_t *n_data; n_data 978 lib/pacemaker/pcmk_sched_notif.c n_data = pcmk__clone_notif_pseudo_ops(rsc, RSC_STOP, NULL, stonith_op); n_data 979 lib/pacemaker/pcmk_sched_notif.c collect_resource_data(rsc, false, n_data); n_data 980 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_stop_resource", rsc->id); n_data 981 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_stop_uname", stop->node->details->uname); n_data 982 lib/pacemaker/pcmk_sched_notif.c create_notify_actions(uber_parent(rsc), n_data); n_data 983 lib/pacemaker/pcmk_sched_notif.c pcmk__free_notification_data(n_data);