С версии: 5.11.5 (22.01.2016)
Автор: Igor Vodiasov (invar@scalr.com)
Наследование: implements Scalr\Server\Import\ServerImportInterface
Пример #1
0
 /**
  * {@inheritdoc}
  * @see AbstractServerImport::validate
  */
 protected function validate()
 {
     parent::validate();
     if ($this->orphaned->status != DataType\InstanceStateData::NAME_RUNNING) {
         throw new ValidationErrorException("Instance must be in the Running state.");
     }
     if (isset($this->tags[Scalr_Governance::SCALR_META_TAG_NAME])) {
         throw new ValidationErrorException(sprintf("It is not permitted to set %s tag. Scalr itself sets this tag.", Scalr_Governance::SCALR_META_TAG_NAME));
     }
     $tags = [Scalr_Governance::SCALR_META_TAG_NAME => Scalr_Governance::SCALR_META_TAG_NAME];
     $tags = array_merge($tags, $this->tags);
     foreach ($this->orphaned->tags as $t) {
         $tags[$t['key']] = $t['value'];
     }
     if (count($tags) > Ec2PlatformModule::MAX_TAGS_COUNT) {
         throw new ValidationErrorException(sprintf("Not enough capacity to add tags to the Instance. %d tags are allowed.", Ec2PlatformModule::MAX_TAGS_COUNT));
     }
     if ($this->farmRole->getFarm()->settings[Entity\FarmSetting::EC2_VPC_ID] != $this->orphaned->vpcId) {
         throw new ValidationErrorException(sprintf("Instance and Farm must correspond to the same VPC, but they differ: Farm: %s, Instance: %s.", $this->farmRole->getFarm()->settings[Entity\FarmSetting::EC2_VPC_ID], $this->orphaned->vpcId));
     }
     if ($this->orphaned->subnetId && !in_array($this->orphaned->subnetId, json_decode($this->farmRole->settings[Entity\FarmRoleSetting::AWS_VPC_SUBNET_ID]))) {
         throw new ValidationErrorException(sprintf("Instance subnet '%s' must be enabled in FarmRole. Enabled subnets: %s.", $this->orphaned->subnetId, join(", ", json_decode($this->farmRole->settings[Entity\FarmRoleSetting::AWS_VPC_SUBNET_ID], true))));
     }
 }