示例#1
0
static const char *get_lock_status()
{
	if (VZMoptions.bintype != BIN_LOCAL)
		return "migrating";

	return isOptSet(OPT_COPY) ? "cloning" : "moving";
}
示例#2
0
std::vector<std::string>
CMDParser::getOptsString(std::string opt) {
  std::vector<std::string> opts;
  if(isOptSet(opt))
    for(unsigned int i = 0; i < _opts[opt]->size(); ++i)
      opts.push_back((*_opts[opt])[i]);
  return opts;
}
示例#3
0
std::vector<float>
CMDParser::getOptsFloat(std::string opt) {
  std::vector<float> opts;
  if(isOptSet(opt))
    for(unsigned int i = 0; i < _opts[opt]->size(); ++i)
      opts.push_back( (float) atof((*_opts[opt])[i].c_str()));
  return opts;
}
示例#4
0
int VEObj::lock()
{
	if (isOptSet(OPT_SKIP_LOCKVE))
		return 0;

	logger(LOG_ERR, "locking %s", ctid());

	lock_fd = vzctl2_env_lock_prvt(ctid(), priv, get_lock_status());
	if (lock_fd  == -2)
		return putErr(MIG_ERR_LOCK, MIG_MSG_LOCK,
			ctid(), "CT locked");
	else if (lock_fd < 0)
		return putErr(MIG_ERR_LOCK, MIG_MSG_LOCK,
			ctid(), vzctl2_get_last_error());

	return 0;
}
示例#5
0
int VEObj::init_existed()
{
	int rc;
	vzctl_env_status_t env_status;

	if (vzctl2_get_env_status(ctid(), &env_status, ENV_STATUS_ALL))
		return putErr(MIG_ERR_SYSTEM, MIG_MSG_NOSTATUS);

	if (!(env_status.mask & ENV_STATUS_EXISTS))
		return putErr(MIG_ERR_NOEXIST, MIG_MSG_NOEXIST, ctid());

	/* TODO: move to upper level */
	if (isOptSet(OPT_COPY) && (env_status.mask & ENV_STATUS_SUSPENDED))
		return putErr(MIG_ERR_SUSPEND, MIG_MSG_CLONE_FORBIDDEN_FOR_SUSPENDED);

	if ((rc = ve_data_load(m_ctid, &ve_data)))
		return rc;

	root = ve_data.root;
	priv = ve_data.priv;

	/* get VELAYOUT version */
	layout = vzctl2_env_layout_version((char *)priv);

	if (layout >= VZCTL_LAYOUT_5) {
		init_disks(ve_data);
	}

	/* get veformat */
	if ((veformat = vzctl2_get_veformat(priv)) == -1) {
		return putErr(MIG_ERR_VZCTL, "vzctl2_get_veformat(%s): %s",
			priv, vzctl2_get_last_error());
	}

	return 0;
}