DBServer::getScalarizrRepository PHP Method

getScalarizrRepository() public method

    public function getScalarizrRepository()
    {
        $config = \Scalr::getContainer()->config;
        $retval = array('client_mode' => Scalr::config('scalr.scalarizr_update.mode'));
        if ($retval['client_mode'] == 'client') {
            $retval['server_url'] = $config->get('scalr.scalarizr_update.server_url');
            $retval['api_port'] = $config->get('scalr.scalarizr_update.api_port');
        }
        $configuredRepo = null;
        if ($this->farmRoleId != 0) {
            $scmBranch = $this->GetFarmRoleObject()->GetSetting('user-data.scm_branch');
            $develRepos = $config->get('scalr.scalarizr_update.devel_repos');
            if ($scmBranch != '' && $develRepos) {
                $develRepository = $this->GetFarmRoleObject()->GetSetting('base.devel_repository');
                $normalizedValue = $develRepository === 'snapshot' ? $scmBranch : str_replace(array(".", '/'), array('', '-'), $scmBranch);
                $repo = isset($develRepos[$develRepository]) ? $develRepos[$develRepository] : array_shift($develRepos);
                return array_merge($retval, array('repository' => $normalizedValue, 'deb_repo_url' => sprintf($repo['deb_repo_url'], $normalizedValue), 'rpm_repo_url' => sprintf($repo['rpm_repo_url'], $normalizedValue), 'win_repo_url' => sprintf($repo['win_repo_url'], $normalizedValue)));
            }
            $configuredRepo = $this->GetFarmRoleObject()->GetSetting(Scalr_Role_Behavior::ROLE_BASE_SZR_UPD_REPOSITORY);
        }
        if ($this->farmId != 0 && !$configuredRepo) {
            $configuredRepo = $this->GetFarmObject()->GetSetting(Entity\FarmSetting::SZR_UPD_REPOSITORY);
        }
        $retval['repository'] = $configuredRepo ? $configuredRepo : Scalr::config('scalr.scalarizr_update.default_repo');
        if (!$config->defined("scalr.scalarizr_update.repos.{$retval['repository']}")) {
            throw new Exception("Scalarizr repository configuration is incorrect. Unknown repository name: {$retval['repository']}");
        }
        $repos = $config->get("scalr.scalarizr_update.repos.{$retval['repository']}");
        return array_merge($retval, $repos);
    }

Usage Example

Example #1
0
 public static function setupScalrAgent(\DBServer $dbServer)
 {
     $baseurl = \Scalr::config('scalr.endpoint.scheme') . "://" . \Scalr::config('scalr.endpoint.host');
     $env = $dbServer->GetEnvironmentObject();
     $azure = $env->azure();
     $branch = $dbServer->getScalarizrRepository()['repository'];
     $develRepos = \Scalr::getContainer()->config->get('scalr.scalarizr_update.devel_repos');
     $scmBranch = $dbServer->GetFarmRoleObject()->GetSetting('user-data.scm_branch');
     if ($scmBranch != '' && $develRepos) {
         $branch = $dbServer->GetFarmRoleObject()->GetSetting('base.devel_repository');
         $scmBranch = "{$scmBranch}/";
     } else {
         $scmBranch = '';
     }
     if ($dbServer->osType == 'linux') {
         $extensionProperties = new ResourceExtensionProperties('Microsoft.OSTCExtensions', 'CustomScriptForLinux', '1.2');
         $extensionProperties->setSettings(['commandToExecute' => "bash -c 'curl -k -L \"{$baseurl}/public/linux/{$branch}/azure/{$scmBranch}install_scalarizr.sh\" | bash && service scalr-upd-client start'"]);
     } else {
         $extensionProperties = new ResourceExtensionProperties('Microsoft.Compute', 'CustomScriptExtension', '1.4');
         $extensionProperties->setSettings(["commandToExecute" => "powershell -NoProfile -ExecutionPolicy Bypass -Command \"iex ((new-object net.webclient).DownloadString('{$baseurl}/public/windows/{$branch}/{$scmBranch}install_scalarizr.ps1')); start-service ScalrUpdClient\""]);
     }
     $createExtension = new CreateResourceExtension('scalarizr', $dbServer->cloudLocation, $extensionProperties);
     try {
         $response = $azure->compute->resourceExtension->create($env->keychain(SERVER_PLATFORMS::AZURE)->properties[Entity\CloudCredentialsProperty::AZURE_SUBSCRIPTION_ID], $dbServer->GetProperty(\AZURE_SERVER_PROPERTIES::RESOURCE_GROUP), $dbServer->GetProperty(\AZURE_SERVER_PROPERTIES::SERVER_NAME), $createExtension);
         \Scalr::getContainer()->logger(\LOG_CATEGORY::FARM)->info(new \FarmLogMessage($dbServer, sprintf(_("Created azure resource extension to install and launch scalr agent"))));
         $dbServer->SetProperty(\AZURE_SERVER_PROPERTIES::SZR_EXTENSION_DEPLOYED, 1);
     } catch (\Exception $e) {
         \Scalr::getContainer()->logger(\LOG_CATEGORY::FARM)->fatal(new \FarmLogMessage($dbServer, sprintf(_("Unable to create azure resource extension to install and launch scalr agent: %s"), $e->getMessage())));
     }
 }
All Usage Examples Of DBServer::getScalarizrRepository