*/
namespace OpenCloud;
/**
* 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:
*
* $username = 'FRED';
* $apiKey = '0900af093093788912388fc09dde090ffee09';
* $conn = new Rackspace(
* 'https://identity.api.rackspacecloud.com/v2.0/',
* array(
* 'username' => $username,
* 'apiKey' => $apiKey
* ));
*
*/
class Rackspace extends OpenStack
{
//this is the JSON string for our new credentials
const APIKEYTEMPLATE = <<Secret();
if (isset($sec['username'])
&& isset($sec['apiKey'])
) {
return sprintf(
self::APIKEYTEMPLATE,
$sec['username'],
$sec['apiKey']
);
} else {
return parent::Credentials();
}
}
/**
* Creates a new DbService (Database as a Service) object
*
* This is a factory method that is Rackspace-only (NOT part of OpenStack).
*
* @param string $name the name of the service (e.g., 'Cloud Databases')
* @param string $region the region (e.g., 'DFW')
* @param string $urltype the type of URL (e.g., 'publicURL');
*/
public function DbService($name = null, $region = null, $urltype = null)
{
return $this->Service('Database', $name, $region, $urltype);
}
/**
* Creates a new LoadBalancerService object
*
* This is a factory method that is Rackspace-only (NOT part of OpenStack).
*
* @param string $name the name of the service
* (e.g., 'Cloud Load Balancers')
* @param string $region the region (e.g., 'DFW')
* @param string $urltype the type of URL (e.g., 'publicURL');
*/
public function LoadBalancerService($name = null, $region = null, $urltype = null)
{
return $this->Service('LoadBalancer', $name, $region, $urltype);
}
/**
* creates a new DNS service object
*
* This is a factory method that is currently Rackspace-only
* (not available via the OpenStack class)
*/
public function DNS($name = null, $region = null, $urltype = null)
{
return $this->Service('DNS', $name, $region, $urltype);
}
/**
* creates a new CloudMonitoring service object
*
* This is a factory method that is currently Rackspace-only
* (not available via the OpenStack class)
*/
public function CloudMonitoring($name=null, $region=null, $urltype=null)
{
return $this->Service('CloudMonitoring', $name, $region, $urltype);
}
/**
* creates a new Autoscale service object
*
* This is a factory method that is currently Rackspace-only
* (not available via the OpenStack class)
*/
public function Autoscale($name=null, $region=null, $urltype=null)
{
return $this->Service('Autoscale', $name, $region, $urltype);
}
}