Scalr\Farm\Role\FarmRoleStorage::setVolumes PHP Method

setVolumes() public method

*
public setVolumes ( DBServe\DBServer $server, $volumes )
$server DBServe\DBServer
    public function setVolumes(DBServer $server, $volumes)
    {
        $vlms = [];
        foreach ($volumes as $volume) {
            $vlms[$volume->scalrStorageId] = $volume;
        }
        foreach ($this->getConfigs() as $config) {
            if ($vlms[$config->id]) {
                $volume = new FarmRoleStorageDevice();
                if (!$volume->loadById($vlms[$config->id]->id)) {
                    $volume->farmRoleId = $this->farmRole->ID;
                    $volume->storageConfigId = $config->id;
                    $volume->serverIndex = $server->index;
                    $volume->storageId = $vlms[$config->id]->id;
                    $volume->cloudLocation = $server->GetCloudLocation();
                    $volume->envId = $server->envId;
                }
                switch ($config->type) {
                    case FarmRoleStorageConfig::TYPE_RAID_EBS:
                        $volume->placement = $vlms[$config->id]->disks[0]->availZone;
                        break;
                    case FarmRoleStorageConfig::TYPE_EBS:
                        $volume->placement = $vlms[$config->id]->availZone;
                        break;
                }
                $volume->config = $vlms[$config->id];
                $volume->status = FarmRoleStorageDevice::STATUS_ACTIVE;
                $volume->save();
                unset($vlms[$config->id]);
            }
        }
        //TODO: Handle zombies
    }

Usage Example

Example #1
0
 /**
  * Handle message from scalarizr
  *
  * @param Scalr_Messaging_Msg $message
  * @param DBServer $dbServer
  */
 public function handleMessage(Scalr_Messaging_Msg $message, DBServer $dbServer)
 {
     switch (get_class($message)) {
         case "Scalr_Messaging_Msg_HostUpdate":
             if ($message->base->apiPort) {
                 $currentApiPort = $dbServer->getPort(DBServer::PORT_API);
                 $this->logger->warn(new FarmLogMessage($dbServer->farmId, "Scalarizr API port was changed from {$currentApiPort} to {$message->base->apiPort}", $dbServer->serverId));
                 $dbServer->SetProperty(SERVER_PROPERTIES::SZR_API_PORT, $message->base->apiPort);
             }
             if ($message->base->messagingPort) {
                 $currentCtrlPort = $dbServer->getPort(DBServer::PORT_CTRL);
                 $this->logger->warn(new FarmLogMessage($dbServer->farmId, "Scalarizr CTRL port was changed from {$currentCtrlPort} to {$message->base->messagingPort}", $dbServer->serverId));
                 $dbServer->SetProperty(SERVER_PROPERTIES::SZR_CTRL_PORT, $message->base->messagingPort);
             }
             break;
         case "Scalr_Messaging_Msg_HostUp":
             try {
                 if (!empty($message->volumes) && $dbServer->farmRoleId) {
                     $storage = new FarmRoleStorage($dbServer->GetFarmRoleObject());
                     $storage->setVolumes($dbServer, $message->volumes);
                 }
             } catch (Exception $e) {
                 $this->logger->error(new FarmLogMessage($dbServer->farmId, "Error in role message handler: {$e->getMessage()}", $dbServer->serverId));
             }
             if (isset($message->base) && isset($message->base->hostname)) {
                 $dbServer->SetProperty(self::SERVER_BASE_HOSTNAME, $message->base->hostname);
             }
             break;
     }
 }
All Usage Examples Of Scalr\Farm\Role\FarmRoleStorage::setVolumes