     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: