Scalr_Scripting_GlobalVariables::setValues PHP Method

setValues() public method

public setValues ( array | ArrayObject $variables, integer $roleId, integer $farmId, integer $farmRoleId, string $serverId = '', boolean $throwException = true, boolean $skipValidation = false ) : array | boolean
$variables array | ArrayObject
$roleId integer optional
$farmId integer optional
$farmRoleId integer optional
$serverId string optional
$throwException boolean optional
$skipValidation boolean optional
return array | boolean
    public function setValues($variables, $roleId = 0, $farmId = 0, $farmRoleId = 0, $serverId = '', $throwException = true, $skipValidation = false)
    {
        if (!$skipValidation) {
            $validResult = $this->validateValues($variables, $roleId, $farmId, $farmRoleId, $serverId);
            if ($validResult !== true) {
                if ($throwException) {
                    throw new ValidationErrorException($this->getErrorMessage());
                } else {
                    return $validResult;
                }
            }
        }
        $currentValues = $this->_getValues($roleId, $farmId, $farmRoleId, $serverId);
        foreach ($variables as $variable) {
            $deleteFlag = !empty($variable['flagDelete']) && $variable['flagDelete'] == 1 ? true : false;
            $updateValue = true;
            $name = $variable['name'];
            if (empty($name)) {
                continue;
            }
            if (empty($variable['current']) && !empty($variable['default'])) {
                if (!empty($currentValues[$name]['current'])) {
                    $deleteFlag = true;
                } else {
                    if (!$deleteFlag) {
                        continue;
                    }
                }
                $variable = $variable['default'];
            } else {
                if (!empty($variable['current'])) {
                    $variable = $variable['current'];
                }
            }
            if (array_key_exists($name, $this->configurationVars) && empty($currentValues[$name]['default'])) {
                $variable = array_merge($variable, $this->configurationVarsDefaults, $this->configurationVars[$name]);
            }
            $variable['value'] = isset($variable['value']) ? trim($variable['value']) : '';
            if ($variable['value'] != '') {
                $variable['value'] = $this->crypto->encrypt($variable['value']);
            } else {
                if (isset($currentValues[$name]['default'])) {
                    $deleteFlag = true;
                }
            }
            if ($deleteFlag) {
                $sql = array("`name` = ?");
                $params = array($name);
            } else {
                $sql = $sqlUpdate = ["`flag_final` = ?", "`flag_required` = ?", "`flag_hidden` = ?", "`validator` = ?", "`format` = ?", "`description` = ?", "`category` = ?"];
                $sql[] = "`name` = ?";
                $params = array(!empty($variable['flagFinal']) && $variable['flagFinal'] == 1 ? 1 : 0, !empty($variable['flagRequired']) ? $variable['flagRequired'] : 'off', !empty($variable['flagHidden']) && $variable['flagHidden'] == 1 ? 1 : 0, !empty($variable['validator']) ? $variable['validator'] : '', !empty($variable['format']) ? $variable['format'] : '', !empty($variable['description']) ? $variable['description'] : '', !empty($variable['category']) ? strtolower($variable['category']) : '', $name);
                $sqlUpdateParams = $params;
                array_pop($sqlUpdateParams);
                if ($updateValue) {
                    $sql[] = "`value` = ?";
                    $params[] = $variable["value"];
                    $sqlUpdate[] = "`value` = ?";
                    $sqlUpdateParams[] = $variable["value"];
                }
            }
            switch ($this->scope) {
                case ScopeInterface::SCOPE_SCALR:
                    $table = "variables";
                    break;
                case ScopeInterface::SCOPE_ACCOUNT:
                    $table = "account_variables";
                    $sql[] = "account_id = ?";
                    $params[] = $this->accountId;
                    break;
                case ScopeInterface::SCOPE_ENVIRONMENT:
                    $table = "client_environment_variables";
                    $sql[] = "env_id = ?";
                    $params[] = $this->envId;
                    break;
                case ScopeInterface::SCOPE_ROLE:
                    $table = "role_variables";
                    $sql[] = "role_id = ?";
                    $params[] = $roleId;
                    break;
                case ScopeInterface::SCOPE_FARM:
                    $table = "farm_variables";
                    $sql[] = "farm_id = ?";
                    $params[] = $farmId;
                    break;
                case ScopeInterface::SCOPE_FARMROLE:
                    $table = "farm_role_variables";
                    $sql[] = "farm_role_id = ?";
                    $params[] = $farmRoleId;
                    break;
                case ScopeInterface::SCOPE_SERVER:
                    $table = "server_variables";
                    $sql[] = "server_id = ?";
                    $params[] = $serverId;
                    break;
            }
            if ($deleteFlag) {
                $this->db->Execute("DELETE FROM `{$table}` WHERE " . implode(" AND ", $sql), $params);
            } else {
                $this->db->Execute("INSERT INTO `{$table}` SET " . implode(",", $sql) . " ON DUPLICATE KEY UPDATE " . implode(",", $sqlUpdate), array_merge($params, $sqlUpdateParams));
            }
        }
        return true;
    }

