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: