--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lib/Zend/Service/WindowsAzure/Diagnostics/Manager.php Fri Mar 11 15:05:35 2011 +0100
@@ -0,0 +1,191 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Service_WindowsAzure
+ * @subpackage Diagnostics
+ * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+
+/**
+ * @see Zend_Service_WindowsAzure_Storage_Blob
+ */
+require_once 'Zend/Service/WindowsAzure/Storage/Blob.php';
+
+/**
+ * @see Zend_Service_WindowsAzure_Diagnostics_Exception
+ */
+require_once 'Zend/Service/WindowsAzure/Diagnostics/Exception.php';
+
+/**
+ * @see Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance
+ */
+require_once 'Zend/Service/WindowsAzure/Diagnostics/ConfigurationInstance.php';
+
+/**
+ * @category Zend
+ * @package Zend_Service_WindowsAzure
+ * @subpackage Diagnostics
+ * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class Zend_Service_WindowsAzure_Diagnostics_Manager
+{
+ /**
+ * Blob storage client
+ *
+ * @var Zend_Service_WindowsAzure_Storage_Blob
+ */
+ protected $_blobStorageClient = null;
+
+ /**
+ * Control container name
+ *
+ * @var string
+ */
+ protected $_controlContainer = '';
+
+ /**
+ * Create a new instance of Zend_Service_WindowsAzure_Diagnostics_Manager
+ *
+ * @param Zend_Service_WindowsAzure_Storage_Blob $blobStorageClient Blob storage client
+ * @param string $controlContainer Control container name
+ */
+ public function __construct(Zend_Service_WindowsAzure_Storage_Blob $blobStorageClient = null, $controlContainer = 'wad-control-container')
+ {
+ $this->_blobStorageClient = $blobStorageClient;
+ $this->_controlContainer = $controlContainer;
+
+ $this->_ensureStorageInitialized();
+ }
+
+ /**
+ * Ensure storage has been initialized
+ */
+ protected function _ensureStorageInitialized()
+ {
+ if (!$this->_blobStorageClient->containerExists($this->_controlContainer)) {
+ $this->_blobStorageClient->createContainer($this->_controlContainer);
+ }
+ }
+
+ /**
+ * Get default configuration values
+ *
+ * @return Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance
+ */
+ public function getDefaultConfiguration()
+ {
+ return new Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance();
+ }
+
+ /**
+ * Checks if a configuration for a specific role instance exists.
+ *
+ * @param string $roleInstance Role instance name, can be found in $_SERVER['RdRoleId'] when hosted on Windows Azure.
+ * @return boolean
+ * @throws Zend_Service_WindowsAzure_Diagnostics_Exception
+ */
+ public function configurationForRoleInstanceExists($roleInstance = null)
+ {
+ if ($roleInstance === null) {
+ throw new Zend_Service_WindowsAzure_Diagnostics_Exception('Role instance should be specified. Try reading $_SERVER[\'RdRoleId\'] for this information if the application is hosted on Windows Azure Fabric or Development Fabric.');
+ }
+
+ return $this->_blobStorageClient->blobExists($this->_controlContainer, $roleInstance);
+ }
+
+ /**
+ * Checks if a configuration for current role instance exists. Only works on Development Fabric or Windows Azure Fabric.
+ *
+ * @return boolean
+ * @throws Zend_Service_WindowsAzure_Diagnostics_Exception
+ */
+ public function configurationForCurrentRoleInstanceExists()
+ {
+ if (!isset($_SERVER['RdRoleId'])) {
+ throw new Zend_Service_WindowsAzure_Diagnostics_Exception('Server variable \'RdRoleId\' is unknown. Please verify the application is running in Development Fabric or Windows Azure Fabric.');
+ }
+
+ return $this->_blobStorageClient->blobExists($this->_controlContainer, $_SERVER['RdRoleId']);
+ }
+
+ /**
+ * Get configuration for current role instance. Only works on Development Fabric or Windows Azure Fabric.
+ *
+ * @return Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance
+ * @throws Zend_Service_WindowsAzure_Diagnostics_Exception
+ */
+ public function getConfigurationForCurrentRoleInstance()
+ {
+ if (!isset($_SERVER['RdRoleId'])) {
+ throw new Zend_Service_WindowsAzure_Diagnostics_Exception('Server variable \'RdRoleId\' is unknown. Please verify the application is running in Development Fabric or Windows Azure Fabric.');
+ }
+ return $this->getConfigurationForRoleInstance($_SERVER['RdRoleId']);
+ }
+
+ /**
+ * Set configuration for current role instance. Only works on Development Fabric or Windows Azure Fabric.
+ *
+ * @param Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance $configuration Configuration to apply
+ * @throws Zend_Service_WindowsAzure_Diagnostics_Exception
+ */
+ public function setConfigurationForCurrentRoleInstance(Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance $configuration)
+ {
+ if (!isset($_SERVER['RdRoleId'])) {
+ throw new Zend_Service_WindowsAzure_Diagnostics_Exception('Server variable \'RdRoleId\' is unknown. Please verify the application is running in Development Fabric or Windows Azure Fabric.');
+ }
+ $this->setConfigurationForRoleInstance($_SERVER['RdRoleId'], $configuration);
+ }
+
+ /**
+ * Get configuration for a specific role instance
+ *
+ * @param string $roleInstance Role instance name, can be found in $_SERVER['RdRoleId'] when hosted on Windows Azure.
+ * @return Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance
+ * @throws Zend_Service_WindowsAzure_Diagnostics_Exception
+ */
+ public function getConfigurationForRoleInstance($roleInstance = null)
+ {
+ if ($roleInstance === null) {
+ throw new Zend_Service_WindowsAzure_Diagnostics_Exception('Role instance should be specified. Try reading $_SERVER[\'RdRoleId\'] for this information if the application is hosted on Windows Azure Fabric or Development Fabric.');
+ }
+
+ if ($this->_blobStorageClient->blobExists($this->_controlContainer, $roleInstance)) {
+ $configurationInstance = new Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance();
+ $configurationInstance->loadXml( $this->_blobStorageClient->getBlobData($this->_controlContainer, $roleInstance) );
+ return $configurationInstance;
+ }
+
+ return new Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance();
+ }
+
+ /**
+ * Set configuration for a specific role instance
+ *
+ * @param string $roleInstance Role instance name, can be found in $_SERVER['RdRoleId'] when hosted on Windows Azure.
+ * @param Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance $configuration Configuration to apply
+ * @throws Zend_Service_WindowsAzure_Diagnostics_Exception
+ */
+ public function setConfigurationForRoleInstance($roleInstance = null, Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance $configuration)
+ {
+ if ($roleInstance === null) {
+ throw new Zend_Service_WindowsAzure_Diagnostics_Exception('Role instance should be specified. Try reading $_SERVER[\'RdRoleId\'] for this information if the application is hosted on Windows Azure Fabric or Development Fabric.');
+ }
+
+ $this->_blobStorageClient->putBlobData($this->_controlContainer, $roleInstance, $configuration->toXml(), array(), null, array('Content-Type' => 'text/xml'));
+ }
+}
\ No newline at end of file