mirror of
https://github.com/lubuntu-team/lubuntu.me.git
synced 2025-02-23 16:21:07 +00:00
178 lines
6.3 KiB
PHP
178 lines
6.3 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 2012-2014 Rackspace US, Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
namespace OpenCloud;
|
|
|
|
use OpenCloud\Common\Exceptions\CredentialError;
|
|
use OpenCloud\Common\Service\ServiceBuilder;
|
|
|
|
/**
|
|
* Rackspace extends the OpenStack class with support for Rackspace's
|
|
* API key and tenant requirements.
|
|
*
|
|
* The only difference between Rackspace and OpenStack is that the
|
|
* Rackspace class generates credentials using the username
|
|
* and API key, as required by the Rackspace authentication
|
|
* service.
|
|
*
|
|
* Example:
|
|
* <pre><code>
|
|
* $client = new Rackspace(
|
|
* 'https://identity.api.rackspacecloud.com/v2.0/',
|
|
* array(
|
|
* 'username' => 'FRED',
|
|
* 'apiKey' => '0900af093093788912388fc09dde090ffee09'
|
|
* )
|
|
* );
|
|
* </code></pre>
|
|
*/
|
|
class Rackspace extends OpenStack
|
|
{
|
|
const US_IDENTITY_ENDPOINT = 'https://identity.api.rackspacecloud.com/v2.0/';
|
|
const UK_IDENTITY_ENDPOINT = 'https://lon.identity.api.rackspacecloud.com/v2.0/';
|
|
|
|
/**
|
|
* Generates Rackspace API key credentials
|
|
* {@inheritDoc}
|
|
*/
|
|
public function getCredentials()
|
|
{
|
|
$secret = $this->getSecret();
|
|
|
|
if (!empty($secret['username']) && !empty($secret['apiKey'])) {
|
|
$credentials = array('auth' => array(
|
|
'RAX-KSKEY:apiKeyCredentials' => array(
|
|
'username' => $secret['username'],
|
|
'apiKey' => $secret['apiKey']
|
|
)
|
|
));
|
|
|
|
if (!empty($secret['tenantName'])) {
|
|
$credentials['auth']['tenantName'] = $secret['tenantName'];
|
|
} elseif (!empty($secret['tenantId'])) {
|
|
$credentials['auth']['tenantId'] = $secret['tenantId'];
|
|
}
|
|
|
|
return json_encode($credentials);
|
|
} else {
|
|
throw new CredentialError('Unrecognized credential secret');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Creates a new Database service. Note: this is a Rackspace-only feature.
|
|
*
|
|
* @param string $name The name of the service as it appears in the Catalog
|
|
* @param string $region The region (DFW, IAD, ORD, LON, SYD)
|
|
* @param string $urltype The URL type ("publicURL" or "internalURL")
|
|
* @return \OpenCloud\Database\Service
|
|
*/
|
|
public function databaseService($name = null, $region = null, $urltype = null)
|
|
{
|
|
return ServiceBuilder::factory($this, 'OpenCloud\Database\Service', array(
|
|
'name' => $name,
|
|
'region' => $region,
|
|
'urlType' => $urltype
|
|
));
|
|
}
|
|
|
|
/**
|
|
* Creates a new Load Balancer service. Note: this is a Rackspace-only feature.
|
|
*
|
|
* @param string $name The name of the service as it appears in the Catalog
|
|
* @param string $region The region (DFW, IAD, ORD, LON, SYD)
|
|
* @param string $urltype The URL type ("publicURL" or "internalURL")
|
|
* @return \OpenCloud\LoadBalancer\Service
|
|
*/
|
|
public function loadBalancerService($name = null, $region = null, $urltype = null)
|
|
{
|
|
return ServiceBuilder::factory($this, 'OpenCloud\LoadBalancer\Service', array(
|
|
'name' => $name,
|
|
'region' => $region,
|
|
'urlType' => $urltype
|
|
));
|
|
}
|
|
|
|
/**
|
|
* Creates a new DNS service. Note: this is a Rackspace-only feature.
|
|
*
|
|
* @param string $name The name of the service as it appears in the Catalog
|
|
* @param string $region The region (DFW, IAD, ORD, LON, SYD)
|
|
* @param string $urltype The URL type ("publicURL" or "internalURL")
|
|
* @return OpenCloud\DNS\Service
|
|
*/
|
|
public function dnsService($name = null, $region = null, $urltype = null)
|
|
{
|
|
return ServiceBuilder::factory($this, 'OpenCloud\DNS\Service', array(
|
|
'name' => $name,
|
|
'region' => $region,
|
|
'urlType' => $urltype
|
|
));
|
|
}
|
|
|
|
/**
|
|
* Creates a new CloudMonitoring service. Note: this is a Rackspace-only feature.
|
|
*
|
|
* @param string $name The name of the service as it appears in the Catalog
|
|
* @param string $region The region (DFW, IAD, ORD, LON, SYD)
|
|
* @param string $urltype The URL type ("publicURL" or "internalURL")
|
|
* @return \OpenCloud\CloudMonitoring\Service
|
|
*/
|
|
public function cloudMonitoringService($name = null, $region = null, $urltype = null)
|
|
{
|
|
return ServiceBuilder::factory($this, 'OpenCloud\CloudMonitoring\Service', array(
|
|
'name' => $name,
|
|
'region' => $region,
|
|
'urlType' => $urltype
|
|
));
|
|
}
|
|
|
|
/**
|
|
* Creates a new CloudQueues service. Note: this is a Rackspace-only feature.
|
|
*
|
|
* @param string $name The name of the service as it appears in the Catalog
|
|
* @param string $region The region (DFW, IAD, ORD, LON, SYD)
|
|
* @param string $urltype The URL type ("publicURL" or "internalURL")
|
|
* @return \OpenCloud\Autoscale\Service
|
|
*/
|
|
public function autoscaleService($name = null, $region = null, $urltype = null)
|
|
{
|
|
return ServiceBuilder::factory($this, 'OpenCloud\Autoscale\Service', array(
|
|
'name' => $name,
|
|
'region' => $region,
|
|
'urlType' => $urltype
|
|
));
|
|
}
|
|
|
|
/**
|
|
* Creates a new CloudQueues service. Note: this is a Rackspace-only feature.
|
|
*
|
|
* @param string $name The name of the service as it appears in the Catalog
|
|
* @param string $region The region (DFW, IAD, ORD, LON, SYD)
|
|
* @param string $urltype The URL type ("publicURL" or "internalURL")
|
|
* @return \OpenCloud\Queues\Service
|
|
*/
|
|
public function queuesService($name = null, $region = null, $urltype = null)
|
|
{
|
|
return ServiceBuilder::factory($this, 'OpenCloud\Queues\Service', array(
|
|
'name' => $name,
|
|
'region' => $region,
|
|
'urlType' => $urltype
|
|
));
|
|
}
|
|
}
|