Overview
  • Namespace
  • Class

Namespaces

  • OpenCloud
    • Autoscale
      • Resource
    • CloudMonitoring
      • Collection
      • 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
      • Collection
      • Enum
      • Resource
    • Networking
      • Resource
    • ObjectStore
      • Constants
      • Exception
      • Resource
      • Upload
    • Orchestration
      • Resource
    • Queues
      • Collection
      • Exception
      • Resource
    • Volume
      • Resource

Classes

  • OpenCloud\Volume\Resource\Snapshot
  • OpenCloud\Volume\Resource\Volume
  • OpenCloud\Volume\Resource\VolumeType
 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 
API documentation generated by ApiGen