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\CloudMonitoring\Resource;
19:
20: use OpenCloud\CloudMonitoring\Exception;
21: use OpenCloud\Common\Http\Message\Formatter;
22:
23: /**
24: * Agent class.
25: */
26: class Agent extends ReadOnlyResource
27: {
28: /**
29: * Agent IDs are user specified strings that are a maximum of 255 characters and can contain letters, numbers,
30: * dashes and dots.
31: *
32: * @var string
33: */
34: private $id;
35:
36: /**
37: * @var int UTC timestamp of last connection.
38: */
39: private $last_connected;
40:
41: protected static $json_name = false;
42: protected static $json_collection_name = 'values';
43: protected static $url_resource = 'agents';
44:
45: /**
46: * @return mixed
47: * @throws \OpenCloud\CloudMonitoring\Exception\AgentException
48: */
49: public function getConnections()
50: {
51: if (!$this->getId()) {
52: throw new Exception\AgentException(
53: 'Please specify an "ID" value'
54: );
55: }
56:
57: return $this->getService()->resourceList('AgentConnection', $this->getUrl('connections'));
58: }
59:
60: /**
61: * @param $connectionId
62: * @return mixed
63: * @throws \OpenCloud\CloudMonitoring\Exception\AgentException
64: */
65: public function getConnection($connectionId)
66: {
67: if (!$this->getId()) {
68: throw new Exception\AgentException(
69: 'Please specify an "ID" value'
70: );
71: }
72:
73: $url = clone $this->getUrl();
74: $url->addPath('connections')->addPath($connectionId);
75:
76: $response = $this->getClient()->get($url)->send();
77: $body = Formatter::decode($response);
78:
79: return $this->getService()->resource('AgentConnection', $body);
80: }
81: }
82: