All new accounts created on Gitlab now require administrator approval. If you invite any collaborators, please let Flux staff know so they can approve the accounts.

Commit 5630d472 authored by Robert Ricci's avatar Robert Ricci

Change the messages that come out of the type precheck, to distinguish

between the given type not having enough _available_ nodes and not
having enough _suitable_ nodes.

Also, fix a silly bug in which I was running the type precheck one too
many times. This didn't hurt anything, just took a little bit of time.
parent 37ff40e4
......@@ -414,11 +414,22 @@ void print_help() {
// Perfrom a pre-cehck to make sure that there are enough free nodes of the
// proper types. Returns 1 if the proper types exist, 0 if they do not.
// TODO - move away from using global variables
int type_precheck() {
cout << "Type precheck:" << endl;
int type_precheck(int round) {
cout << "Type precheck, round " << round << ":" << endl;
bool ok = true;
/*
* Tailor our error messages, depending on the round - the first round of
* the precheck is looking for available pnodes, the second is looking for
* sutiable nodes (ie. at least one vnode could map to it)
*/
char *round_str;
if (round == 1) {
round_str = "available";
} else {
round_str = "suitable";
}
// First, check the regular types
for (name_count_map::iterator vtype_it=vtypes.begin();
vtype_it != vtypes.end();++vtype_it) {
......@@ -426,16 +437,16 @@ int type_precheck() {
// Check to see if there were any pnodes of the type at all
tb_ptype_map::iterator ptype_it = ptypes.find(vtype_it->first);
if (ptype_it == ptypes.end()) {
cout << " *** No physical nodes of type " << vtype_it->first
<< " found" << endl;
cout << " *** No " << round_str << " physical nodes of type "
<< vtype_it->first << " found" << endl;
ok = false;
} else {
// Okay, there are some - are there enough?
if (ptype_it->second->pnode_slots() < vtype_it->second) {
cout << " *** " << vtype_it->second << " nodes of type " <<
vtype_it->first << " requested, but only "
<< ptype_it->second->pnode_slots() << " suitable nodes of "
<< "type " << vtype_it->first<< " found" << endl;
vtype_it->first << " requested, but only " <<
ptype_it->second->pnode_slots() << " " << round_str <<
" nodes of type " << vtype_it->first<< " found" << endl;
ok = false;
}
// Okay, there are enough - but are we allowed to use them?
......@@ -476,8 +487,8 @@ int type_precheck() {
}
if (!found_match) {
cout << " *** No physical nodes can satisfy vclass " <<
vclass_it->first << endl;
cout << " *** No " << round_str <<
" physical nodes can satisfy vclass " << vclass_it->first << endl;
ok = false;
}
}
......@@ -899,7 +910,7 @@ int main(int argc,char **argv) {
*/
// Run the type precheck
if (!type_precheck()) {
if (!type_precheck(1)) {
exit(EXIT_UNRETRYABLE);
}
......@@ -917,17 +928,12 @@ int main(int argc,char **argv) {
* we mave to run the type precheck before the mapping precheck. And,
* the type precheck is very fast.
*/
if (!type_precheck()) {
if (!type_precheck(2)) {
exit(EXIT_UNRETRYABLE);
}
}
#endif
// Run the type precheck
if (!type_precheck()) {
exit(EXIT_UNRETRYABLE);
}
// Bomb out early if we're only doing the prechecks
if (prechecks_only) {
exit(EXIT_SUCCESS);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment