protected function run1($stage) { $envIds = $this->db->Execute("SELECT `id` FROM `client_environments`"); $platformVariables = static::getCloudsCredentialProperties(); foreach ($envIds as $row) { $environment = \Scalr_Environment::init()->loadById($row['id']); $platforms = []; foreach (array_keys(SERVER_PLATFORMS::getList()) as $platform) { if ($environment->getPlatformConfigValue($platform . '.is_enabled', false)) { $platforms[] = $platform; } } foreach ($platforms as $platform) { try { switch ($platform) { case SERVER_PLATFORMS::RACKSPACE: foreach (['rs-ORD1', 'rs-LONx'] as $location) { $cloudCredentials = new Entity\CloudCredentials(); $cloudCredentials->accountId = $environment->getAccountId(); $cloudCredentials->envId = $environment->id; $cloudCredentials->cloud = "{$location}.{$platform}"; $cloudCredentials->name = "{$environment->id}-{$environment->getAccountId()}-{$cloudCredentials->cloud}-" . \Scalr::GenerateUID(true); foreach ($platformVariables[$platform] as $name => $newName) { $value = $environment->getPlatformConfigValue($name, true, $location); if ($value === null) { $value = false; } $cloudCredentials->properties[$newName] = $value; } $cloudCredentials->save(); $cloudCredentials->bindToEnvironment($environment); } break; default: $cloudCredentials = new Entity\CloudCredentials(); $cloudCredentials->accountId = $environment->getAccountId(); $cloudCredentials->envId = $environment->id; $cloudCredentials->cloud = $platform; $cloudCredentials->name = "{$environment->id}-{$environment->getAccountId()}-{$platform}-" . \Scalr::GenerateUID(true); $cloudCredentials->status = Entity\CloudCredentials::STATUS_ENABLED; foreach ($platformVariables[$platform] as $name => $newName) { $value = $environment->getPlatformConfigValue($name); if ($value === null) { $value = false; } $cloudCredentials->properties[$newName] = $value; } $cloudCredentials->save(); $cloudCredentials->bindToEnvironment($environment); break; } } catch (Exception $e) { $this->console->error(get_class($e) . " in {$e->getFile()} on line {$e->getLine()}: " . $e->getMessage()); error_log(get_class($e) . " in {$e->getFile()} at line {$e->getLine()}: {$e->getMessage()}\n{$e->getTraceAsString()}"); } } } }
/** * Makes clod credentials entity for specified platform * * @param string $platform Cloud credentials platform * @param array $parameters Array of cloud credentials parameters * @param int $status optional Cloud credentials status * * @return Entity\CloudCredentials Returns new cloud credentials entity * * @throws Exception */ public function makeCloudCredentials($platform, $parameters, $status = Entity\CloudCredentials::STATUS_ENABLED) { $cloudCredentials = new Entity\CloudCredentials(); $cloudCredentials->envId = $this->env->id; $cloudCredentials->accountId = $this->env->getAccountId(); $cloudCredentials->cloud = $platform; $cloudCredentials->name = "{$this->env->id}-{$this->env->getAccountId()}-{$platform}-" . \Scalr::GenerateUID(true); $cloudCredentials->status = $status; try { $this->db->BeginTrans(); $cloudCredentials->save(); $cloudCredentials->properties->saveSettings($parameters); $cloudCredentials->bindToEnvironment($this->env); $this->db->CommitTrans(); } catch (Exception $e) { $this->db->RollbackTrans(); throw $e; } $cloudCredentials->cache($this->env->getContainer()); return $cloudCredentials; }