public function extendMessage(Scalr_Messaging_Msg $message, DBServer $dbServer)
{
if (in_array(ROLE_BEHAVIORS::BASE, $message->handlers)) {
return $message;
}
if ($dbServer->farmRoleId) {
$dbFarmRole = DBFarmRole::LoadByID($dbServer->farmRoleId);
}
switch (get_class($message)) {
case "Scalr_Messaging_Msg_BeforeHostTerminate":
//Storage
try {
if ($dbFarmRole) {
$storage = new FarmRoleStorage($dbFarmRole);
$volumes = $storage->getVolumesConfigs($dbServer, false);
if (!empty($volumes)) {
$message->volumes = $volumes;
}
}
} catch (Exception $e) {
$this->logger->error(new FarmLogMessage($dbServer->farmId, "Cannot init storage: {$e->getMessage()}"));
}
break;
case "Scalr_Messaging_Msg_HostInit":
$configuration = $this->getBaseConfiguration($dbServer, true, true);
$message->base = $configuration->base;
break;
case "Scalr_Messaging_Msg_HostInitResponse":
//Deployments
try {
if ($dbFarmRole) {
$appId = $dbFarmRole->GetSetting(self::ROLE_DM_APPLICATION_ID);
if ($appId) {
$application = Scalr_Dm_Application::init()->loadById($appId);
$deploymentTask = Scalr_Dm_DeploymentTask::init();
$deploymentTask->create($dbServer->farmRoleId, $appId, $dbServer->serverId, Scalr_Dm_DeploymentTask::TYPE_AUTO, $dbFarmRole->GetSetting(self::ROLE_DM_REMOTE_PATH), $dbServer->envId, Scalr_Dm_DeploymentTask::STATUS_DEPLOYING);
$message->deploy = $deploymentTask->getDeployMessageProperties();
}
}
} catch (Exception $e) {
$this->logger->error(new FarmLogMessage($dbServer->farmId, "Cannot init deployment: {$e->getMessage()}"));
}
$configuration = $this->getBaseConfiguration($dbServer, true);
if ($configuration->volumes) {
$message->volumes = $configuration->volumes;
}
$message->base = $configuration->base;
break;
}
$message->handlers[] = ROLE_BEHAVIORS::BASE;
return $message;
}