static const char *get_lock_status() { if (VZMoptions.bintype != BIN_LOCAL) return "migrating"; return isOptSet(OPT_COPY) ? "cloning" : "moving"; }
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; }
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; }
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; }
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; }