Overview

Namespaces

  • OpenCloud
    • Autoscale
      • Resource
    • CloudMonitoring
      • Exception
      • Resource
    • Common
      • Collection
      • Constants
      • Exceptions
      • Http
        • Message
      • Log
      • Resource
      • Service
    • Compute
      • Constants
      • Exception
      • Resource
    • Database
      • Resource
    • DNS
      • Collection
      • Resource
    • Identity
      • Constants
      • Resource
    • Image
      • Enum
      • Resource
        • JsonPatch
        • Schema
    • LoadBalancer
      • Enum
      • Resource
    • ObjectStore
      • Constants
      • Exception
      • Resource
      • Upload
    • Orchestration
    • Queues
      • Exception
      • Resource
    • Volume
      • Resource
  • PHP

Classes

  • OpenStack
  • Rackspace
  • Version
  • Overview
  • Namespace
  • Class
  • Tree
  • Download
  1: <?php
  2: /**
  3:  * Copyright 2012-2014 Rackspace US, Inc.
  4:  *
  5:  * Licensed under the Apache License, Version 2.0 (the "License");
  6:  * you may not use this file except in compliance with the License.
  7:  * You may obtain a copy of the License at
  8:  *
  9:  * http://www.apache.org/licenses/LICENSE-2.0
 10:  *
 11:  * Unless required by applicable law or agreed to in writing, software
 12:  * distributed under the License is distributed on an "AS IS" BASIS,
 13:  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14:  * See the License for the specific language governing permissions and
 15:  * limitations under the License.
 16:  */
 17: 
 18: namespace OpenCloud;
 19: 
 20: use OpenCloud\Common\Exceptions\CredentialError;
 21: use OpenCloud\Common\Service\ServiceBuilder;
 22: 
 23: /**
 24:  * Rackspace extends the OpenStack class with support for Rackspace's
 25:  * API key and tenant requirements.
 26:  *
 27:  * The only difference between Rackspace and OpenStack is that the
 28:  * Rackspace class generates credentials using the username
 29:  * and API key, as required by the Rackspace authentication
 30:  * service.
 31:  *
 32:  * Example:
 33:  * <pre><code>
 34:  * $client = new Rackspace(
 35:  *      'https://identity.api.rackspacecloud.com/v2.0/',
 36:  *      array(
 37:  *          'username' => 'FRED',
 38:  *          'apiKey'   => '0900af093093788912388fc09dde090ffee09'
 39:  *      )
 40:  * );
 41:  * </code></pre>
 42:  */
 43: class Rackspace extends OpenStack
 44: {
 45:     const US_IDENTITY_ENDPOINT = 'https://identity.api.rackspacecloud.com/v2.0/';
 46:     const UK_IDENTITY_ENDPOINT = 'https://lon.identity.api.rackspacecloud.com/v2.0/';
 47: 
 48:     /**
 49:      * Generates Rackspace API key credentials
 50:      * {@inheritDoc}
 51:      */
 52:     public function getCredentials()
 53:     {
 54:         $secret = $this->getSecret();
 55: 
 56:         if (!empty($secret['username']) && !empty($secret['apiKey'])) {
 57: 
 58:             $credentials = array('auth' => array(
 59:                 'RAX-KSKEY:apiKeyCredentials' => array(
 60:                     'username' => $secret['username'],
 61:                     'apiKey'   => $secret['apiKey']
 62:                 )
 63:             ));
 64: 
 65:             if (!empty($secret['tenantName'])) {
 66:                 $credentials['auth']['tenantName'] = $secret['tenantName'];
 67:             } elseif (!empty($secret['tenantId'])) {
 68:                 $credentials['auth']['tenantId'] = $secret['tenantId'];
 69:             }
 70: 
 71:             return json_encode($credentials);
 72:         } else {
 73:             throw new CredentialError('Unrecognized credential secret');
 74:         }
 75:     }
 76: 
 77:     /**
 78:      * Creates a new Database service. Note: this is a Rackspace-only feature.
 79:      *
 80:      * @param string $name    The name of the service as it appears in the Catalog
 81:      * @param string $region  The region (DFW, IAD, ORD, LON, SYD)
 82:      * @param string $urltype The URL type ("publicURL" or "internalURL")
 83:      * @return \OpenCloud\Database\Service
 84:      */
 85:     public function databaseService($name = null, $region = null, $urltype = null)
 86:     {
 87:         return ServiceBuilder::factory($this, 'OpenCloud\Database\Service', array(
 88:             'name'    => $name,
 89:             'region'  => $region,
 90:             'urlType' => $urltype
 91:         ));
 92:     }
 93: 
 94:     /**
 95:      * Creates a new Load Balancer service. Note: this is a Rackspace-only feature.
 96:      *
 97:      * @param string $name    The name of the service as it appears in the Catalog
 98:      * @param string $region  The region (DFW, IAD, ORD, LON, SYD)
 99:      * @param string $urltype The URL type ("publicURL" or "internalURL")
100:      * @return \OpenCloud\LoadBalancer\Service
101:      */
102:     public function loadBalancerService($name = null, $region = null, $urltype = null)
103:     {
104:         return ServiceBuilder::factory($this, 'OpenCloud\LoadBalancer\Service', array(
105:             'name'    => $name,
106:             'region'  => $region,
107:             'urlType' => $urltype
108:         ));
109:     }
110: 
111:     /**
112:      * Creates a new DNS service. Note: this is a Rackspace-only feature.
113:      *
114:      * @param string $name    The name of the service as it appears in the Catalog
115:      * @param string $region  The region (DFW, IAD, ORD, LON, SYD)
116:      * @param string $urltype The URL type ("publicURL" or "internalURL")
117:      * @return OpenCloud\DNS\Service
118:      */
119:     public function dnsService($name = null, $region = null, $urltype = null)
120:     {
121:         return ServiceBuilder::factory($this, 'OpenCloud\DNS\Service', array(
122:             'name'    => $name,
123:             'region'  => $region,
124:             'urlType' => $urltype
125:         ));
126:     }
127: 
128:     /**
129:      * Creates a new CloudMonitoring service. Note: this is a Rackspace-only feature.
130:      *
131:      * @param string $name    The name of the service as it appears in the Catalog
132:      * @param string $region  The region (DFW, IAD, ORD, LON, SYD)
133:      * @param string $urltype The URL type ("publicURL" or "internalURL")
134:      * @return \OpenCloud\CloudMonitoring\Service
135:      */
136:     public function cloudMonitoringService($name = null, $region = null, $urltype = null)
137:     {
138:         return ServiceBuilder::factory($this, 'OpenCloud\CloudMonitoring\Service', array(
139:             'name'    => $name,
140:             'region'  => $region,
141:             'urlType' => $urltype
142:         ));
143:     }
144: 
145:     /**
146:      * Creates a new CloudQueues service. Note: this is a Rackspace-only feature.
147:      *
148:      * @param string $name    The name of the service as it appears in the Catalog
149:      * @param string $region  The region (DFW, IAD, ORD, LON, SYD)
150:      * @param string $urltype The URL type ("publicURL" or "internalURL")
151:      * @return \OpenCloud\Autoscale\Service
152:      */
153:     public function autoscaleService($name = null, $region = null, $urltype = null)
154:     {
155:         return ServiceBuilder::factory($this, 'OpenCloud\Autoscale\Service', array(
156:             'name'    => $name,
157:             'region'  => $region,
158:             'urlType' => $urltype
159:         ));
160:     }
161: 
162:     /**
163:      * Creates a new CloudQueues service. Note: this is a Rackspace-only feature.
164:      *
165:      * @param string $name    The name of the service as it appears in the Catalog
166:      * @param string $region  The region (DFW, IAD, ORD, LON, SYD)
167:      * @param string $urltype The URL type ("publicURL" or "internalURL")
168:      * @return \OpenCloud\Queues\Service
169:      */
170:     public function queuesService($name = null, $region = null, $urltype = null)
171:     {
172:         return ServiceBuilder::factory($this, 'OpenCloud\Queues\Service', array(
173:             'name'    => $name,
174:             'region'  => $region,
175:             'urlType' => $urltype
176:         ));
177:     }
178: }
179: 
PHP OpenCloud API API documentation generated by ApiGen 2.8.0