*/ 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); } }