Scalr\Api\Service\User\V1beta0\Adapter\CloudCredentials\CloudstackCloudCredentialsAdapter::validateEntity PHP Method

validateEntity() public method

public validateEntity ( CloudCredentials $entity, CloudCredentials $prevConfig = null )
$entity Scalr\Model\Entity\CloudCredentials
$prevConfig Scalr\Model\Entity\CloudCredentials
    public function validateEntity($entity, $prevConfig = null)
    {
        parent::validateEntity($entity, $prevConfig);
        $ccProps = $entity->properties;
        $prevCcProps = isset($prevConfig) ? $prevConfig->properties : null;
        if ($this->needValidation($ccProps, $prevCcProps)) {
            try {
                $cs = new CloudStack($ccProps[Entity\CloudCredentialsProperty::CLOUDSTACK_API_URL], $ccProps[Entity\CloudCredentialsProperty::CLOUDSTACK_API_KEY], $ccProps[Entity\CloudCredentialsProperty::CLOUDSTACK_SECRET_KEY], $entity->cloud);
                $listAccountsData = new ListAccountsData();
                $listAccountsData->listall = true;
            } catch (Exception $e) {
                throw new ApiErrorException(400, ErrorMessage::ERR_INVALID_VALUE, "Failed to verify your Cloudstack credentials: {$e->getMessage()}");
            }
            /* @var $config Yaml */
            $config = $this->controller->getContainer()->config;
            if ($config->defined("scalr.{$entity->cloud}.use_proxy") && $config("scalr.{$entity->cloud}.use_proxy") && in_array($config('scalr.connections.proxy.use_on'), ['both', 'scalr'])) {
                $proxySettings = $config('scalr.connections.proxy');
                $cs->setProxy($proxySettings['host'], $proxySettings['port'], $proxySettings['user'], $proxySettings['pass'], $proxySettings['type'], $proxySettings['authtype']);
            }
            if (!$this->searchCloudstackUser($cs->listAccounts($listAccountsData), $ccProps)) {
                throw new ApiErrorException(400, ErrorMessage::ERR_INVALID_VALUE, "Cannot determine account name for provided keys");
            }
            $entity->status = Entity\CloudCredentials::STATUS_ENABLED;
        }
    }