示例#1
0
static int pcmk_load_ticket(struct ticket_config *tk)
{
	int rv;
	int64_t v;


	/* This here gets run during startup; testing that here means that
	 * normal operation won't be interrupted with that test. */
	test_atomicity();


	rv = crm_ticket_get(tk, "expires", &v);
	if (!rv) {
		secs2tv(unwall_ts(v), &tk->term_expires);
	}

	rv = crm_ticket_get(tk, "term", &v);
	if (!rv) {
		tk->current_term = v;
	}

	rv = crm_ticket_get(tk, "granted", &v);
	if (!rv) {
		tk->is_granted = v;
	}

	rv = crm_ticket_get(tk, "owner", &v);
	if (!rv) {
		/* No check, node could have been deconfigured. */
		if (!find_site_by_id(v, &tk->leader)) {
			/* Hmm, no site found for the ticket we have in the
			 * CIB!?
			 * Assume that the ticket belonged to us if it was
			 * granted here!
			 */
			log_warn("%s: no site matches; site got reconfigured?",
				tk->name);
			if (tk->is_granted) {
				log_warn("%s: granted here, assume it belonged to us",
					tk->name);
				tk->leader = local;
			}
		}
	}

	return rv;
}
示例#2
0
static int save_expires(struct ticket_config *tk, const char *name,
			const char *val)
{
	secs2tv(unwall_ts(atol(val)), &tk->term_expires);
	return 0;
}