public extendMessage ( Scalr_Messaging_Msg $message, DBServer $dbServer ) | ||
$message | Scalr_Messaging_Msg | |
$dbServer | DBServer |
public function extendMessage(Scalr_Messaging_Msg $message, DBServer $dbServer) { $message = parent::extendMessage($message, $dbServer); switch (get_class($message)) { case "Scalr_Messaging_Msg_HostInitResponse": $message->router = $this->getConfiguration($dbServer); } return $message; }
public function extendMessage(Scalr_Messaging_Msg $message, DBServer $dbServer) { $message = parent::extendMessage($message, $dbServer); switch (get_class($message)) { case "Scalr_Messaging_Msg_HostInitResponse": $message->cfCloudController = new stdClass(); $message->cfCloudController->volumeConfig = $this->getVolumeConfig($dbServer->GetFarmRoleObject(), $dbServer); break; } return $message; }
public function extendMessage(Scalr_Messaging_Msg $message, DBServer $dbServer) { $message = parent::extendMessage($message); switch (get_class($message)) { case "Scalr_Messaging_Msg_HostInitResponse": $message->rabbitmq = new stdClass(); $message->rabbitmq->cookie = $dbServer->GetFarmRoleObject()->GetSetting(self::ROLE_COOKIE_NAME); $message->rabbitmq->volumeConfig = $this->getVolumeConfig($dbServer->GetFarmRoleObject(), $dbServer); $message->rabbitmq->nodeType = $this->getNodeType($dbServer->GetFarmRoleObject(), $dbServer); $message->rabbitmq->password = $dbServer->GetFarmRoleObject()->GetSetting(self::ROLE_PASSWORD); $dbServer->SetProperty(self::SERVER_NODE_TYPE, $message->rabbitmq->nodeType); break; } return $message; }
public function extendMessage(Scalr_Messaging_Msg $message, DBServer $dbServer) { $message = parent::extendMessage($message); try { $dbFarmRole = $dbServer->GetFarmRoleObject(); } catch (Exception $e) { } switch (get_class($message)) { case "Scalr_Messaging_Msg_HostInitResponse": $dbMsrInfo = Scalr_Db_Msr_Info::init($dbFarmRole, $dbServer, $this->behavior); $message->addDbMsrInfo($dbMsrInfo); break; case "Scalr_Messaging_Msg_DbMsr_PromoteToMaster": $dbMsrInfo = Scalr_Db_Msr_Info::init($dbFarmRole, $dbServer, $this->behavior); $message->addDbMsrInfo($dbMsrInfo); break; case "Scalr_Messaging_Msg_DbMsr_NewMasterUp": $dbMsrInfo = Scalr_Db_Msr_Info::init($dbFarmRole, $dbServer, $this->behavior); $message->addDbMsrInfo($dbMsrInfo); break; } return $message; }
public function extendMessage(Scalr_Messaging_Msg $message, DBServer $dbServer) { $message = parent::extendMessage($message, $dbServer); switch (get_class($message)) { case "Scalr_Messaging_Msg_HostInitResponse": $message->mongodb = $this->getConfiguration($dbServer); break; case "Scalr_Messaging_Msg_HostDown": case "Scalr_Messaging_Msg_HostUp": case "Scalr_Messaging_Msg_HostInit": case "Scalr_Messaging_Msg_BeforeHostTerminate": $message->mongodb = new stdClass(); $message->mongodb->replicaSetIndex = $dbServer->GetProperty(self::SERVER_REPLICA_SET_INDEX); $message->mongodb->shardIndex = $dbServer->GetProperty(self::SERVER_SHARD_INDEX); break; } return $message; }
public function extendMessage(Scalr_Messaging_Msg $message, DBServer $dbServer) { $message = parent::extendMessage($message, $dbServer); try { $dbFarmRole = $dbServer->GetFarmRoleObject(); $storageType = $dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_ENGINE); $storageGeneration = $storageType == 'lvm' ? 2 : 1; } catch (Exception $e) { } switch (get_class($message)) { case "Scalr_Messaging_Msg_HostInitResponse": $dbMsrInfo = Scalr_Db_Msr_Info::init($dbFarmRole, $dbServer, $this->behavior); $message->addDbMsrInfo($dbMsrInfo); $config = $dbFarmRole->GetServiceConfiguration2($this->behavior); if (!empty($config)) { $message->{$this->behavior}->preset = array(); foreach ($config as $filename => $cfg) { $file = new stdClass(); $file->file = new stdClass(); $file->file->name = $filename; $file->file->settings = array(); foreach ($cfg as $k => $v) { $setting = new stdClass(); $setting->setting = new stdClass(); $setting->setting->name = $k; $setting->setting->value = $v; $file->file->settings[] = $setting; } $message->{$this->behavior}->preset[] = $file; } } if ($storageGeneration == 2) { $message->volumeConfig = null; $message->snapshotConfig = null; $message->{$this->behavior}->volumeConfig = null; $message->{$this->behavior}->snapshotConfig = null; // Create volume configuration $message->{$this->behavior}->volume = new stdClass(); $message->{$this->behavior}->volume->type = 'lvm'; if ($dbFarmRole->isOpenstack()) { $diskType = 'loop'; } else { switch ($dbFarmRole->Platform) { case SERVER_PLATFORMS::EC2: $diskType = 'ec2_ephemeral'; break; case SERVER_PLATFORMS::GCE: $diskType = 'gce_ephemeral'; break; } } $message->{$this->behavior}->volume->pvs = array(); if ($diskType == 'loop') { $message->{$this->behavior}->volume->pvs[] = array('type' => $diskType, 'size' => '75%root'); } else { $volumes = $dbFarmRole->GetSetting(self::ROLE_DATA_STORAGE_LVM_VOLUMES); $v = json_decode($volumes); foreach ($v as $name => $size) { $message->{$this->behavior}->volume->pvs[] = array('type' => $diskType, 'name' => $name); } } $fs = $dbFarmRole->GetSetting(Scalr_Db_Msr::DATA_STORAGE_FSTYPE); if (!$fs) { $fs = 'ext3'; } $message->{$this->behavior}->volume->vg = $this->behavior; $message->{$this->behavior}->volume->name = 'data'; $message->{$this->behavior}->volume->size = '100%VG'; $message->{$this->behavior}->volume->fstype = $fs; // Add restore configuration $restore = $this->db->GetRow("SELECT manifest FROM storage_restore_configs WHERE farm_roleid = ? ORDER BY id DESC LIMIT 1", array($dbFarmRole->ID)); if ($restore) { $message->{$this->behavior}->restore = new stdClass(); $message->{$this->behavior}->restore->type = 'xtrabackup'; $message->{$this->behavior}->restore->cloudfsSource = $restore['manifest']; } if ($dbFarmRole->isOpenstack()) { $driver = 'swift'; } else { switch ($dbFarmRole->Platform) { case SERVER_PLATFORMS::EC2: $driver = 's3'; break; case SERVER_PLATFORMS::GCE: $driver = 'gcs'; break; } } // Add backup configuration if (!$message->{$this->behavior}->restore) { $message->{$this->behavior}->backup = new stdClass(); $message->{$this->behavior}->backup->type = 'xtrabackup'; $message->{$this->behavior}->backup->backupType = 'full'; $message->{$this->behavior}->backup->compressor = $dbFarmRole->GetSetting(self::ROLE_DATA_BUNDLE_COMPRESSION); $message->{$this->behavior}->backup->cloudfsTarget = sprintf("%s://scalr-%s-%s-%s/data-bundles/%s/%s/", $driver, SCALR_ID, $dbServer->envId, $dbServer->GetCloudLocation(), $dbServer->farmId, $this->behavior); } } break; case "Scalr_Messaging_Msg_DbMsr_PromoteToMaster": $dbMsrInfo = Scalr_Db_Msr_Info::init($dbFarmRole, $dbServer, $this->behavior); $message->addDbMsrInfo($dbMsrInfo); // Reset Slaves data bundle $dbFarmRole->SetSetting(self::ROLE_NO_DATA_BUNDLE_FOR_SLAVES, 1, DBFarmRole::TYPE_LCL); $noDataBundle = $dbFarmRole->GetSetting(self::ROLE_NO_DATA_BUDNLE_ON_PROMOTE); if ($noDataBundle) { $message->{$this->behavior}->noDataBundle = 1; } // IDCF using Cloudstack 2.X with very unstable volumes implementation. // To avoid 500 errors during volumes re-attach we need to promote slaves to master with their own data. if ($dbServer->platform == SERVER_PLATFORMS::IDCF) { $message->{$this->behavior}->volumeConfig = null; $message->{$this->behavior}->snapshotConfig = null; } if ($storageGeneration == 2) { $message->volumeConfig = null; $message->snapshotConfig = null; $message->{$this->behavior}->volumeConfig = null; $message->{$this->behavior}->snapshotConfig = null; if ($dbFarmRole->isOpenstack()) { $driver = 'swift'; } else { switch ($dbFarmRole->Platform) { case SERVER_PLATFORMS::EC2: $driver = 's3'; break; case SERVER_PLATFORMS::GCE: $driver = 'gcs'; break; } } $message->{$this->behavior}->backup = new stdClass(); $message->{$this->behavior}->backup->type = 'xtrabackup'; $message->{$this->behavior}->backup->backupType = 'full'; $message->{$this->behavior}->backup->compressor = $dbFarmRole->GetSetting(self::ROLE_DATA_BUNDLE_COMPRESSION); $message->{$this->behavior}->backup->cloudfsTarget = sprintf("%s://scalr-%s-%s-%s/data-bundles/%s/%s/", $driver, SCALR_ID, $dbServer->envId, $dbServer->GetCloudLocation(), $dbServer->farmId, $this->behavior); } break; case "Scalr_Messaging_Msg_DbMsr_NewMasterUp": $dbMsrInfo = Scalr_Db_Msr_Info::init($dbFarmRole, $dbServer, $this->behavior); $message->addDbMsrInfo($dbMsrInfo); if ($storageGeneration == 2) { $message->{$this->behavior}->volumeConfig = null; $message->{$this->behavior}->snapshotConfig = null; $restore = $this->db->GetRow("SELECT manifest FROM storage_restore_configs WHERE farm_roleid = ? ORDER BY id DESC LIMIT 1", array($dbFarmRole->ID)); if ($restore) { $message->{$this->behavior}->restore = new stdClass(); $message->{$this->behavior}->restore->type = 'xtrabackup'; $message->{$this->behavior}->restore->cloudfsSource = $restore['manifest']; } } break; } return $message; }
public function extendMessage(Scalr_Messaging_Msg $message, DBServer $dbServer) { $message = parent::extendMessage($message); $dbFarmRole = $dbServer->GetFarmRoleObject(); $chefServerId = $dbFarmRole->GetSetting(self::ROLE_CHEF_SERVER_ID); $runListId = $dbFarmRole->GetSetting(self::ROLE_CHEF_RUNLIST_ID); if (!$chefServerId || !$runListId) { return $message; } $chefRunListInfo = $this->db->GetRow("SELECT * FROM services_chef_runlists WHERE id=?", array($runListId)); $chefServerInfo = $this->db->GetRow("SELECT * FROM services_chef_servers WHERE id=?", array($chefRunListInfo['chef_server_id'])); $chefServerInfo['v_auth_key'] = trim($this->getCrypto()->decrypt($chefServerInfo['v_auth_key'], $this->cryptoKey)); switch (get_class($message)) { case "Scalr_Messaging_Msg_HostInitResponse": $message->chef = new stdClass(); $message->chef->serverUrl = $chefServerInfo['url']; $message->chef->role = $dbFarmRole->GetSetting(self::ROLE_CHEF_ROLE_NAME); $message->chef->validatorName = $chefServerInfo['v_username']; $message->chef->validatorKey = $chefServerInfo['v_auth_key']; $message->chef->environment = $chefRunListInfo['chef_environment']; break; } return $message; }
public function extendMessage(Scalr_Messaging_Msg $message, DBServer $dbServer) { $message = parent::extendMessage($message, $dbServer); switch (get_class($message)) { case "Scalr_Messaging_Msg_HostInitResponse": $message->router = new stdClass(); // Set scalr address $message->router->scalrAddr = \Scalr::config('scalr.endpoint.scheme') . "://" . \Scalr::config('scalr.endpoint.host'); // Set scalr IPs whitelist $message->router->whitelist = \Scalr::config('scalr.aws.ip_pool'); // Set CIDR $message->router->cidr = '10.0.0.0/8'; } return $message; }
public function extendMessage(Scalr_Messaging_Msg $message, DBServer $dbServer) { $message = parent::extendMessage($message, $dbServer); switch (get_class($message)) { case "Scalr_Messaging_Msg_HostInitResponse": $config = $this->getConfiguration($dbServer); if ($config->serverUrl || $config->cookbookUrl) { $message->chef = $config; } break; } return $message; }
public function extendMessage(Scalr_Messaging_Msg $message, DBServer $dbServer) { $message = parent::extendMessage($message); switch (get_class($message)) { case "Scalr_Messaging_Msg_HostInitResponse": $message->mongodb = new stdClass(); $message->mongodb->keyfile = $dbServer->GetFarmRoleObject()->GetSetting(self::ROLE_KEYFILE); $message->mongodb->volumeConfig = $this->getVolumeConfig($dbServer->GetFarmRoleObject(), $dbServer); $message->mongodb->snapshotConfig = $this->getSnapshotConfig($dbServer->GetFarmRoleObject(), $dbServer); $message->mongodb->password = $dbServer->GetFarmRoleObject()->GetSetting(self::ROLE_PASSWORD); $message->mongodb->replicaSetIndex = $dbServer->GetProperty(self::SERVER_REPLICA_SET_INDEX); $message->mongodb->shardIndex = $dbServer->GetProperty(self::SERVER_SHARD_INDEX); $message->mongodb->shardsTotal = $dbServer->GetFarmRoleObject()->GetSetting(self::ROLE_SHARDS_COUNT); $message->mongodb->replicasPerShard = $dbServer->GetFarmRoleObject()->GetSetting(self::ROLE_REPLICAS_COUNT); break; case "Scalr_Messaging_Msg_HostDown": case "Scalr_Messaging_Msg_HostUp": case "Scalr_Messaging_Msg_HostInit": case "Scalr_Messaging_Msg_BeforeHostTerminate": $message->mongodb = new stdClass(); $message->mongodb->replicaSetIndex = $dbServer->GetProperty(self::SERVER_REPLICA_SET_INDEX); $message->mongodb->shardIndex = $dbServer->GetProperty(self::SERVER_SHARD_INDEX); break; } return $message; }
/** * {@inheritdoc} * @see Scalr_Role_Behavior::extendMessage() */ public function extendMessage(Scalr_Messaging_Msg $message, DBServer $dbServer) { $message = parent::extendMessage($message, $dbServer); switch (get_class($message)) { case 'Scalr_Messaging_Msg_HostInitResponse': $config = $this->getConfiguration($dbServer); if (!empty($config->serverUrl) || !empty($config->cookbookUrl)) { $message->chef = $config; $message->chef->scriptName = '[Scalr built-in] Chef bootstrap'; $message->chef->executionId = Scalr::GenerateUID(); $message->chef->eventName = 'HostInit'; } break; } return $message; }