Example #1
0
xmlNode *
create_node_state(const char *uname, const char *ha_state, const char *ccm_state,
                  const char *crmd_state, const char *join_state, const char *exp_state,
                  gboolean clear_shutdown, const char *src)
{
    xmlNode *node_state = create_xml_node(NULL, XML_CIB_TAG_STATE);

    crm_trace("%s Creating node state entry for %s", src, uname);
    set_uuid(node_state, XML_ATTR_UUID, uname);

    if (crm_element_value(node_state, XML_ATTR_UUID) == NULL) {
        crm_debug("Node %s is not a cluster member", uname);
        free_xml(node_state);
        return NULL;
    }

    crm_xml_add(node_state, XML_ATTR_UNAME, uname);
    crm_xml_add(node_state, XML_CIB_ATTR_HASTATE, ha_state);
    crm_xml_add(node_state, XML_CIB_ATTR_INCCM, ccm_state);
    crm_xml_add(node_state, XML_CIB_ATTR_CRMDSTATE, crmd_state);
    crm_xml_add(node_state, XML_CIB_ATTR_JOINSTATE, join_state);
    crm_xml_add(node_state, XML_CIB_ATTR_EXPSTATE, exp_state);
    crm_xml_add(node_state, XML_ATTR_ORIGIN, src);

    if (clear_shutdown) {
        crm_xml_add(node_state, XML_CIB_ATTR_SHUTDOWN, "0");
    }

    crm_log_xml_trace(node_state, "created");

    return node_state;
}
Example #2
0
void
create_node_entry(const char *uuid, const char *uname, const char *type)
{

    /* make sure a node entry exists for the new node
     *
     * this will add anyone except the first ever node in the cluster
     *   since it will also be the DC which doesnt go through the
     *   join process (with itself).  We can include a special case
     *   later if desired.
     */
    xmlNode *tmp1 = create_xml_node(NULL, XML_CIB_TAG_NODE);

    crm_trace("Creating node entry for %s", uname);
    set_uuid(tmp1, XML_ATTR_UUID, uname);

    crm_xml_add(tmp1, XML_ATTR_UNAME, uname);
    crm_xml_add(tmp1, XML_ATTR_TYPE, type);

    fsa_cib_anon_update(XML_CIB_TAG_NODES, tmp1,
                        cib_scope_local | cib_quorum_override | cib_can_create);

    free_xml(tmp1);

}
Example #3
0
void
finalize_join_for(gpointer key, gpointer value, gpointer user_data)
{
    xmlNode *acknak = NULL;
    xmlNode *tmp1 = NULL;
    crm_node_t *join_node = value;
    const char *join_to = join_node->uname;

    if(join_node->join != crm_join_integrated) {
        crm_trace("Skipping %s in state %d", join_to, join_node->join);
        return;
    }

    /* make sure a node entry exists for the new node */
    crm_trace("Creating node entry for %s", join_to);

    tmp1 = create_xml_node(NULL, XML_CIB_TAG_NODE);
    set_uuid(tmp1, XML_ATTR_UUID, join_node);
    crm_xml_add(tmp1, XML_ATTR_UNAME, join_to);

    fsa_cib_anon_update(XML_CIB_TAG_NODES, tmp1,
                        cib_scope_local | cib_quorum_override | cib_can_create);
    free_xml(tmp1);

    join_node = crm_get_peer(0, join_to);
    if (crm_is_peer_active(join_node) == FALSE) {
        /*
         * NACK'ing nodes that the membership layer doesn't know about yet
         * simply creates more churn
         *
         * Better to leave them waiting and let the join restart when
         * the new membership event comes in
         *
         * All other NACKs (due to versions etc) should still be processed
         */
        crm_update_peer_expected(__FUNCTION__, join_node, CRMD_JOINSTATE_PENDING);
        return;
    }

    /* send the ack/nack to the node */
    acknak = create_request(CRM_OP_JOIN_ACKNAK, NULL, join_to,
                            CRM_SYSTEM_CRMD, CRM_SYSTEM_DC, NULL);
    crm_xml_add_int(acknak, F_CRM_JOIN_ID, current_join_id);

    crm_debug("join-%d: ACK'ing join request from %s",
              current_join_id, join_to);
    crm_xml_add(acknak, CRM_OP_JOIN_ACKNAK, XML_BOOLEAN_TRUE);
    crm_update_peer_join(__FUNCTION__, join_node, crm_join_finalized);
    crm_update_peer_expected(__FUNCTION__, join_node, CRMD_JOINSTATE_MEMBER);

    send_cluster_message(crm_get_peer(0, join_to), crm_msg_crmd, acknak, TRUE);
    free_xml(acknak);
    return;
}
void LanBattleDataNotice::MergeFrom(const LanBattleDataNotice& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_uuid()) {
      set_uuid(from.uuid());
    }
    if (from.has_battleinfo()) {
      mutable_battleinfo()->::message::BattleInfo::MergeFrom(from.battleinfo());
    }
  }
}
void LanSyncUserInfoNotice::MergeFrom(const LanSyncUserInfoNotice& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_uuid()) {
      set_uuid(from.uuid());
    }
    if (from.has_userinfo()) {
      mutable_userinfo()->::message::LanUserInfoData::MergeFrom(from.userinfo());
    }
  }
}
Example #6
0
static void get_ext2_info(blkid_dev dev, unsigned char *buf)
{
	struct ext2_super_block *es = (struct ext2_super_block *) buf;
	const char *label = 0;

	DBG(DEBUG_PROBE, printf("ext2_sb.compat = %08X:%08X:%08X\n",
		   blkid_le32(es->s_feature_compat),
		   blkid_le32(es->s_feature_incompat),
		   blkid_le32(es->s_feature_ro_compat)));

	if (strlen(es->s_volume_name))
		label = es->s_volume_name;
	blkid_set_tag(dev, "LABEL", label, sizeof(es->s_volume_name));

	set_uuid(dev, es->s_uuid);
}
Example #7
0
// new object
static VALUE new_rack_io(http_request_s *request, VALUE env) {
  VALUE rack_io;
  if (request->body_file > 0) {
    rack_io = rb_funcall2(rRackFileIO, new_func_id, 0, NULL);
    rb_ivar_set(rack_io, io_id, ULONG2NUM(request->body_file));
    lseek(request->body_file, 0, SEEK_SET);
  } else {
    rack_io = rb_funcall2(rRackStrIO, new_func_id, 0, NULL);
    rb_ivar_set(rack_io, io_id, ULONG2NUM(((intptr_t)request->body_str)));
    // fprintf(stderr, "rack body IO (%lu, %p):%.*s\n", request->content_length,
    //         request->body_str, (int)request->content_length,
    //         request->body_str);
  }
  set_uuid(rack_io, request);
  set_pos(rack_io, 0);
  rb_ivar_set(rack_io, end_id, ULONG2NUM(request->content_length));
  rb_ivar_set(rack_io, env_id, env);

  return rack_io;
}
Example #8
0
xmlNode *
do_update_node_cib(crm_node_t * node, int flags, xmlNode * parent, const char *source)
{
    const char *value = NULL;
    xmlNode *node_state;

    if (is_set(node->flags, crm_remote_node)) {
        return simple_remote_node_status(node->uname, parent, source);
    }

    if (!node->state) {
        crm_info("Node update for %s cancelled: no state, not seen yet", node->uname);
       return NULL;
    }

    node_state = create_xml_node(parent, XML_CIB_TAG_STATE);
    set_uuid(node_state, XML_ATTR_UUID, node);

    if (crm_element_value(node_state, XML_ATTR_UUID) == NULL) {
        crm_info("Node update for %s cancelled: no id", node->uname);
        free_xml(node_state);
        return NULL;
    }

    crm_xml_add(node_state, XML_ATTR_UNAME, node->uname);

    if (flags & node_update_cluster) {
        if (safe_str_eq(node->state, CRM_NODE_ACTIVE)) {
            value = XML_BOOLEAN_YES;
        } else if (node->state) {
            value = XML_BOOLEAN_NO;
        } else {
            value = NULL;
        }
        crm_xml_add(node_state, XML_NODE_IN_CLUSTER, value);
    }

    if (flags & node_update_peer) {
        value = OFFLINESTATUS;
        if (node->processes & proc_flags) {
            value = ONLINESTATUS;
        }
        crm_xml_add(node_state, XML_NODE_IS_PEER, value);
    }

    if (flags & node_update_join) {
        if(node->join <= crm_join_none) {
            value = CRMD_JOINSTATE_DOWN;
        } else {
            value = CRMD_JOINSTATE_MEMBER;
        }
        crm_xml_add(node_state, XML_NODE_JOIN_STATE, value);
    }

    if (flags & node_update_expected) {
        crm_xml_add(node_state, XML_NODE_EXPECTED, node->expected);
    }

    crm_xml_add(node_state, XML_ATTR_ORIGIN, source);

    return node_state;
}