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
  • Group
  • GroupConfiguration
  • LaunchConfiguration
  • ScalingPolicy
  • Webhook
  • 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\Autoscale\Resource;
19: 
20: use OpenCloud\Common\PersistentObject;
21: 
22: /**
23:  * Contains generic, abstracted functionality for Autoscale resources.
24:  */
25: abstract class AbstractResource extends PersistentObject
26: {
27:     /**
28:      * These are used to set the object used for JSON encode.
29:      *
30:      * @var array
31:      */
32:     public $createKeys = array();
33: 
34:     /**
35:      * These resources are associated with this one. When this resource object
36:      * is populated, if a key is found matching one of these array keys, it is
37:      * set as an instantiated resource object (rather than an arbitrary string
38:      * or stdClass object).
39:      *
40:      * @var array
41:      */
42:     public $associatedResources = array();
43: 
44:     /**
45:      * Same as an associated resource, but it's instantiated as a Collection.
46:      *
47:      * @var array
48:      */
49:     public $associatedCollections = array();
50: 
51:     /**
52:      * Creates the object which will be JSON encoded for request.
53:      *
54:      * @return \stdClass
55:      */
56:     public function createJson()
57:     {
58:         $object = new \stdClass;
59: 
60:         foreach ($this->createKeys as $key) {
61:             if ($value = $this->getProperty($key)) {
62:                 $object->$key = $value;
63:             }
64:         }
65: 
66:         if (count($this->metadata)) {
67:             $object->metadata = new \stdClass;
68:             foreach ($this->getMetadata()->toArray() as $key => $value) {
69:                 $object->metadata->$key = $value;
70:             }
71:         }
72: 
73:         return $object;
74:     }
75: 
76:     /**
77:      * Creates the object which will be JSON encoded for request.
78:      *
79:      * @return array
80:      */
81:     protected function updateJson($params = array())
82:     {
83:         $existing = array();
84:         foreach ($this->createKeys as $key) {
85:             $existing[$key] = $this->$key;
86:         }
87: 
88:         return $existing + $params;
89:     }
90: 
91:     public function primaryKeyField()
92:     {
93:         return 'id';
94:     }
95: }
96: 
PHP OpenCloud API API documentation generated by ApiGen 2.8.0