Overview

Namespaces

  • OpenCloud
    • Autoscale
      • Resource
    • CloudMonitoring
      • Exception
      • Resource
    • Common
      • Collection
      • Constants
      • Exceptions
      • Http
        • Message
      • Log
      • Resource
      • Service
    • Compute
      • Constants
      • Exception
      • Resource
    • Database
      • Resource
    • DNS
      • Collection
      • Resource
    • Identity
      • Constants
      • Resource
    • Image
      • Enum
      • Resource
        • JsonPatch
        • Schema
    • LoadBalancer
      • Enum
      • Resource
    • ObjectStore
      • Constants
      • Exception
      • Resource
      • Upload
    • Orchestration
    • Queues
      • Exception
      • Resource
    • Volume
      • Resource
  • PHP

Classes

  • AbstractResource
  • Access
  • Algorithm
  • AllowedDomain
  • ConnectionLogging
  • ConnectionThrottle
  • ContentCaching
  • ErrorPage
  • HealthMonitor
  • LoadBalancer
  • Metadata
  • Node
  • NodeEvent
  • NonIdUriResource
  • Protocol
  • ReadOnlyResource
  • SessionPersistence
  • SSLTermination
  • Stats
  • UsageRecord
  • VirtualIp
  • Overview
  • Namespace
  • Class
  • Tree
  • Download
 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\LoadBalancer\Resource;
19: 
20: use Guzzle\Http\Exception\ClientErrorResponseException;
21: use OpenCloud\Common\Resource\PersistentResource;
22: 
23: /**
24:  * Class that represents abstract functionality for Load Balancer resources
25:  *
26:  * @package OpenCloud\LoadBalancer\Resource
27:  */
28: abstract class AbstractResource extends PersistentResource
29: {
30:     public function refresh($id = null, $url = null)
31:     {
32:         if (!isset($this->id)) {
33:             return false;
34:         }
35: 
36:         try {
37:             return parent::refresh($id, $url);
38:         } catch (ClientErrorResponseException $e) {
39:             return false;
40:         }
41:     }
42: 
43:     /**
44:      * Causes resource to refresh based on parent's URL
45:      */
46:     protected function refreshFromParent()
47:     {
48:         $url = clone $this->getParent()->getUrl();
49:         $url->addPath($this->resourceName());
50: 
51:         $response = $this->getClient()->get($url)->send();
52: 
53:         if (null !== ($decoded = $this->parseResponse($response))) {
54:             $this->populate($decoded);
55:         }
56:     }
57: 
58:     protected function createJson()
59:     {
60:         $object = new \stdClass;
61: 
62:         foreach ($this->createKeys as $item) {
63:             $object->$item = $this->$item;
64:         }
65: 
66:         if ($top = $this->jsonName()) {
67:             $object = array($top => $object);
68:         }
69: 
70:         return $object;
71:     }
72: 
73:     protected function updateJson($params = array())
74:     {
75:         return $this->createJson();
76:     }
77: 
78:     public function name()
79:     {
80:         $classArray = explode('\\', get_class($this));
81: 
82:         return method_exists($this->getParent(), 'id')
83:             ? sprintf('%s-%s', end($classArray), $this->getParent()->id())
84:             : parent::name();
85:     }
86: }
87: 
PHP OpenCloud API API documentation generated by ApiGen 2.8.0