Class PersistentObject
Represents an object that can be retrieved, created, updated and deleted.
This class abstracts much of the common functionality between:
* Nova servers; * Swift containers and objects; * DBAAS instances; * Cinder
volumes; * and various other objects that: * have a URL; * can be created,
updated, deleted, or retrieved; * use a standard JSON format with a top-level
element followed by a child object with attributes.
In general, you can create a persistent object class by subclassing this
class and defining some protected, static variables:
* $url_resource - the sub-resource value in the URL of the parent. For example,
if the parent URL is http://something/parent
, then setting this
value to "another" would result in a URL for the persistent object of
http://something/parent/another
.
* $json_name - the top-level JSON object name. For example, if the persistent
object is represented by {"foo": {"attr":value, ...}}
, then set
$json_name to "foo".
* $json_collection_name - optional; this value is the name of a collection of
the persistent objects. If not provided, it defaults to json_name
with an appended "s" (e.g., if json_name
is "foo", then
json_collection_name
would be "foos"). Set this value if the
collection name doesn't follow this pattern.
* $json_collection_element - the common pattern for a collection is:
{"collection": [{"attr":"value",...}, {"attr":"value",...}, ...]}
That is, each element of the array is a \stdClass object containing the object's
attributes. In rare instances, the objects in the array are named, and
json_collection_element
contains the name of the collection
objects. For example, in this JSON response:
{"allowedDomain":[{"allowedDomain":{"name":"foo"}}]}
,
json_collection_element
would be set to "allowedDomain".
The PersistentObject class supports the standard CRUD methods; if these are
not needed (i.e. not supported by the service), the subclass should redefine
these to call the noCreate
, noUpdate
, or
noDelete
methods, which will trigger an appropriate exception. For
example, if an object cannot be created:
function create($params = array()) { $this->noCreate(); }
- OpenCloud\Common\Base
-
OpenCloud\Common\PersistentObject
Direct known subclasses
OpenCloud\Autoscale\Resource\AbstractResource, OpenCloud\CloudMonitoring\Resource\AbstractResource, OpenCloud\DNS\AsyncResponse, OpenCloud\DNS\Object, OpenCloud\LoadBalancer\Resources\LoadBalancer, OpenCloud\LoadBalancer\Resources\Node, OpenCloud\LoadBalancer\Resources\SubResource, OpenCloud\Volume\Snapshot, OpenCloud\Volume\Volume, OpenCloud\Volume\VolumeType, OpenCloud\Compute\Flavor, OpenCloud\Compute\Image, OpenCloud\Compute\Network, OpenCloud\Compute\Server, OpenCloud\Compute\VolumeAttachment, OpenCloud\Database\Database, OpenCloud\Database\Instance, OpenCloud\Database\UserIndirect known subclasses
OpenCloud\Autoscale\Resource\Group, OpenCloud\Autoscale\Resource\GroupConfiguration, OpenCloud\CloudMonitoring\Resource\Notification, OpenCloud\CloudMonitoring\Resource\NotificationPlan, OpenCloud\CloudMonitoring\Resource\ReadonlyResource, OpenCloud\DNS\Domain, OpenCloud\DNS\PtrRecord, OpenCloud\DNS\Record, OpenCloud\DNS\Subdomain, OpenCloud\LoadBalancer\Resources\Access, OpenCloud\LoadBalancer\Resources\Algorithm, OpenCloud\LoadBalancer\Resources\ConnectionLogging, OpenCloud\Autoscale\Resource\LaunchConfiguration, OpenCloud\LoadBalancer\Resources\ConnectionThrottle, OpenCloud\LoadBalancer\Resources\ContentCaching, OpenCloud\LoadBalancer\Resources\ErrorPage, OpenCloud\LoadBalancer\Resources\HealthMonitor, OpenCloud\LoadBalancer\Resources\Metadata, OpenCloud\LoadBalancer\Resources\NodeEvent, OpenCloud\LoadBalancer\Resources\Readonly, OpenCloud\LoadBalancer\Resources\SessionPersistence, OpenCloud\LoadBalancer\Resources\SSLTermination, OpenCloud\LoadBalancer\Resources\Stats, OpenCloud\Autoscale\Resource\ScalingPolicy, OpenCloud\LoadBalancer\Resources\Usage, OpenCloud\LoadBalancer\Resources\VirtualIp, OpenCloud\Autoscale\Resource\Webhook, OpenCloud\CloudMonitoring\Resource\Account, OpenCloud\CloudMonitoring\Resource\AgentToken, OpenCloud\CloudMonitoring\Resource\Alarm, OpenCloud\CloudMonitoring\Resource\Check, OpenCloud\CloudMonitoring\Resource\Entity
public
|
#
__construct( mixed $service = null, mixed $info = null )
Retrieves the instance from persistent storage |
public
|
|
public
|
#
setService(
Sets the service associated with this resource object. |
public
|
#
getService( )
Returns the service object for this resource; required for making requests, etc. because it has direct access to the Connection. |
public
|
|
public
|
|
public
|
|
public
|
|
public
HttpResponse
|
|
public
HttpResponse
|
|
public
HttpResponse
|
|
protected
|
|
protected
|
#
updateJson( mixed $params = array() )
Returns an object for the Update() method JSON Must be overridden in a child class. |
protected
|
|
protected
|
|
protected
|
|
public
string
|
|
public
|
|
public
|
|
public
string
|
|
protected
|
|
public
boolean
|
#
customAction( string $url, string $method = 'GET', string|array|object $body = null )
Execute a custom resource request. |
public
string
|
|
public
string
|
|
public
|
|
public
|
|
public
string
|
|
protected
string
|
|
protected
string
|
|
public static
|
|
public static
string
|
|
public static
string
|
|
public static
|
#
resourceName( )
Returns the resource name for the URL of the object; must be overridden in child classes |
checkJsonError(),
getHttpRequestObject(),
getLogger(),
makeQueryString(),
populate(),
setLogger(),
setProperty()
|
protected
mixed
|
$id |
|