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

  • AbstractSchemaResource
  • Image
  • Member

Interfaces

  • ImageInterface
  • 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\Image\Resource;
19: 
20: use Guzzle\Http\Exception\BadResponseException;
21: use OpenCloud\Common\Exceptions\ForbiddenOperationException;
22: use OpenCloud\Common\Exceptions\ResourceNotFoundException;
23: use OpenCloud\Image\Enum\MemberStatus;
24: 
25: /**
26:  * Class that represents a Member which belongs to a Glance Image. In more general terms, an image member is a user who
27:  * has been granted access to an image. Normally, if an image is not public, only the owner can boot from the image.
28:  *
29:  * @package OpenCloud\Images\Resource
30:  */
31: class Member extends AbstractSchemaResource
32: {
33:     protected static $url_resource = 'members';
34:     protected static $json_name = '';
35:     protected static $json_collection_name = 'members';
36: 
37:     /**
38:      * @var array Enumerated types
39:      */
40:     private $allowedStates = array(
41:         MemberStatus::ACCEPTED,
42:         MemberStatus::PENDING,
43:         MemberStatus::REJECTED
44:     );
45: 
46:     /**
47:      * Update the status of a member, allowing them to fully access an image after being invited
48:      *
49:      * @param $status The eventual status this member wants.
50:      * @return \Guzzle\Http\Message\Response
51:      * @throws \OpenCloud\Common\Exceptions\ForbiddenOperationException
52:      * @throws \OpenCloud\Common\Exceptions\ResourceNotFoundException
53:      * @throws \Guzzle\Http\Exception\BadResponseException
54:      * @throws \InvalidArgumentException
55:      */
56:     public function updateStatus($status)
57:     {
58:         if (!in_array($status, $this->allowedStates)) {
59:             throw new \InvalidArgumentException(
60:                 sprintf('Status must be one of these defined types: %s', implode($this->allowedStates, ','))
61:             );
62:         }
63: 
64:         $json = json_encode(array('status' => $status));
65: 
66:         $request = $this->getClient()->put($this->getUrl(), self::getJsonHeader(), $json);
67: 
68:         try {
69:             return $request->send();
70:         } catch (BadResponseException $e) {
71:             $response = $e->getResponse();
72: 
73:             switch ($response->getStatusCode()) {
74:                 case 403:
75:                     $exception = ForbiddenOperationException::factory($e);
76:                     break;
77:                 case 404:
78:                     $exception = ResourceNotFoundException::factory($e);
79:                     break;
80:             }
81: 
82:             throw isset($exception) ? $exception : $e;
83:         }
84:     }
85: 
86:     /**
87:      * @return \Guzzle\Http\Message\Response
88:      */
89:     public function delete()
90:     {
91:         return $this->getClient()->delete($this->getUrl())->send();
92:     }
93: }
94: 
PHP OpenCloud API API documentation generated by ApiGen 2.8.0