Blame view

sources/3rdparty/rackspace/php-opencloud/lib/OpenCloud/Volume/Resource/Volume.php 1.96 KB
6d9380f96   Cédric Dupont   Update sources OC...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
  <?php
  /**
   * PHP OpenCloud library.
   * 
   * @copyright 2014 Rackspace Hosting, Inc. See LICENSE for information.
   * @license   https://www.apache.org/licenses/LICENSE-2.0
   * @author    Glen Campbell <glen.campbell@rackspace.com>
   * @author    Jamie Hannaford <jamie.hannaford@rackspace.com>
   */
  
  namespace OpenCloud\Volume\Resource;
  
  use OpenCloud\Common\PersistentObject;
  use OpenCloud\Common\Lang;
  use OpenCloud\Common\Exceptions;
  
  /**
   * The Volume class represents a single block storage volume
   */
  class Volume extends PersistentObject 
  {
  
      public $id;
      public $status;
      public $display_name;
      public $display_description;
      public $size;
      public $volume_type;
      public $metadata = array();
      public $availability_zone;
      public $snapshot_id;
      public $attachments = array();
      public $created_at;
      
      protected static $json_name = 'volume';
      protected static $url_resource = 'volumes';
  
      protected $createKeys = array(
          'snapshot_id',
          'display_name',
          'display_description',
          'size',
          'volume_type',
          'availability_zone'
      );
  
      // Normally we'd populate a sibling object when this one refreshes
      // but there are times (i.e. during creation) when the NAME of the VolumeType
      // is returned, instead of its primary key...
      protected $associatedResources = array(
          //'volume_type' => 'VolumeType'
      );
      
      public function update($params = array()) 
      {
          throw new Exceptions\UpdateError(
              Lang::translate('Block storage volumes cannot be updated')
          );
      }
  
      public function name() 
      {
          return $this->display_name;
      }
  
      protected function createJson() 
      {
          $element = parent::createJson();
  
          if ($this->propertyExists('volume_type') 
              && $this->getProperty('volume_type') instanceof VolumeType
          ) {
              $element->volume->volume_type = $this->volume_type->name();
          }
  
          return $element;
      }
  
  }