Usage Example

示例#1
0
 public function applyDefinition($definition, $reset = false)
 {
     $resetSettings = array(Entity\FarmRoleSetting::BALANCING_USE_ELB, Entity\FarmRoleSetting::BALANCING_HOSTNAME, Entity\FarmRoleSetting::BALANCING_NAME, Entity\FarmRoleSetting::BALANCING_HC_TIMEOUT, Entity\FarmRoleSetting::BALANCING_HC_TARGET, Entity\FarmRoleSetting::BALANCING_HC_INTERVAL, Entity\FarmRoleSetting::BALANCING_HC_UTH, Entity\FarmRoleSetting::BALANCING_HC_HTH, Entity\FarmRoleSetting::BALANCING_HC_HASH, Entity\FarmRoleSetting::BALANCING_AZ_HASH, Entity\FarmRoleSetting::CLOUDSTACK_STATIC_NAT_MAP, Entity\FarmRoleSetting::AWS_ELASIC_IPS_MAP, Entity\FarmRoleSetting::AWS_S3_BUCKET, Entity\FarmRoleSetting::MYSQL_PMA_USER, Entity\FarmRoleSetting::MYSQL_PMA_PASS, Entity\FarmRoleSetting::MYSQL_PMA_REQUEST_ERROR, Entity\FarmRoleSetting::MYSQL_PMA_REQUEST_TIME, Entity\FarmRoleSetting::MYSQL_LAST_BCP_TS, Entity\FarmRoleSetting::MYSQL_LAST_BUNDLE_TS, Entity\FarmRoleSetting::MYSQL_IS_BCP_RUNNING, Entity\FarmRoleSetting::MYSQL_IS_BUNDLE_RUNNING, Entity\FarmRoleSetting::MYSQL_BCP_SERVER_ID, Entity\FarmRoleSetting::MYSQL_BUNDLE_SERVER_ID, Entity\FarmRoleSetting::MYSQL_SLAVE_TO_MASTER, Entity\FarmRoleSetting::MYSQL_ROOT_PASSWORD, Entity\FarmRoleSetting::MYSQL_REPL_PASSWORD, Entity\FarmRoleSetting::MYSQL_STAT_PASSWORD, Entity\FarmRoleSetting::MYSQL_LOG_FILE, Entity\FarmRoleSetting::MYSQL_LOG_POS, Entity\FarmRoleSetting::MYSQL_SCALR_SNAPSHOT_ID, Entity\FarmRoleSetting::MYSQL_SCALR_VOLUME_ID, Entity\FarmRoleSetting::MYSQL_SNAPSHOT_ID, Entity\FarmRoleSetting::MYSQL_MASTER_EBS_VOLUME_ID, Entity\FarmRoleSetting::AWS_ELB_ID, Entity\FarmRoleSetting::AWS_ELB_ENABLED, Scalr_Db_Msr::DATA_BACKUP_IS_RUNNING, Scalr_Db_Msr::DATA_BACKUP_LAST_TS, Scalr_Db_Msr::DATA_BACKUP_SERVER_ID, Scalr_Db_Msr::DATA_BUNDLE_IS_RUNNING, Scalr_Db_Msr::DATA_BUNDLE_LAST_TS, Scalr_Db_Msr::DATA_BUNDLE_SERVER_ID, Scalr_Db_Msr::SLAVE_TO_MASTER, Scalr_Db_Msr::SNAPSHOT_ID, Scalr_Db_Msr::VOLUME_ID, Scalr_Role_Behavior_RabbitMQ::ROLE_COOKIE_NAME, Scalr_Role_Behavior_RabbitMQ::ROLE_PASSWORD, Scalr_Role_Behavior_RabbitMQ::ROLE_CP_SERVER_ID, Scalr_Role_Behavior_RabbitMQ::ROLE_CP_REQUESTED, Scalr_Role_Behavior_RabbitMQ::ROLE_CP_REQUEST_TIME, Scalr_Role_Behavior_RabbitMQ::ROLE_CP_ERROR_MSG, Scalr_Role_Behavior_RabbitMQ::ROLE_CP_URL, Scalr_Role_Behavior_MongoDB::ROLE_PASSWORD, Scalr_Role_Behavior_MongoDB::ROLE_KEYFILE, Scalr_Role_Behavior_MongoDB::ROLE_CLUSTER_STATUS, Scalr_Role_Behavior_MongoDB::ROLE_CLUSTER_IS_REMOVING_SHARD_INDEX, Scalr_Role_Behavior_MongoDB::DATA_BUNDLE_IS_RUNNING, Scalr_Role_Behavior_MongoDB::DATA_BUNDLE_SERVER_ID, Scalr_Role_Behavior_MongoDB::DATA_BUNDLE_LAST_TS, Scalr_Role_Behavior_Router::ROLE_VPC_NID, Scalr_Role_Behavior_Router::ROLE_VPC_IP, Scalr_Role_Behavior_Router::ROLE_VPC_AID, Scalr_Role_Behavior_Router::ROLE_VPC_ROUTER_CONFIGURED);
     // Set settings
     foreach ($definition->settings as $key => $value) {
         if ($reset && in_array($key, $resetSettings)) {
             continue;
         }
         $this->SetSetting($key, $value, Entity\FarmRoleSetting::TYPE_CFG);
     }
     //Farm Global Variables
     $variables = new Scalr_Scripting_GlobalVariables($this->GetFarmObject()->ClientID, $this->GetFarmObject()->EnvID, ScopeInterface::SCOPE_FARMROLE);
     $variables->setValues($definition->globalVariables, $this->RoleID, $this->FarmID, $this->ID);
     //Storage
     $this->getStorage()->setConfigs($definition->storage);
     // Scripts
     $scripts = array();
     foreach ($definition->scripts as $script) {
         $scripts[] = array('params' => $script->params, 'target' => $script->target, 'order_index' => $script->orderIndex, 'version' => (int) $script->version, 'isSync' => (int) $script->isSync, 'timeout' => $script->timeout, 'event' => $script->event, 'script_id' => (int) $script->scriptId, 'script_path' => $script->scriptPath, 'script_type' => $script->scriptType, 'run_as' => $script->runAs, 'target_roles' => $script->targetRoles, 'target_farmroles' => $script->targetFarmroles, 'target_behaviors' => $script->targetBehaviors);
     }
     $this->SetScripts($scripts);
     // Scaling times
     $this->DB->Execute("DELETE FROM farm_role_scaling_times WHERE farm_roleid=?", array($this->ID));
     foreach ($definition->scalingTimes as $scalingPeriod) {
         $this->DB->Execute("INSERT INTO farm_role_scaling_times SET\n                farm_roleid     = ?,\n                start_time      = ?,\n                end_time        = ?,\n                days_of_week    = ?,\n                instances_count = ?\n            ", array($this->ID, $scalingPeriod->startTime, $scalingPeriod->endTime, $scalingPeriod->daysOfWeek, $scalingPeriod->instanceCount));
     }
     // metrics
     $scalingManager = new Scalr_Scaling_Manager($this);
     $metrics = array();
     foreach ($definition->scalingMetrics as $metric) {
         $metrics[$metric->metricId] = $metric->settings;
     }
     $scalingManager->setFarmRoleMetrics($metrics);
     return true;
 }
All Usage Examples Of Scalr_Scripting_GlobalVariables::setValues