From dba4cae455e596eeb32cfe4ca19fb1f251e6e91e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Thu, 31 Jan 2013 15:02:09 +0100 Subject: [PATCH] Feature #864: Improvements for the scheduler VM log messages --- src/scheduler/src/pool/VirtualMachineXML.cc | 48 +++++++++++---------- src/scheduler/src/sched/Scheduler.cc | 13 ++++-- 2 files changed, 35 insertions(+), 26 deletions(-) diff --git a/src/scheduler/src/pool/VirtualMachineXML.cc b/src/scheduler/src/pool/VirtualMachineXML.cc index e074ab4bbe..16372d9706 100644 --- a/src/scheduler/src/pool/VirtualMachineXML.cc +++ b/src/scheduler/src/pool/VirtualMachineXML.cc @@ -230,35 +230,38 @@ void VirtualMachineXML::get_requirements (int& cpu, int& memory, int& disk) void VirtualMachineXML::log(const string &st) { vector nodes; + + ostringstream oss; + string xml_st; + int rc = get_nodes("/VM/USER_TEMPLATE", nodes); if (rc > 0) { - ObjectXML* templ = new ObjectXML(nodes[0]); - - free_nodes(nodes); - - templ->rename_nodes("/USER_TEMPLATE", "TEMPLATE"); - - nodes.clear(); - rc = templ->get_nodes("/TEMPLATE", nodes); - - if (rc <= 0) - { - return; - } - VirtualMachineTemplate vm_template; vm_template.from_xml_node(nodes[0]); - string debug_st; - vm_template.to_str(debug_st); - free_nodes(nodes); if (!st.empty()) { - vm_template.replace("SCHEDULER_MESSAGE", st); + char str[26]; + + time_t the_time = time(NULL); + +#ifdef SOLARIS + ctime_r(&(the_time),str,sizeof(char)*26); +#else + ctime_r(&(the_time),str); +#endif + // Get rid of final enter character + str[24] = '\0'; + + oss << str << ": " << st; + + vm_template.replace("SCHEDULER_MESSAGE", oss.str()); + + update(vm_template.to_xml(xml_st)); } else { @@ -272,11 +275,12 @@ void VirtualMachineXML::log(const string &st) delete attr[i]; } } + + if (num > 0) + { + update(vm_template.to_xml(xml_st)); + } } - - string xml_st; - - update(vm_template.to_xml(xml_st)); } } diff --git a/src/scheduler/src/sched/Scheduler.cc b/src/scheduler/src/sched/Scheduler.cc index 99999d7252..2bb45abbde 100644 --- a/src/scheduler/src/sched/Scheduler.cc +++ b/src/scheduler/src/sched/Scheduler.cc @@ -419,13 +419,18 @@ void Scheduler::match() if ( rc != 0 ) { ostringstream oss; + ostringstream error_msg; matched = false; - oss << "VM " << oid << ": Error evaluating expression: " - << reqs << ", error: " << error; + error_msg << "Error evaluating REQUIREMENTS expression: '" + << reqs << "', error: " << error; + + oss << "VM " << oid << ": " << error_msg.str(); NebulaLog::log("SCHED",Log::ERROR,oss); + vm->log(error_msg.str()); + free(error); } } @@ -474,11 +479,11 @@ void Scheduler::match() { if (n_matched == 0) { - vm->log("The Scheduler could not find a Host that meets the requirements expression"); + vm->log("The Scheduler could not find any Host that meets the requirements expression"); } else { - vm->log("The Scheduler could not find a Host with enough capacity to deploy the VM"); + vm->log("The Scheduler could not find any Host with enough capacity to deploy the VM"); } } }