icingaweb2/library/vendor/Zend/Cloud/Infrastructure/Image.php

175 lines
3.8 KiB
PHP

<?php
/**
* @category Zend
* @package Zend_Cloud
* @subpackage Infrastructure
* @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
/**
* Instance of an infrastructure service
*
* @package Zend_Cloud
* @subpackage Infrastructure
* @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Cloud_Infrastructure_Image
{
const IMAGE_ID = 'imageId';
const IMAGE_OWNERID = 'ownerId';
const IMAGE_NAME = 'name';
const IMAGE_DESCRIPTION = 'description';
const IMAGE_PLATFORM = 'platform';
const IMAGE_ARCHITECTURE = 'architecture';
const ARCH_32BIT = 'i386';
const ARCH_64BIT = 'x86_64';
const IMAGE_WINDOWS = 'windows';
const IMAGE_LINUX = 'linux';
/**
* Image's attributes
*
* @var array
*/
protected $attributes = array();
/**
* The Image adapter (if exists)
*
* @var object
*/
protected $adapter;
/**
* Required attributes
*
* @var array
*/
protected $attributeRequired = array(
self::IMAGE_ID,
self::IMAGE_DESCRIPTION,
self::IMAGE_PLATFORM,
self::IMAGE_ARCHITECTURE,
);
/**
* Constructor
*
* @param array $data
* @param object $adapter
*/
public function __construct($data, $adapter = null)
{
if (is_object($data)) {
if (method_exists($data, 'toArray')) {
$data= $data->toArray();
} elseif ($data instanceof Traversable) {
$data = iterator_to_array($data);
}
}
if (empty($data) || !is_array($data)) {
throw new Zend_Cloud_Infrastructure_Exception('You must pass an array of parameters');
}
foreach ($this->attributeRequired as $key) {
if (empty($data[$key])) {
throw new Zend_Cloud_Infrastructure_Exception(sprintf(
'The param "%s" is a required parameter for class %s',
$key,
__CLASS__
));
}
}
$this->attributes = $data;
$this->adapter = $adapter;
}
/**
* Get Attribute with a specific key
*
* @param array $data
* @return misc|boolean
*/
public function getAttribute($key)
{
if (!empty($this->attributes[$key])) {
return $this->attributes[$key];
}
return false;
}
/**
* Get all the attributes
*
* @return array
*/
public function getAttributes()
{
return $this->attributes;
}
/**
* Get the image ID
*
* @return string
*/
public function getId()
{
return $this->attributes[self::IMAGE_ID];
}
/**
* Get the Owner ID
*
* @return string
*/
public function getOwnerId()
{
return $this->attributes[self::IMAGE_OWNERID];
}
/**
* Get the name
*
* @return string
*/
public function getName()
{
return $this->attributes[self::IMAGE_NAME];
}
/**
* Get the description
*
* @return string
*/
public function getDescription()
{
return $this->attributes[self::IMAGE_DESCRIPTION];
}
/**
* Get the platform
*
* @return string
*/
public function getPlatform()
{
return $this->attributes[self::IMAGE_PLATFORM];
}
/**
* Get the architecture
*
* @return string
*/
public function getArchitecture()
{
return $this->attributes[self::IMAGE_ARCHITECTURE];
}
}