1 <?php
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
17
18 namespace OpenCloud\Orchestration\Resource;
19
20 use OpenCloud\Common\Http\Message\Formatter;
21 use OpenCloud\Common\Resource\ReadOnlyResource;
22
23 24 25 26 27 28
29 class Resource extends ReadOnlyResource
30 {
31 protected static $url_resource = 'resources';
32 protected static $json_name = 'resource';
33
34 protected $name;
35 protected $description;
36 protected $status;
37 protected $statusReason;
38 protected $logicalId;
39 protected $physicalId;
40 protected $requiredBy;
41 protected $updatedTime;
42 protected $type;
43 protected $links;
44
45 protected $aliases = array(
46 'resource_name' => 'name',
47 'resource_status' => 'status',
48 'resource_status_reason' => 'statusReason',
49 'logical_resource_id' => 'logicalId',
50 'physical_resource_id' => 'physicalId',
51 'required_by' => 'requiredBy',
52 'updated_time' => 'updatedTime',
53 'resource_type' => 'type'
54 );
55
56 public function primaryKeyField()
57 {
58 return 'name';
59 }
60
61 62 63 64 65
66 public function getMetadata()
67 {
68 $url = clone $this->getUrl();
69 $url->addPath('metadata');
70
71 $response = $this->getClient()->get($url)->send();
72 $json = Formatter::decode($response);
73
74 return $json->metadata;
75 }
76
77 78 79 80 81 82
83 public function listEvents(array $params = array())
84 {
85 $url = clone $this->getUrl();
86 $url->addPath(Event::resourceName())->setQuery($params);
87
88 return $this->getService()->resourceList('Event', $url, $this);
89 }
90
91 public function getEvent($id)
92 {
93 return $this->getService()->resource('Event', $id, $this);
94 }
95 }
96