Scalr\Api\Service\User\V1beta0\Adapter\ScalingRule\BasicScalingRuleAdapter::validateEntity PHP Method

validateEntity() public method

See also: ScalingRuleAdapter::validateEntity()
public validateEntity ( $entity )
    public function validateEntity($entity)
    {
        parent::validateEntity($entity);
        if (!$entity->getFarmRole()->getRole()->isScalarized) {
            throw new ApiErrorException(409, ErrorMessage::ERR_CONFIGURATION_MISMATCH, sprintf('Can not add %s Scaling metric to the agentless Role', ScalingMetricAdapter::metricNameToData($entity->metric->name)));
        }
        $criteria[] = ['farmRoleId' => $entity->farmRoleId];
        $criteria[] = ['metricId' => ScalingMetric::METRIC_DATE_AND_TIME_ID];
        if (!empty(FarmRoleScalingMetric::findOne($criteria))) {
            throw new ApiErrorException(409, ErrorMessage::ERR_UNICITY_VIOLATION, 'DateAndTime metric cannot be used with others');
        }
        $settings = $entity->settings;
        if ($entity->metric->isInvert) {
            $this->validateNumericSetting($settings, FarmRoleScalingMetric::MIN, 'scaleUp');
            $this->validateNumericSetting($settings, FarmRoleScalingMetric::MAX, 'scaleDown');
        } else {
            $this->validateNumericSetting($settings, FarmRoleScalingMetric::MIN, 'scaleDown');
            $this->validateNumericSetting($settings, FarmRoleScalingMetric::MAX, 'scaleUp');
        }
        if ($entity->metricId != ScalingMetric::METRIC_SQS_QUEUE_SIZE_ID && $entity->settings[FarmRoleScalingMetric::MIN] >= $entity->settings[FarmRoleScalingMetric::MAX]) {
            throw new ApiErrorException(400, ErrorMessage::ERR_INVALID_VALUE, sprintf('Scale up value must be %s than Scale down value', $entity->metric->isInvert ? 'less' : 'greater'));
        }
    }

Usage Example

 /**
  * {@inheritdoc}
  * @see BasicScalingRuleAdapter::validateEntity()
  */
 public function validateEntity($entity)
 {
     parent::validateEntity($entity);
     $this->validateNumericSetting($entity->settings, FarmRoleScalingMetric::PERIOD);
     if (!in_array($entity->settings[FarmRoleScalingMetric::PERIOD], static::$calculatingPeriod)) {
         throw new ApiErrorException(400, ErrorMessage::ERR_INVALID_VALUE, sprintf('Property calculatingPeriod is invalid. Allowed periods are %s', implode(', ', static::$calculatingPeriod)));
     }
 }
All Usage Examples Of Scalr\Api\Service\User\V1beta0\Adapter\ScalingRule\BasicScalingRuleAdapter::validateEntity