mirror of
https://github.com/OpenNebula/one.git
synced 2024-12-24 21:34:01 +03:00
feature #575: Improved log messages for drivers. Error string also propagated to images
This commit is contained in:
parent
aebb1cd6a7
commit
db8aa7f5bf
@ -217,6 +217,13 @@ public:
|
||||
return obj_template->erase(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets an error message for the VM in the template
|
||||
* @param message
|
||||
* @return 0 on success
|
||||
*/
|
||||
void set_template_error_message(const string& message);
|
||||
|
||||
protected:
|
||||
|
||||
/**
|
||||
@ -318,6 +325,11 @@ private:
|
||||
* Pointer to the SQL table for the PoolObjectSQL
|
||||
*/
|
||||
const char * table;
|
||||
|
||||
/**
|
||||
* Name for the error messages attribute
|
||||
*/
|
||||
static const char * error_attribute_name;
|
||||
};
|
||||
|
||||
#endif /*POOL_OBJECT_SQL_H_*/
|
||||
|
@ -541,17 +541,9 @@ public:
|
||||
*/
|
||||
int parse_template_attribute(const string& attribute, string& parsed);
|
||||
|
||||
/**
|
||||
* Sets an error message for the VM in the template
|
||||
* @param message
|
||||
* @return 0 on success
|
||||
*/
|
||||
void set_error_message(const string& message);
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// States
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Returns the VM state (Dispatch Manager)
|
||||
* @return the VM state
|
||||
@ -826,14 +818,9 @@ private:
|
||||
return -1;
|
||||
};
|
||||
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Attribute Parser
|
||||
// -------------------------------------------------------------------------
|
||||
/**
|
||||
* Name for the error messages attribute
|
||||
*/
|
||||
static const char * error_attribute_name;
|
||||
|
||||
/**
|
||||
* Mutex to perform just one attribute parse at a time
|
||||
|
@ -91,7 +91,7 @@ void AuthManagerDriver::protocol(
|
||||
{
|
||||
is.clear();
|
||||
getline(is,info);
|
||||
NebulaLog::log("AuM",Log::INFO, info.c_str());
|
||||
NebulaLog::log("AuM", log_type(result[0]), info.c_str());
|
||||
}
|
||||
|
||||
return;
|
||||
|
@ -125,7 +125,7 @@ void HookManagerDriver::protocol(
|
||||
|
||||
is.clear();
|
||||
getline(is,info);
|
||||
NebulaLog::log("HKM",Log::INFO, info.c_str());
|
||||
NebulaLog::log("HKM", log_type(result[0]), info.c_str());
|
||||
}
|
||||
|
||||
return;
|
||||
@ -169,6 +169,13 @@ void HookManagerDriver::protocol(
|
||||
else
|
||||
{
|
||||
oss << "Error executing Hook: " << hook_name << ". " << info;
|
||||
|
||||
if ( info[0] != '-' )
|
||||
{
|
||||
vm->set_template_error_message(os.str());
|
||||
vmpool->update(vm);
|
||||
}
|
||||
|
||||
vm->log("HKM",Log::ERROR,oss);
|
||||
}
|
||||
}
|
||||
@ -177,7 +184,7 @@ void HookManagerDriver::protocol(
|
||||
string info;
|
||||
|
||||
getline(is,info);
|
||||
vm->log("HKM",Log::INFO,info.c_str());
|
||||
vm->log("HKM",log_type(result[0]),info.c_str());
|
||||
}
|
||||
|
||||
vm->unlock();
|
||||
|
@ -110,7 +110,7 @@ void InformationManagerDriver::protocol(
|
||||
|
||||
hinfo += "\n";
|
||||
|
||||
oss << "Host " << id << " successfully monitored."; //, info: "<< hinfo;
|
||||
oss << "Host " << id << " successfully monitored.";
|
||||
NebulaLog::log("InM",Log::DEBUG,oss);
|
||||
|
||||
rc = host->update_info(hinfo);
|
||||
@ -136,7 +136,7 @@ void InformationManagerDriver::protocol(
|
||||
string info;
|
||||
|
||||
getline(is,info);
|
||||
NebulaLog::log("InM",Log::INFO,info.c_str());
|
||||
NebulaLog::log("InM",log_type(result[0]),info.c_str());
|
||||
}
|
||||
|
||||
return;
|
||||
|
@ -93,6 +93,7 @@ void ImageManagerDriver::protocol(
|
||||
|
||||
int id;
|
||||
Image * image;
|
||||
string source;
|
||||
|
||||
string info;
|
||||
|
||||
@ -123,7 +124,7 @@ void ImageManagerDriver::protocol(
|
||||
is.clear();
|
||||
getline(is,info);
|
||||
|
||||
NebulaLog::log("ImG",Log::INFO, info.c_str());
|
||||
NebulaLog::log("ImG",log_type(result[0]), info.c_str());
|
||||
}
|
||||
|
||||
return;
|
||||
@ -148,8 +149,6 @@ void ImageManagerDriver::protocol(
|
||||
image->set_state(Image::READY);
|
||||
ipool->update(image);
|
||||
|
||||
image->unlock();
|
||||
|
||||
NebulaLog::log("ImM", Log::INFO, "Image copied and ready to use.");
|
||||
}
|
||||
else
|
||||
@ -164,8 +163,6 @@ void ImageManagerDriver::protocol(
|
||||
image->set_state(Image::READY);
|
||||
ipool->update(image);
|
||||
|
||||
image->unlock();
|
||||
|
||||
NebulaLog::log("ImM", Log::INFO, "Image saved and ready to use.");
|
||||
}
|
||||
else
|
||||
@ -180,8 +177,6 @@ void ImageManagerDriver::protocol(
|
||||
image->set_state(Image::READY);
|
||||
ipool->update(image);
|
||||
|
||||
image->unlock();
|
||||
|
||||
NebulaLog::log("ImM", Log::INFO, "Image created and ready to use");
|
||||
}
|
||||
else
|
||||
@ -192,14 +187,11 @@ void ImageManagerDriver::protocol(
|
||||
else if ( action == "RM" )
|
||||
{
|
||||
int rc;
|
||||
string source;
|
||||
|
||||
source = image->get_source();
|
||||
|
||||
rc = ipool->drop(image);
|
||||
|
||||
image->unlock();
|
||||
|
||||
if ( rc < 0 )
|
||||
{
|
||||
NebulaLog::log("ImM",Log::ERROR,"Image could not be removed from DB");
|
||||
@ -211,20 +203,17 @@ void ImageManagerDriver::protocol(
|
||||
}
|
||||
else
|
||||
{
|
||||
ostringstream oss;
|
||||
|
||||
oss <<"Error removing image from repository. Remove file " << source
|
||||
<<" to completely delete image.";
|
||||
|
||||
NebulaLog::log("ImM",Log::ERROR,oss);
|
||||
goto error_rm;
|
||||
}
|
||||
}
|
||||
else if (action == "LOG")
|
||||
{
|
||||
getline(is,info);
|
||||
NebulaLog::log("ImM", Log::INFO, info.c_str());
|
||||
NebulaLog::log("ImM", log_type(result[0]), info.c_str());
|
||||
}
|
||||
|
||||
image->unlock();
|
||||
|
||||
return;
|
||||
|
||||
error_cp:
|
||||
@ -240,6 +229,12 @@ error_mv:
|
||||
error_mkfs:
|
||||
os.str("");
|
||||
os << "Error creating datablock";
|
||||
goto error_common;
|
||||
|
||||
error_rm:
|
||||
os.str("");
|
||||
os << "Error removing image from repository. Remove file " << source
|
||||
<< " to completely delete image.";
|
||||
|
||||
error_common:
|
||||
getline(is,info);
|
||||
@ -247,6 +242,7 @@ error_common:
|
||||
if (!info.empty() && (info[0] != '-'))
|
||||
{
|
||||
os << ": " << info;
|
||||
image->set_template_error_message(os.str());
|
||||
}
|
||||
|
||||
NebulaLog::log("ImM", Log::ERROR, os);
|
||||
|
@ -108,3 +108,37 @@ int PoolObjectSQL::drop(SqlDB *db)
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
const char * PoolObjectSQL::error_attribute_name = "ERROR_MESSAGE";
|
||||
|
||||
void PoolObjectSQL::set_template_error_message(const string& message)
|
||||
{
|
||||
SingleAttribute * attr;
|
||||
ostringstream error;
|
||||
|
||||
char str[26];
|
||||
time_t the_time;
|
||||
|
||||
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';
|
||||
|
||||
error << str << ": " << message;
|
||||
|
||||
attr = new SingleAttribute(error_attribute_name,error.str());
|
||||
|
||||
obj_template->set(attr);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
|
@ -147,7 +147,9 @@ void TransferManagerDriver::protocol(
|
||||
if (info[0] != '-')
|
||||
{
|
||||
os << ": " << info;
|
||||
vm->set_error_message(os.str());
|
||||
|
||||
vm->set_template_error_message(os.str());
|
||||
vmpool->update(vm);
|
||||
}
|
||||
|
||||
vm->log("TM",Log::ERROR,os);
|
||||
|
@ -102,8 +102,6 @@ const char * VirtualMachine::db_bootstrap = "CREATE TABLE IF NOT EXISTS "
|
||||
"vm_pool (oid INTEGER PRIMARY KEY, name TEXT, body TEXT, uid INTEGER, "
|
||||
"last_poll INTEGER, state INTEGER, lcm_state INTEGER)";
|
||||
|
||||
const char * VirtualMachine::error_attribute_name = "ERROR_MESSAGE";
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
@ -1014,33 +1012,6 @@ error_common:
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
void VirtualMachine::set_error_message(const string& message)
|
||||
{
|
||||
SingleAttribute * attr;
|
||||
ostringstream error;
|
||||
|
||||
char str[26];
|
||||
time_t the_time;
|
||||
|
||||
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';
|
||||
|
||||
error << str << ": " << message;
|
||||
|
||||
attr = new SingleAttribute(error_attribute_name,error.str());
|
||||
|
||||
obj_template->set(attr);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
|
@ -246,7 +246,7 @@ static void log_error(VirtualMachine* vm,
|
||||
if (info[0] != '-')
|
||||
{
|
||||
os << ": " << info;
|
||||
vm->set_error_message(os.str());
|
||||
vm->set_template_error_message(os.str());
|
||||
}
|
||||
|
||||
vm->log("VMM",Log::ERROR,os);
|
||||
@ -346,6 +346,7 @@ void VirtualMachineManagerDriver::protocol(
|
||||
else
|
||||
{
|
||||
log_error(vm,os,is,"Error deploying virtual machine");
|
||||
vmpool->update(vm);
|
||||
|
||||
lcm->trigger(LifeCycleManager::DEPLOY_FAILURE, id);
|
||||
}
|
||||
@ -362,6 +363,7 @@ void VirtualMachineManagerDriver::protocol(
|
||||
else
|
||||
{
|
||||
log_error(vm,os,is,"Error shuting down VM");
|
||||
vmpool->update(vm);
|
||||
|
||||
lcm->trigger(LifeCycleManager::SHUTDOWN_FAILURE, id);
|
||||
}
|
||||
@ -378,6 +380,7 @@ void VirtualMachineManagerDriver::protocol(
|
||||
else
|
||||
{
|
||||
log_error(vm,os,is,"Error canceling VM");
|
||||
vmpool->update(vm);
|
||||
|
||||
lcm->trigger(LifeCycleManager::CANCEL_FAILURE, id);
|
||||
}
|
||||
@ -394,6 +397,7 @@ void VirtualMachineManagerDriver::protocol(
|
||||
else
|
||||
{
|
||||
log_error(vm,os,is,"Error saving VM state");
|
||||
vmpool->update(vm);
|
||||
|
||||
lcm->trigger(LifeCycleManager::SAVE_FAILURE, id);
|
||||
}
|
||||
@ -410,6 +414,7 @@ void VirtualMachineManagerDriver::protocol(
|
||||
else
|
||||
{
|
||||
log_error(vm,os,is,"Error restoring VM");
|
||||
vmpool->update(vm);
|
||||
|
||||
lcm->trigger(LifeCycleManager::DEPLOY_FAILURE, id);
|
||||
}
|
||||
@ -426,6 +431,7 @@ void VirtualMachineManagerDriver::protocol(
|
||||
else
|
||||
{
|
||||
log_error(vm,os,is,"Error live migrating VM");
|
||||
vmpool->update(vm);
|
||||
|
||||
lcm->trigger(LifeCycleManager::DEPLOY_FAILURE, id);
|
||||
}
|
||||
@ -565,6 +571,7 @@ void VirtualMachineManagerDriver::protocol(
|
||||
else
|
||||
{
|
||||
log_error(vm,os,is,"Error monitoring VM");
|
||||
vmpool->update(vm);
|
||||
|
||||
vm->log("VMM",Log::ERROR,os);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user