mirror of
https://github.com/CHN-beta/nixos.git
synced 2024-10-23 04:38:44 +08:00
localPackages.hpcstat: fix
This commit is contained in:
parent
9efe69151c
commit
3b858d88ea
@ -1,11 +1,12 @@
|
||||
{
|
||||
stdenv, cmake, pkg-config, standalone ? false, makeWrapper,
|
||||
boost, fmt, sqlite-orm, nlohmann_json, zpp-bits, range-v3, nameof, openssh, sqlite, date, openxlsx, httplib
|
||||
boost, fmt, sqlite-orm, nlohmann_json, zpp-bits, range-v3, nameof, openssh, sqlite, date, openxlsx, httplib, openssl
|
||||
}: stdenv.mkDerivation
|
||||
{
|
||||
name = "hpcstat";
|
||||
src = ./.;
|
||||
buildInputs = [ boost fmt sqlite-orm nlohmann_json zpp-bits range-v3 nameof sqlite date openxlsx httplib ];
|
||||
buildInputs =
|
||||
[ boost fmt sqlite-orm nlohmann_json zpp-bits range-v3 nameof sqlite date openxlsx httplib openssl.dev ];
|
||||
nativeBuildInputs = [ cmake pkg-config makeWrapper ];
|
||||
postInstall =
|
||||
if standalone then "cp ${openssh}/bin/{ssh-add,ssh-keygen} $out/bin"
|
||||
|
@ -5,6 +5,7 @@ namespace hpcstat::lfs
|
||||
{
|
||||
std::optional<std::pair<unsigned, std::string>> bsub(std::vector<std::string> args);
|
||||
// JobId -> { SubmitTime, Status, CpuTime, JobName }
|
||||
std::optional<std::map<unsigned, std::tuple<std::string, std::string, double, std::string>>> bjobs_list();
|
||||
std::optional<std::map<unsigned, std::tuple<std::string, std::string, double, std::string>>>
|
||||
bjobs_list(bool finished_jobs_only = false);
|
||||
std::optional<std::string> bjobs_detail(unsigned jobid);
|
||||
}
|
||||
|
@ -44,7 +44,8 @@ namespace hpcstat::lfs
|
||||
}
|
||||
}
|
||||
}
|
||||
std::optional<std::map<unsigned, std::tuple<std::string, std::string, double, std::string>>> bjobs_list()
|
||||
std::optional<std::map<unsigned, std::tuple<std::string, std::string, double, std::string>>> bjobs_list
|
||||
(bool finished_jobs_only)
|
||||
{
|
||||
if
|
||||
(
|
||||
@ -70,7 +71,7 @@ namespace hpcstat::lfs
|
||||
for (auto& job : j["RECORDS"])
|
||||
{
|
||||
std::string status = job["STAT"];
|
||||
if (!std::set<std::string>{ "DONE", "EXIT" }.contains(status)) continue;
|
||||
if (finished_jobs_only && !std::set<std::string>{ "DONE", "EXIT" }.contains(status)) continue;
|
||||
std::string cpu_used_str = job["CPU_USED"];
|
||||
double cpu_used = 0;
|
||||
if (!cpu_used_str.empty())
|
||||
|
@ -77,7 +77,7 @@ int main(int argc, const char** argv)
|
||||
if (auto fp = ssh::fingerprint(); !fp) return 1;
|
||||
else if (auto session = env::env("XDG_SESSION_ID", true); !session)
|
||||
return 1;
|
||||
else if (auto all_jobs = lfs::bjobs_list(); !all_jobs) return 1;
|
||||
else if (auto all_jobs = lfs::bjobs_list(true); !all_jobs) return 1;
|
||||
else if
|
||||
(
|
||||
auto not_recorded = sql::finishjob_remove_existed
|
||||
|
@ -34,7 +34,8 @@ namespace hpcstat::push
|
||||
token,
|
||||
boost::urls::encode
|
||||
(
|
||||
fmt::format("{} {} {}", id, std::get<0>(info), std::get<1>(info)), boost::urls::unreserved_chars
|
||||
fmt::format("{} {} {}", std::get<1>(info), std::get<0>(info), id),
|
||||
boost::urls::unreserved_chars
|
||||
),
|
||||
users[user_string]
|
||||
);
|
||||
|
@ -171,8 +171,18 @@ namespace hpcstat::sql
|
||||
std::optional<SubmitJobData> result;
|
||||
long submit_date = [&]
|
||||
{
|
||||
std::chrono::system_clock::time_point submit_date;
|
||||
std::stringstream(submit_time) >> date::parse("%b %d %H:%M:%S %Y", submit_date);
|
||||
std::chrono::system_clock::time_point submit_date_with_local;
|
||||
std::stringstream(submit_time) >> date::parse("%b %d %H:%M:%S %Y", submit_date_with_local);
|
||||
date::zoned_time submit_date_with_zone
|
||||
(
|
||||
date::current_zone(),
|
||||
date::local_seconds
|
||||
{
|
||||
std::chrono::seconds(std::chrono::duration_cast<std::chrono::seconds>
|
||||
(submit_date_with_local.time_since_epoch()).count())
|
||||
}
|
||||
);
|
||||
auto submit_date = submit_date_with_zone.get_sys_time();
|
||||
return std::chrono::duration_cast<std::chrono::seconds>(submit_date.time_since_epoch()).count();
|
||||
}();
|
||||
auto submit_jobs = connection->template get_all<SubmitJobData>
|
||||
@ -317,7 +327,7 @@ namespace hpcstat::sql
|
||||
result[job_id] =
|
||||
{ std::get<3>(status), std::get<1>(status), job_in_submit->Key, job_in_submit->Subaccount };
|
||||
conn->remove_all<CheckJobData>();
|
||||
auto new_data = result
|
||||
auto new_data = *jobs_current
|
||||
| ranges::views::transform
|
||||
([](auto& it) { return CheckJobData{ .JobId = it.first, .Status = std::get<1>(it.second) }; })
|
||||
| ranges::to<std::vector<CheckJobData>>;
|
||||
|
@ -38,6 +38,7 @@ inputs:
|
||||
fi
|
||||
# check finishjob
|
||||
${ssh} jykang@hpc.xmu.edu.cn hpcstat finishjob
|
||||
${ssh} jykang@hpc.xmu.edu.cn hpcstat push
|
||||
# download database
|
||||
now=$(${date} '+%Y%m%d%H%M%S')
|
||||
${rsync} -e "${ssh}" \
|
||||
|
Loading…
Reference in New Issue
Block a user