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 319 lib/pacemaker/pcmk_sched_notif.c pe__set_action_flags(n_data->pre, pe_action_pseudo|pe_action_runnable); n_data 321 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre->meta, "notify_type", "pre"); n_data 322 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre->meta, "notify_operation", n_data->action); n_data 324 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre->meta, "notify_key_type", "pre"); n_data 325 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre->meta, "notify_key_operation", start->task); n_data 329 lib/pacemaker/pcmk_sched_notif.c n_data->pre_done = custom_action(rsc, key, RSC_NOTIFIED, NULL, n_data 332 lib/pacemaker/pcmk_sched_notif.c pe__set_action_flags(n_data->pre_done, n_data 335 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre_done->meta, "notify_type", "pre"); n_data 336 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre_done->meta, "notify_operation", n_data->action); n_data 338 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre_done->meta, "notify_key_type", "confirmed-pre"); n_data 339 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->pre_done->meta, "notify_key_operation", start->task); n_data 341 lib/pacemaker/pcmk_sched_notif.c order_actions(n_data->pre_done, start, pe_order_optional); n_data 342 lib/pacemaker/pcmk_sched_notif.c order_actions(n_data->pre, n_data->pre_done, pe_order_optional); n_data 348 lib/pacemaker/pcmk_sched_notif.c n_data->post = custom_action(rsc, key, RSC_NOTIFY, NULL, n_data 352 lib/pacemaker/pcmk_sched_notif.c n_data->post->priority = INFINITY; n_data 353 lib/pacemaker/pcmk_sched_notif.c pe__set_action_flags(n_data->post, pe_action_pseudo); n_data 355 lib/pacemaker/pcmk_sched_notif.c pe__set_action_flags(n_data->post, pe_action_runnable); n_data 357 lib/pacemaker/pcmk_sched_notif.c pe__clear_action_flags(n_data->post, pe_action_runnable); n_data 360 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post->meta, "notify_type", "post"); n_data 361 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post->meta, "notify_operation", n_data->action); n_data 363 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post->meta, "notify_key_type", "post"); n_data 364 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post->meta, "notify_key_operation", end->task); n_data 368 lib/pacemaker/pcmk_sched_notif.c n_data->post_done = custom_action(rsc, key, RSC_NOTIFIED, NULL, n_data 372 lib/pacemaker/pcmk_sched_notif.c n_data->post_done->priority = INFINITY; n_data 373 lib/pacemaker/pcmk_sched_notif.c pe__set_action_flags(n_data->post_done, pe_action_pseudo); n_data 375 lib/pacemaker/pcmk_sched_notif.c pe__set_action_flags(n_data->post_done, pe_action_runnable); n_data 377 lib/pacemaker/pcmk_sched_notif.c pe__clear_action_flags(n_data->post_done, pe_action_runnable); n_data 380 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post_done->meta, "notify_type", "post"); n_data 381 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post_done->meta, "notify_operation", n_data->action); n_data 383 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post_done->meta, "notify_key_type", "confirmed-post"); n_data 384 lib/pacemaker/pcmk_sched_notif.c add_hash_param(n_data->post_done->meta, "notify_key_operation", end->task); n_data 386 lib/pacemaker/pcmk_sched_notif.c order_actions(end, n_data->post, pe_order_implies_then); n_data 387 lib/pacemaker/pcmk_sched_notif.c order_actions(n_data->post, n_data->post_done, pe_order_implies_then); n_data 391 lib/pacemaker/pcmk_sched_notif.c order_actions(n_data->pre_done, n_data->post, pe_order_optional); n_data 393 lib/pacemaker/pcmk_sched_notif.c return n_data; n_data 398 lib/pacemaker/pcmk_sched_notif.c notify_data_t * n_data) n_data 401 lib/pacemaker/pcmk_sched_notif.c if(n_data->allowed_nodes == NULL) { n_data 402 lib/pacemaker/pcmk_sched_notif.c n_data->allowed_nodes = rsc->allowed_nodes; n_data 411 lib/pacemaker/pcmk_sched_notif.c collect_notification_data(child, state, activity, n_data); n_data 430 lib/pacemaker/pcmk_sched_notif.c n_data->inactive = g_list_prepend(n_data->inactive, entry); n_data 433 lib/pacemaker/pcmk_sched_notif.c n_data->active = g_list_prepend(n_data->active, entry); n_data 436 lib/pacemaker/pcmk_sched_notif.c n_data->unpromoted = g_list_prepend(n_data->unpromoted, entry); n_data 437 lib/pacemaker/pcmk_sched_notif.c n_data->active = g_list_prepend(n_data->active, n_data 441 lib/pacemaker/pcmk_sched_notif.c n_data->promoted = g_list_prepend(n_data->promoted, entry); n_data 442 lib/pacemaker/pcmk_sched_notif.c n_data->active = g_list_prepend(n_data->active, n_data 478 lib/pacemaker/pcmk_sched_notif.c n_data->start = g_list_prepend(n_data->start, entry); n_data 481 lib/pacemaker/pcmk_sched_notif.c n_data->stop = g_list_prepend(n_data->stop, entry); n_data 484 lib/pacemaker/pcmk_sched_notif.c n_data->promote = g_list_prepend(n_data->promote, entry); n_data 487 lib/pacemaker/pcmk_sched_notif.c n_data->demote = g_list_prepend(n_data->demote, entry); n_data 498 lib/pacemaker/pcmk_sched_notif.c #define add_notify_env(n_data, key, value) do { \ n_data 499 lib/pacemaker/pcmk_sched_notif.c n_data->keys = pcmk_prepend_nvpair(n_data->keys, key, value); \ n_data 502 lib/pacemaker/pcmk_sched_notif.c #define add_notify_env_free(n_data, key, value) do { \ n_data 503 lib/pacemaker/pcmk_sched_notif.c n_data->keys = pcmk_prepend_nvpair(n_data->keys, key, value); \ n_data 517 lib/pacemaker/pcmk_sched_notif.c notify_data_t *n_data, n_data 527 lib/pacemaker/pcmk_sched_notif.c n_data->stop = expand_list(n_data->stop, &rsc_list, &node_list); n_data 529 lib/pacemaker/pcmk_sched_notif.c && pcmk__str_eq(n_data->action, RSC_STOP, pcmk__str_casei)) { n_data 532 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_stop_resource", rsc_list); n_data 533 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_stop_uname", node_list); n_data 535 lib/pacemaker/pcmk_sched_notif.c if ((n_data->start != NULL) n_data 536 lib/pacemaker/pcmk_sched_notif.c && pcmk__str_eq(n_data->action, RSC_START, pcmk__str_casei)) { n_data 539 lib/pacemaker/pcmk_sched_notif.c n_data->start = expand_list(n_data->start, &rsc_list, &node_list); n_data 540 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_start_resource", rsc_list); n_data 541 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_start_uname", node_list); n_data 543 lib/pacemaker/pcmk_sched_notif.c if ((n_data->demote != NULL) n_data 544 lib/pacemaker/pcmk_sched_notif.c && pcmk__str_eq(n_data->action, RSC_DEMOTE, pcmk__str_casei)) { n_data 547 lib/pacemaker/pcmk_sched_notif.c n_data->demote = expand_list(n_data->demote, &rsc_list, &node_list); n_data 548 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_demote_resource", rsc_list); n_data 549 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_demote_uname", node_list); n_data 551 lib/pacemaker/pcmk_sched_notif.c if ((n_data->promote != NULL) n_data 552 lib/pacemaker/pcmk_sched_notif.c && pcmk__str_eq(n_data->action, RSC_PROMOTE, pcmk__str_casei)) { n_data 555 lib/pacemaker/pcmk_sched_notif.c n_data->promote = expand_list(n_data->promote, &rsc_list, &node_list); n_data 556 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_promote_resource", rsc_list); n_data 557 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_promote_uname", node_list); n_data 559 lib/pacemaker/pcmk_sched_notif.c n_data->active = expand_list(n_data->active, &rsc_list, &node_list); n_data 560 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_active_resource", rsc_list); n_data 561 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_active_uname", node_list); n_data 563 lib/pacemaker/pcmk_sched_notif.c n_data->unpromoted = expand_list(n_data->unpromoted, &rsc_list, &node_list); n_data 564 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_unpromoted_resource", rsc_list); n_data 565 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_unpromoted_uname", node_list); n_data 568 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_slave_resource", rsc_list); n_data 569 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_slave_uname", node_list); n_data 571 lib/pacemaker/pcmk_sched_notif.c n_data->promoted = expand_list(n_data->promoted, &rsc_list, &node_list); n_data 572 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_promoted_resource", rsc_list); n_data 573 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_promoted_uname", node_list); n_data 576 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_master_resource", rsc_list); n_data 577 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_master_uname", node_list); n_data 579 lib/pacemaker/pcmk_sched_notif.c n_data->inactive = expand_list(n_data->inactive, &rsc_list, NULL); n_data 580 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_inactive_resource", rsc_list); n_data 582 lib/pacemaker/pcmk_sched_notif.c nodes = g_hash_table_get_values(n_data->allowed_nodes); n_data 591 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_available_uname", node_list); n_data 597 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_all_hosts", metal_list); n_data 601 lib/pacemaker/pcmk_sched_notif.c add_notify_env_free(n_data, "notify_all_uname", node_list); n_data 603 lib/pacemaker/pcmk_sched_notif.c if (required && n_data->pre) { n_data 604 lib/pacemaker/pcmk_sched_notif.c pe__clear_action_flags(n_data->pre, pe_action_optional); n_data 605 lib/pacemaker/pcmk_sched_notif.c pe__clear_action_flags(n_data->pre_done, pe_action_optional); n_data 608 lib/pacemaker/pcmk_sched_notif.c if (required && n_data->post) { n_data 609 lib/pacemaker/pcmk_sched_notif.c pe__clear_action_flags(n_data->post, pe_action_optional); n_data 610 lib/pacemaker/pcmk_sched_notif.c pe__clear_action_flags(n_data->post_done, pe_action_optional); n_data 637 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 642 lib/pacemaker/pcmk_sched_notif.c enum action_tasks task = text2task(n_data->action); n_data 649 lib/pacemaker/pcmk_sched_notif.c create_notifications(child, n_data, data_set); n_data 669 lib/pacemaker/pcmk_sched_notif.c add_notify_data_to_action_meta(n_data, op); n_data 679 lib/pacemaker/pcmk_sched_notif.c if (n_data->start == NULL) { n_data 681 lib/pacemaker/pcmk_sched_notif.c n_data->action, rsc->id, role2text(rsc->role), role2text(rsc->next_role)); n_data 686 lib/pacemaker/pcmk_sched_notif.c if (n_data->promote == NULL) { n_data 688 lib/pacemaker/pcmk_sched_notif.c n_data->action, rsc->id, role2text(rsc->role), role2text(rsc->next_role)); n_data 693 lib/pacemaker/pcmk_sched_notif.c if (n_data->demote == NULL) { n_data 695 lib/pacemaker/pcmk_sched_notif.c n_data->action, rsc->id, role2text(rsc->role), role2text(rsc->next_role)); n_data 707 lib/pacemaker/pcmk_sched_notif.c n_data->action, rsc->id, role2text(rsc->role), role2text(rsc->next_role)); n_data 728 lib/pacemaker/pcmk_sched_notif.c pe_notify(rsc, current_node, n_data->pre, n_data->pre_done, n_data, data_set); n_data 731 lib/pacemaker/pcmk_sched_notif.c pe_post_notify(rsc, current_node, n_data, data_set); n_data 761 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 763 lib/pacemaker/pcmk_sched_notif.c pe_post_notify(rsc, rsc->allocated_to, n_data, data_set); n_data 769 lib/pacemaker/pcmk_sched_notif.c free_notification_data(notify_data_t * n_data) n_data 771 lib/pacemaker/pcmk_sched_notif.c if (n_data == NULL) { n_data 775 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->stop, free); n_data 776 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->start, free); n_data 777 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->demote, free); n_data 778 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->promote, free); n_data 779 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->promoted, free); n_data 780 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->unpromoted, free); n_data 781 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->active, free); n_data 782 lib/pacemaker/pcmk_sched_notif.c g_list_free_full(n_data->inactive, free); n_data 783 lib/pacemaker/pcmk_sched_notif.c pcmk_free_nvpairs(n_data->keys); n_data 784 lib/pacemaker/pcmk_sched_notif.c free(n_data); n_data 792 lib/pacemaker/pcmk_sched_notif.c notify_data_t *n_data; n_data 795 lib/pacemaker/pcmk_sched_notif.c n_data = create_notification_boundaries(rsc, RSC_STOP, NULL, stonith_op, n_data 797 lib/pacemaker/pcmk_sched_notif.c collect_notification_data(rsc, TRUE, FALSE, n_data); n_data 798 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_stop_resource", rsc->id); n_data 799 lib/pacemaker/pcmk_sched_notif.c add_notify_env(n_data, "notify_stop_uname", action->node->details->uname); n_data 800 lib/pacemaker/pcmk_sched_notif.c create_notifications(uber_parent(rsc), n_data, data_set); n_data 801 lib/pacemaker/pcmk_sched_notif.c free_notification_data(n_data);