Overview
  • Namespace
  • Class

Namespaces

  • OpenCloud
    • Autoscale
      • Resource
    • CloudMonitoring
      • Collection
      • 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
      • Collection
      • Enum
      • Resource
    • Networking
      • Resource
    • ObjectStore
      • Constants
      • Exception
      • Resource
      • Upload
    • Orchestration
      • Resource
    • Queues
      • Collection
      • Exception
      • Resource
    • Volume
      • Resource

Classes

  • OpenCloud\Volume\Resource\Snapshot
  • OpenCloud\Volume\Resource\Volume
  • OpenCloud\Volume\Resource\VolumeType
  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\Compute;
 19 
 20 use OpenCloud\Common\Exceptions;
 21 use OpenCloud\Common\Http\Client;
 22 use OpenCloud\Common\Service\NovaService;
 23 
 24 /**
 25  * The Compute class represents the OpenStack Nova service.
 26  *
 27  * It is constructed from a OpenStack object and requires a service name,
 28  * region, and URL type to select the proper endpoint from the service
 29  * catalog. However, constants can be used to define default values for
 30  * these to make it easier to use:
 31  *
 32  * Creating a compute object:
 33  *
 34  * <code>
 35  * $rackspace = new OpenCloud\Rackspace(...);
 36  * $dallas = new Compute(
 37  *    $rackspace,              // connection
 38  *   'cloudServersOpenStack',  // the service's name
 39  *   'DFW',                    // region identifier
 40  *   'publicURL'               // URL type
 41  *  );
 42  * </code>
 43  *
 44  * The easy way (with defaults); this assumes that the constants (RAXSDK_...)
 45  * are defined elsewhere *before* the inclusion of the first SDK library file:
 46  *
 47  * <code>
 48  * $rackspace = new OpenCloud\Rackspace(...);
 49  * $dallas = new OpenCloud\Compute($rackspace); // uses defaults
 50  * </code>
 51  *
 52  */
 53 class Service extends NovaService
 54 {
 55     const DEFAULT_TYPE = 'compute';
 56     const DEFAULT_NAME = 'cloudServersOpenStack';
 57 
 58     protected $additionalExtensions = array('OS-FLV-DISABLED');
 59 
 60     public function __construct(Client $client, $type = null, $name = null, $region = null, $urlType = null)
 61     {
 62         parent::__construct($client, $type, $name, $region, $urlType);
 63 
 64         // @see https://github.com/rackspace/php-opencloud/issues/353
 65         if (strpos($this->getUrl()->getPath(), '/v1.0/') !== false) {
 66             throw new Exceptions\UnsupportedVersionError(sprintf(
 67                 'Sorry; API version /v1.0 is not supported [%s]',
 68                 $this->getUrl()
 69             ));
 70         }
 71 
 72         $this->loadNamespaces();
 73     }
 74 
 75     /**
 76      * Returns a Server object associated with this Compute service
 77      *
 78      * This is a factory method and should generally be used to create server
 79      * objects (thus ensuring that they are correctly associated with the
 80      * server) instead of calling the Server class explicitly.
 81      *
 82      * @api
 83      * @param string $id - if specified, the server with the ID is retrieved
 84      * @returns Resource\Server object
 85      */
 86     public function server($id = null)
 87     {
 88         return new Resource\Server($this, $id);
 89     }
 90 
 91     /**
 92      * Returns a Collection of server objects, filtered by the specified
 93      * parameters
 94      *
 95      * This is a factory method and should normally be called instead of
 96      * creating a ServerList object directly.
 97      *
 98      * @api
 99      * @param boolean $details - if TRUE, full server details are returned; if
100      *                         FALSE, just the minimal set of info is listed. Defaults to TRUE;
101      *                         you might set this to FALSE to improve performance at the risk of
102      *                         not having all the information you need.
103      * @param array   $filter  - a set of key/value pairs that is passed to the
104      *                         servers list for filtering
105      * @returns \OpenCloud\Common\Collection
106      */
107     public function serverList($details = true, array $filter = array())
108     {
109         $url = $this->getUrl(Resource\Server::resourceName() . (($details) ? '/detail' : ''), $filter);
110 
111         return $this->collection('OpenCloud\Compute\Resource\Server', $url);
112     }
113 
114     /**
115      * Returns a Network object
116      *
117      * @api
118      * @param string $id the network ID
119      * @return Resource\Network
120      */
121     public function network($id = null)
122     {
123         return new Resource\Network($this, $id);
124     }
125 
126     /**
127      * Returns a Collection of Network objects
128      *
129      * @api
130      * @param array $filter array of filter key/value pairs
131      * @return \OpenCloud\Common\Collection
132      */
133     public function networkList($filter = array())
134     {
135         return $this->collection('OpenCloud\Compute\Resource\Network');
136     }
137 
138     /**
139      * Returns an image from the service
140      *
141      * This is a factory method and should normally be called instead of
142      * creating an Image object directly.
143      *
144      * @api
145      * @param string $id - if supplied, returns the image with the specified ID.
146      * @return Resource\Image object
147      */
148     public function image($id = null)
149     {
150         return new Resource\Image($this, $id);
151     }
152 
153     /**
154      * Returns a Collection of images (class Image)
155      *
156      * This is a factory method and should normally be used instead of creating
157      * an ImageList object directly.
158      *
159      * @api
160      * @param boolean $details - if TRUE (the default), returns complete image
161      *                         details. Set to FALSE to improve performance, but only return a
162      *                         minimal set of data
163      * @param array   $filter  - key/value pairs to pass to the images resource.
164      *                         The actual values available here are determined by the OpenStack
165      *                         code and any extensions installed by your cloud provider;
166      *                         see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Images-d1e4435.html
167      *                         for current filters available.
168      * @return \OpenCloud\Common\Collection
169      */
170     public function imageList($details = true, array $filter = array())
171     {
172         $url = clone $this->getUrl();
173         $url->addPath('images');
174 
175         if ($details === true) {
176             $url->addPath('detail');
177         }
178 
179         if (count($filter)) {
180             $url->setQuery($filter);
181         }
182 
183         return $this->resourceList('Image', $url);
184     }
185 
186     public function keypair($data = null)
187     {
188         return $this->resource('KeyPair', $data);
189     }
190 
191     public function listKeypairs()
192     {
193         return $this->resourceList('KeyPair', null, $this);
194     }
195 }
196 
API documentation generated by ApiGen