public function _cloudCredentialsType($from, $to, $action)
{
switch ($action) {
case static::ACT_CONVERT_TO_OBJECT:
/* @var $from Entity\CloudCredentials */
$to->cloudCredentialsType = static::$cloudsMap[$from->cloud];
break;
case static::ACT_CONVERT_TO_ENTITY:
/* @var $to Entity\CloudCredentials */
$to->cloud = array_flip(static::$cloudsMap)[$from->cloudCredentialsType];
break;
case static::ACT_GET_FILTER_CRITERIA:
switch ($from->cloudCredentialsType) {
case static::CLOUD_CREDENTIALS_TYPE_OPENSTACK:
$cloud = ['$in' => PlatformFactory::getCanonicalOpenstackPlatforms()];
break;
case static::CLOUD_CREDENTIALS_TYPE_CLOUDSTACK:
$cloud = ['$in' => PlatformFactory::getCloudstackBasedPlatforms()];
break;
case static::CLOUD_CREDENTIALS_TYPE_RACKSPACE:
$cloud = ['$in' => PlatformFactory::getRackspacePlatforms()];
break;
default:
$clouds = array_flip(static::$cloudsMap);
if (empty($clouds[$from->cloudCredentialsType])) {
throw new ApiErrorException(400, ErrorMessage::ERR_INVALID_VALUE, "Unknown cloudCredentialsType '{$from->cloudCredentialsType}'");
}
$cloud = $clouds[$from->cloudCredentialsType];
break;
}
return [['cloud' => $cloud]];
}
}