| 535 | } |
| 536 | |
| 537 | xmlNode * |
| 538 | action2xml(action_t * action, gboolean as_input) |
| 539 | { |
| 540 | gboolean needs_node_info = TRUE; |
| 541 | xmlNode *action_xml = NULL; |
| 542 | xmlNode *args_xml = NULL; |
| 543 | char *action_id_s = NULL; |
| 544 | |
| 545 | if (action == NULL) { |
| 546 | return NULL; |
| 547 | } |
| 548 | |
| 549 | if (safe_str_eq(action->task, CRM_OP_FENCE)) { |
| 550 | action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT); |
| 551 | /* needs_node_info = FALSE; */ |
| 552 | |
| 553 | } else if (safe_str_eq(action->task, CRM_OP_SHUTDOWN)) { |
| 554 | action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT); |
| 555 | |
| 556 | } else if (safe_str_eq(action->task, CRM_OP_CLEAR_FAILCOUNT)) { |
| 557 | action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT); |
| 558 | |
| 559 | } else if (safe_str_eq(action->task, CRM_OP_LRM_REFRESH)) { |
| 560 | action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT); |
| 561 | |
| 562 | /* } else if(safe_str_eq(action->task, RSC_PROBED)) { */ |
| 563 | /* action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT); */ |
| 564 | |
| 565 | } else if (is_set(action->flags, pe_action_pseudo)) { |
| 566 | action_xml = create_xml_node(NULL, XML_GRAPH_TAG_PSEUDO_EVENT); |
| 567 | needs_node_info = FALSE; |
| 568 | |
| 569 | } else { |
| 570 | action_xml = create_xml_node(NULL, XML_GRAPH_TAG_RSC_OP); |
| 571 | } |
| 572 | |
| 573 | action_id_s = crm_itoa(action->id); |
| 574 | crm_xml_add(action_xml, XML_ATTR_ID, action_id_s); |
| 575 | free(action_id_s); |
| 576 | |
| 577 | crm_xml_add(action_xml, XML_LRM_ATTR_TASK, action->task); |
| 578 | if (action->rsc != NULL && action->rsc->clone_name != NULL) { |
| 579 | char *clone_key = NULL; |
| 580 | const char *interval_s = g_hash_table_lookup(action->meta, XML_LRM_ATTR_INTERVAL); |
| 581 | int interval = crm_parse_int(interval_s, "0"); |
| 582 | |
| 583 | if (safe_str_eq(action->task, RSC_NOTIFY)) { |
| 584 | const char *n_type = g_hash_table_lookup(action->meta, "notify_type"); |
| 585 | const char *n_task = g_hash_table_lookup(action->meta, "notify_operation"); |
| 586 | |
| 587 | CRM_CHECK(n_type != NULL, crm_err("No notify type value found for %s", action->uuid)); |
| 588 | CRM_CHECK(n_task != NULL, |
| 589 | crm_err("No notify operation value found for %s", action->uuid)); |
| 590 | clone_key = generate_notify_key(action->rsc->clone_name, n_type, n_task); |
| 591 | |
| 592 | } else { |
| 593 | clone_key = generate_op_key(action->rsc->clone_name, action->task, interval); |
| 594 | } |
no test coverage detected