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\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 
API documentation generated by ApiGen