1 <?php
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
17
18 namespace OpenCloud\Volume\Resource;
19
20 use OpenCloud\Common\Resource\PersistentResource;
21
22 23 24
25 class Snapshot extends PersistentResource
26 {
27 public $id;
28 public $display_name;
29 public $display_description;
30 public $volume_id;
31 public $status;
32 public $size;
33 public $created_at;
34 public $metadata;
35
36 protected $force = false;
37
38 protected static $json_name = 'snapshot';
39 protected static $url_resource = 'snapshots';
40
41 protected $createKeys = array(
42 'display_name',
43 'display_description',
44 'volume_id',
45 'force'
46 );
47
48 49 50 51 52 53 54
55 public function rename(array $params = array())
56 {
57 $data = array();
58
59 $keys = array('display_description' => true, 'display_name' => true);
60
61 foreach ($params as $key => $value) {
62 if (isset($keys[$key])) {
63 $data[$key] = $value;
64 } else {
65 throw new \InvalidArgumentException(sprintf(
66 'You cannot update the %s snapshot property. Valid keys are: %s',
67 $key, implode($keys, ',')
68 ));
69 }
70 }
71
72 $json = json_encode(array(
73 'snapshot' => $data
74 ));
75
76 return $this->getClient()
77 ->put($this->getUrl(), self::getJsonHeader(), $json)
78 ->send();
79 }
80
81 public function update($params = array())
82 {
83 return $this->noUpdate();
84 }
85
86 public function name()
87 {
88 return $this->display_name;
89 }
90 }
91