diff --git a/Makefile b/Makefile
index 7f37db8..82eb978 100644
--- a/Makefile
+++ b/Makefile
@@ -17,9 +17,6 @@ fulltest:
phpunit --color --exclude-group=deprecated --bootstrap=test/bootstrap_curl.php $(TESTS);
phpunit --color --exclude-group=deprecated --bootstrap=test/bootstrap_phpstream.php $(TESTS)
-test-cdn :
- php test/CDNTest.php
-
test-group :
phpunit --color -v --group $(GROUP) $(TESTS)
diff --git a/README.md b/README.md
index e1129d6..914d1f1 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,6 @@ You can use this library to:
* Authenticate your application to the HP Cloud.
* Interact with Object Storage (aka Swift).
-* Interact with CDN service (Content Delivery Network).
Coming soon:
@@ -62,15 +61,6 @@ With full stream wrapper support, you can use built-in
PHP functions like `file_get_contents()`, `fopen()`, and `stat()` for
reading and writing files into object storage.
-#### CDN
-
-With CDN service enabled, objects in Object Storage can be pushed onto
-the HP Cloud edge server network.
-
-With this library, manage CDN integration for object storage containers,
-and manage individual objects. The library allows you to fetch cached
-objects either from object storage or from the CDN cache.
-
#### Autoloading
HPCloud is [PSR-0 compliant](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md),
diff --git a/doc/documentation.php b/doc/documentation.php
index 2bdfeb5..94fa2db 100644
--- a/doc/documentation.php
+++ b/doc/documentation.php
@@ -225,7 +225,7 @@
* HPCloud classes providing access to various services.
*
* HPCloud offers a number of services, including Compute (Nova),
- * IdentityServices, and CDN.
+ * and IdentityServices.
*
* This package is reserved for classes that provide access to
* services.
@@ -237,7 +237,6 @@
* Services for now and the future:
*
*- ObjectStorage
- *- CDN caching of storage
*- Others coming.
*
*/
@@ -247,10 +246,6 @@
*
* The main class is HPCloud::Storage::ObjectStorage.
*/
-/*
- * @package HPCloud.Storage.CDN
- * Classes specific to CDN.
- */
/**
* @package HPCloud.Transport
* HTTP/REST/JSON classes.
diff --git a/doc/oo-tutorial.md b/doc/oo-tutorial.md
index bc48453..446dae7 100644
--- a/doc/oo-tutorial.md
+++ b/doc/oo-tutorial.md
@@ -157,7 +157,7 @@ page. It's all there.
### Identity Services
The HPCloud is composed of numerous services. There's the Compute
-service, the Object Storage service, the CDN service... and so on.
+service, the Object Storage service... and so on.
Authenticating separately to each of these would be a collosal waste of
network resources. And behind the scenes, account management would be
@@ -300,7 +300,6 @@ Instances of HPCloud::Storage::ObjectStorage are responsbile for:
- Providing high-level information about the Object Storage service
- Creating, deleting, loading, and listing Containers
- Modifying Container ACLs
-- Attaching a HPCloud::Storage::CDN service object to a Container (advanced)
## Step 5: Adding a Container
@@ -355,7 +354,6 @@ A HPCloud::Storage::ObjectStorage::Container instance is responsible for the fol
- Creating, saving, deleting, and listing objects in the container
- Providing path-like traversal of objects
- Copying objects across containers
-- Interacting with CDN objects (advanced)
- Loading a lightweight representation of an object without fetching the
entire object (more on this later).
@@ -501,7 +499,6 @@ Instances of a HPCloud::Storage::ObjectStorage::RemoteObject offer the following
- Access to an object stored on the remote object storage
- A proxying mechanism for lazily loading objects
-- Support for loading via CDN (advanced)
- A stream-based API for using stream and file-based PHP functions
- Automatic tempfile-based caching for large objects (using
`php://temp`).
diff --git a/src/HPCloud/Services/IdentityServices.php b/src/HPCloud/Services/IdentityServices.php
index 3e9006e..85d678d 100644
--- a/src/HPCloud/Services/IdentityServices.php
+++ b/src/HPCloud/Services/IdentityServices.php
@@ -582,7 +582,6 @@ class IdentityServices /*implements Serializable*/ {
* - identity: Identity Services (i.e. Keystone)
* - compute: Compute instance (Nova)
* - object-store: Object Storage (Swift)
- * - hpext:cdn: HPCloud CDN service (yes, the colon belongs in there)
*
* Other services will be added.
*
diff --git a/src/HPCloud/Storage/CDN.php b/src/HPCloud/Storage/CDN.php
deleted file mode 100644
index 16ad8b7..0000000
--- a/src/HPCloud/Storage/CDN.php
+++ /dev/null
@@ -1,582 +0,0 @@
-Usage
- *
- * The CDN service functions as an add-on to ObjectStorage. It adds a
- * caching layer. So terms used here, such as Container and Object, refer
- * to the ObjectStorage items.
- *
- * For the most part, CDN operates on the Container level. You can choose to
- * tell the CDN about a particular Container in ObjectStorage, and it will
- * cache items in that container.
- *
- * The CDN service keeps a list of ObjectStorage Containers that it knows
- * about. CDN does not automatically discover ObjectStorage Containers; you
- * must tell CDN about the ObjectStorage instances you want it to know
- * about. This is done using CDN::enable().
- *
- * Once the CDN service knows about an ObjectStorage Container, it will
- * begin caching objects in that container.
- *
- * This library gives the the ability to do the following:
- *
- * - List the containers that CDN knows about: CDN::containers()
- * - Retrieve the CDN properties for a particular Container: CDN::container().
- * - Add and enable containers: CDN::enable().
- * - Remove a Container from CDN: CDN::delete().
- * - Modify the caching properties of a Container: CDN::update().
- * - Temporarily enable or disable caching for a container with
- * CDN::update().
- *
- * Example
- *
- * @code
- * authenticateAsUser($username, $password, $tenantId);
- *
- * // Get the service catalog. We will try to have CDN build itself from
- * // the service catalog.
- * $catalog = $identity->serviceCatalog();
- *
- * // Get a new CDN instance:
- * $cdn = CDN::newFromServiceCatalog($catalog, $token);
- *
- * // Add a container to CDN; set cache lifetime to an hour:
- * $cdn->enable('myContainer', 3600);
- *
- * // Get a list of all containers that CDN knows about,
- * // and print cache lifetime for each:
- * foreach ($cdn->containers() as $container) {
- * print $container['name'] . ':' . $container['ttl'] . PHP_EOL;
- * }
- *
- * // Change the cache lifetime on our container
- * $cdn->update('myContainer', array('ttl' => 7200));
- *
- * // Temporarily stop the container from caching:
- * $cdn->update('myContainer', array('cdn_enabled' => FALSE);
- *
- * //This can be re-enabled again:
- * $cdn->update('myContainer', array('cdn_enabled' => TRUE);
- *
- * // If we no longer want this Container in CDN, we
- * // should delete it, not just disable it:
- * $cdn->delete('myContainer');
- *
- * ?>
- * @endcode
- */
-class CDN {
-
- /**
- * The name of the CDN service type.
- */
- const SERVICE_TYPE = 'hpext:cdn';
- /**
- * The API version.
- */
- const API_VERSION = '1.0';
-
- const DEFAULT_REGION = 'region-a.geo-1';
-
- /**
- * The URL to the CDN endpoint.
- */
- protected $url;
- /**
- * The authentication/authorization token.
- */
- protected $token;
-
- /**
- * Create a new instance from an IdentityServices object.
- *
- * This builds a new CDN instance form an authenticated
- * IdentityServices object.
- *
- * In the service catalog, this selects the first service entry
- * for CDN. At this time, that is sufficient.
- *
- * @param HPCloud::Services::IdentityServices $identity
- * The identity to use.
- * @retval boolean
- * @retval HPCloud::Storage::CDN
- * @return \HPCloud\Storage\CDN|boolean
- * A CDN object or FALSE if no CDN services could be found
- * in the catalog.
- */
- public static function newFromIdentity($identity, $region = CDN::DEFAULT_REGION) {
- $tok = $identity->token();
- $cat = $identity->serviceCatalog();
-
- return self::newFromServiceCatalog($cat, $tok, $region);
- }
-
- /**
- * Create a new CDN object based on a service catalog.
- *
- * The IdentityServices class contains a service catalog, which tracks all
- * services that the present account can access. The service catalog
- * contains data necessary to connect to a CDN endpoint. This builder
- * simplifies the process of creating a new CDN by accepting a service
- * catalog and discovering the CDN service automatically.
- *
- * In the vast majority of cases, this is the easiest way to proceed. If,
- * however, a service catalog has multiple CDN instances (a possibility,
- * though not currently supported), the present method has no means of
- * determining which should be used. It simply chooses the first CDN
- * service endpoint.
- *
- * This uses the tenant ID that is found in the service catalog.
- *
- * Either of the following work:
- * @code
- * serviceCatalog();
- * $cdn = CDN::newFromServiceCatalog($fullCatalog);
- *
- * // Use a filtered service catalog:
- * $catalog = $identitySerice->serviceCatalog(CDN::SERVICE_TYPE);
- * $cdn = CDN::newFromServiceCatalog($catalog);
- * ?>
- * @endcode
- *
- * @param array $catalog
- * A service catalog; see HPCloud::Services::IdentityServices::serviceCatalog().
- * @param string $token
- * The token.
- * @retval boolean
- * @retval HPCloud::Storage::CDN
- * @return boolean|\HPCloud\Storage\CDN
- * A CDN object or FALSE if no CDN services could be found
- * in the catalog.
- */
- public static function newFromServiceCatalog($catalog, $token, $region = CDN::DEFAULT_REGION) {
- $c = count($catalog);
- for ($i = 0; $i < $c; ++$i) {
- if ($catalog[$i]['type'] == self::SERVICE_TYPE) {
- foreach ($catalog[$i]['endpoints'] as $endpoint) {
- if (isset($endpoint['publicURL']) && $endpoint['region'] == $region) {
- /*
- $parts = parse_url($endpoint['publicURL']);
- $base = $parts['scheme'] . '://' . $parts['host'];
- if (isset($parts['port'])) {
- $base .= ':' . $parts['port'];
- }
- //$base = $endpoint['publicURL'];
- $cdn = new CDN($token, $base, $endpoint['tenantId']);
- //$cdn->url = $endpoint['publicURL'];
- */
- $cdn = new CDN($token, $endpoint['publicURL']);
-
- return $cdn;
- }
- }
- }
- }
- return FALSE;
- }
-
- /**
- * Build a new CDN object.
- *
- * This object facilitates communication with the CDN cloud service.
- *
- * This creates a new CDN object that will view as its endpoint the server
- * with the URL $endpoint, which has the form:
- *
- * @code
- * https://ENDPOINT/API_VERSION/ACCOUNT
- * @endcode
- *
- *
- * On older SwiftAuth-based services, the token should be the swauth token.
- * On newer releaes, the token is retrieved from IdentityServices.
- *
- * @param string $endpoint
- * The URL of the CDN service. It should look something like this:
- * @c https://cdnmgmt.rndd.aw1.hpcloud.net/v1.0/72020596871800
- * @param string $token
- * The authentication token. This can be retrieved from IdentityServices::token().
- */
- public function __construct($token, $endpoint/*, $account*/) {
- //$this->url = $endpoint . '/v' . self::API_VERSION . '/' . $account;
- $this->url = $endpoint;
- $this->token = $token;
- }
-
- /**
- * Get a list of containers that the CDN system knows of.
- *
- * This returns a list of ObjectStorage Containers that the
- * CDN service knows of. These containers can be either enabled or
- * disabled.
- *
- * The CDN service does not attempt to discover all of the containers
- * from a Swift endpoint. Instead, it passively acquires a list of
- * containers (added via, for example, enabledContainer()).
- *
- * Once a container has been added to the CDN service, it can be in
- * one of two states:
- *
- * - enabled (\c cdn_enabled=TRUE)
- * - disabled (\c cdn_enabled=FALSE)
- *
- * This listing will retrieve both enabled and disabled unless
- * $enabledOnly is set to TRUE.
- *
- * Returned data is in this format:
- * @code
- * 0
- * 'cdn_enabled' => 1
- * 'name' => 'I♡HPCloud'
- * 'x-cdn-uri' => 'http://hcf937838.cdn.aw1.hpcloud.net'
- * 'x-cdn-ssl-uri' => 'https://hcf937838.cdn.aw1.hpcloud.net'
- * 'ttl' => 1234
- * ),
- * array(
- * 'log_retention' => 0
- * 'cdn_enabled' => 0
- * 'name' => 'HPCloud2'
- * 'x-cdn-uri' => 'http://hcf9abc38.cdn.aw1.hpcloud.net'
- * 'x-cdn-ssl-uri' => 'https://hcf937838.cdn.aw1.hpcloud.net'
- * 'ttl' => 1234
- * ),
- * );
- * ?>
- * @endcode
- *
- * @attention
- * The $enabledOnly flag sendes \c enabled_only to the
- * endpoint. The endpoint may or may not honor this.
- *
- * @param boolean $enabledOnly
- * If this is set to TRUE, then only containers that are
- * CDN-enabled will be returned.
- * @retval array
- * @return array
- * An indexed array of associative arrays. The format of each
- * associative array is explained on container().
- * @throws HPCloud::Exception
- * An HTTP-level exception on error.
- */
- public function containers($enabledOnly = NULL) {
- $client = \HPCloud\Transport::instance();
- $url = $this->url . '/?format=json';
-
- if ($enabledOnly) {
- $url .= '&enabled_only=true';
- }
- // DEVEX-1733 suggests that this should result in the
- // server listing only DISABLED containers.
- elseif ($enabledOnly === FALSE) {
- $url .= '&enabled_only=false';
- }
-
- $headers = array(
- 'X-Auth-Token' => $this->token,
- );
-
- $response = $client->doRequest($url, 'GET', $headers);
-
- $raw = $response->content();
- $json = json_decode($raw, TRUE);
-
- return $json;
- }
-
- /**
- * Get a container by name.
- *
- * @todo The current (1.0) version does not support a verb for getting
- * just one container, so we have to get the entire list of containers.
- *
- * Example return value:
- * @code
- * 1
- * 'cdn_enabled' => 1
- * 'name' => 'I♡HPCloud'
- * 'x-cdn-uri' => 'http://hcf937838.cdn.aw1.hpcloud.net'
- * 'ttl' => 1234
- * );
- * ?>
- * @endcode
- *
- * @param string $name
- * The name of the container to fetch.
- * @retval array
- * @return array
- * An associative array in the exact format as in containers.
- */
- public function container($name) {
- //$result = $this->modifyContainer($name, 'GET', array(), '?format=json');
-
- $containers = $this->containers();
- foreach ($containers as $container) {
- if ($container['name'] == $name) {
- return $container;
- }
- }
- return FALSE;
- }
-
- /**
- * Enable a container.
- *
- * This adds the container to the CDN service and turns on caching.
- *
- * In the CDN API, there are two meanings for the term "enable":
- *
- * 1. To "CDN-enable" a container means to add that container to the CDN
- * service. There is no "CDN-disable".
- * 2. To "enable" a container means to cache that container's
- * content in a publically available CDN server. There is also a
- * way to "disable" in this sense -- which blocks a container from
- * caching.
- *
- * This method does the first -- it adds a container to the CDN
- * service. It so happens that adding a container also enables (in the
- * second sense) the
- * container. (This is a feature of the remote service, not the API).
- *
- * Enabling and disabling (in the second sense) are considered temporary operations
- * to switch on and off caching on a particular container. Both of
- * these operations are done with the update() method.
- *
- * The endpoint is supposed to return different results based on the above;
- * accordingly this method should return TRUE if the container was added
- * to the list, and FALSE if it was already there. HOWEVER, in some versions
- * of the CDN service the endpoint returns the same code for both operations,
- * so the result cannot be relied upon.
- *
- * @param string $name
- * The name of the container.
- * @param int $ttl
- * Time to live.
- * The number of seconds an object may stay in the cache. This is the
- * maximum amount of time. There is, however, no assurance that the object
- * will remain for the full TTL. 15 minutes is the minimum time. Five years
- * is the max.
- * @param boolean $created
- * If this is passed, then its value will be set to TRUE if the
- * container was created in the CDN, or FALSE if the container
- * already existed in CDN.
- * @retval string
- * @return string
- * TRUE if the container was created, FALSE if the container was already
- * added to the CDN (and thus nothing happened).
- * @throws HPCloud::Exception
- * Several HTTP-level exceptions can be thrown.
- * @see http://api-docs.hpcloud.com/hpcloud-cdn-storage/1.0/content/cdn-enable-container.html
- */
- public function enable($name, $ttl = NULL, &$created = FALSE) {
- $headers = array();
- if (!empty($ttl)) {
- $headers['X-TTL'] = (int) $ttl;
- }
- $res = $this->modifyContainer($name, 'PUT', $headers);
- $created = $res->status() == 201;
-
- $url = $res->header('X-Cdn-Uri', 'UNKNOWN');
- return $url;
- }
-
- /**
- * Set attributes on a CDN container.
- *
- * This updates the attributes (that is, properties) of a container.
- *
- * The following attributes are supported:
- *
- * - 'ttl': Time to life in seconds (int).
- * - 'cdn_enabled': Whether the CDN is enabled (boolean).
- * - 'log_retention': Whether logs are retained (boolean). UNSUPPORTED.
- *
- * Future versions of the CDN service will likely provide other
- * properties.
- *
- * @param string $name
- * The name of the container.
- * @param array $attrs
- * An associative array of attributes.
- * @retval boolean
- * @return boolean
- * TRUE if the update was successful.
- * @throws HPCloud::Exception
- * Possibly throws one of the HTTP exceptions.
- */
- public function update($name, $attrs) {
-
- $headers = array();
- foreach ($attrs as $item => $val) {
- switch ($item) {
- case 'ttl':
- $headers['X-TTL'] = (int) $val;
- break;
- case 'enabled':
- case 'cdn_enabled':
- if (isset($val) && $val == FALSE) {
- $flag = 'False';
- }
- // Default is TRUE.
- else {
- $flag = 'True';
- }
- $headers['X-CDN-Enabled'] = $flag;
- break;
- case 'logs':
- case 'log_retention':
- // The default is TRUE.
- if (isset($val) && $val == FALSE) {
- $flag = 'False';
- }
- else {
- $flag = 'True';
- }
- $headers['X-Log-Retention'] = $flag;
- break;
- default:
- $headers[$item] = (string) $val;
- break;
- }
-
- }
-
- $response = $this->modifyContainer($name, 'POST', $headers);
-
- return $response->status() == 204;
- }
-
- /*
- * Temporarily disable CDN for a container.
- *
- * This will suspend caching on the named container. It is intended to be a
- * temporary measure. See delete() for completely removing a container from
- * CDN service.
- *
- * Disabled items will still show up in the list returned by containers(),
- * and will also be retrievable via container().
- *
- * @param string $name
- * The name of the container whose cache should be suspended.
- * @retval boolean
- * @return boolean
- * TRUE if the container is disabled.
- * @throws HPCloud::Exception
- * HTTP exceptions may be thrown if an error occurs.
- */
- /*
- public function disable($name) {
- $headers = array('X-CDN-Enabled' => 'False');
- $res = $this->modifyContainer($name, 'POST', $headers);
- return $res->status() == 204;
- }
- */
-
- /**
- * Attempt to remove a container from CDN.
- *
- * This will remove a container from CDN services,
- * completely stopping all caching on that container.
- *
- * Deleted containers will no longer show up in the containers()
- * list, nor will they be accessible via container().
- *
- * Deleted containers can be added back with enable().
- *
- * @param string $name
- * The Container name.
- * @retval boolean
- * @return boolean
- * TRUE if the container was successfully deleted,
- * FALSE if the container was not removed, but no
- * error occurred.
- * @throws HPCloud::Exception
- * Any of the HTTP error subclasses can be thrown.
- */
- public function delete($name) {
- $res = $this->modifyContainer($name, 'DELETE');
- return $res->status() == 204;
- }
-
- /**
- * Run the given method on the given container.
- *
- * Checks to see if the expected result is returned.
- *
- * @param string $name
- * The name of the container.
- * @param string $method
- * The appropriate HTTP verb.
- * @param int $expects
- * The expected HTTP code.
- */
- protected function modifyContainer($name, $method, $headers = array(), $qstring = '') {
- $url = $this->url . '/' . rawurlencode($name) . $qstring;
- $headers['X-Auth-Token'] = $this->token;
-
- $client = \HPCloud\Transport::instance();
- $response = $client->doRequest($url, $method, $headers);
-
- return $response;
- }
-}
diff --git a/src/HPCloud/Storage/ObjectStorage.php b/src/HPCloud/Storage/ObjectStorage.php
index b447403..7b220b8 100644
--- a/src/HPCloud/Storage/ObjectStorage.php
+++ b/src/HPCloud/Storage/ObjectStorage.php
@@ -64,8 +64,7 @@ use HPCloud\Storage\ObjectStorage\ACL;
*
* @todo ObjectStorage is not yet constrained to a particular version
* of the API. It attempts to use whatever version is passed in to the
- * URL. This is different than IdentityServices and CDN, which use a
- * fixed version.
+ * URL. This is different than IdentityServices, which used a fixed version.
*/
class ObjectStorage {
@@ -89,14 +88,6 @@ class ObjectStorage {
*/
protected $url = NULL;
- /**
- * CDN containers.
- *
- * This is an associative array of container names to URLs.
- */
- protected $cdnContainers;
-
-
/**
* Create a new instance after getting an authenitcation token.
*
@@ -210,7 +201,6 @@ class ObjectStorage {
foreach ($catalog[$i]['endpoints'] as $endpoint) {
if (isset($endpoint['publicURL']) && $endpoint['region'] == $region) {
$os= new ObjectStorage($authToken, $endpoint['publicURL']);
- //$cdn->url = $endpoint['publicURL'];
return $os;
}
@@ -238,75 +228,6 @@ class ObjectStorage {
$this->url = $url;
}
- /**
- * Indicate that this ObjectStorage instance should use the given CDN service.
- *
- * This will cause this ObjectStorage instance to use CDN as often as it can.
- * Any containers (and subsequently container objects) that can leverage
- * CDN services will act accordingly.
- *
- * CDN is used for *read* operations. Because CDN is a time-based cache,
- * objects in CDN can be older than objects in Swift itself. For that
- * reason, CDN should not be used when a combination of read and write
- * operations occur.
- *
- * @retval HPCloud::Storage::ObjectStorage
- * @return \HPCloud\Storage\ObjectStorage
- * $this for current object so the method can be used in chaining.
- */
- public function useCDN($cdn) {
-
- // This should not happen, but has happened when service
- // catalog was bad.
- if (empty($cdn)) {
- throw new \HPCloud\Exception('Cannot use CDN: No CDN provided.');
- }
-
- $containers = $cdn->containers(TRUE);
- $buffer = array();
-
- foreach ($containers as $item) {
- // This is needed b/c of a bug in SOS that sometimes
- // returns disabled containers (DEVEX-1733).
- if ($item['cdn_enabled'] == 1) {
- $buffer[$item['name']] = array(
- 'url' => $item['x-cdn-uri'],
- 'sslUrl' => $item['x-cdn-ssl-uri'],
- );
- }
- }
- $this->cdnContainers = $buffer;
-
- return $this;
- }
-
- public function hasCDN() {
- return !empty($this->cdnContainers);
- }
-
- /**
- * Return the CDN URL for a particular container.
- *
- * If CDN is enabled, this will attempt to get the URL
- * to the CDN endpoint for the given container.
- *
- * @param string $containerName
- * The name of the container.
- * @param boolean $ssl
- * If this is TRUE (default), get the URL to the SSL CDN;
- * otherwise get the URL to the plain HTTP CDN.
- * @retval string
- * @return string
- * The URL to the CDN container, or NULL if no such
- * URL is found.
- */
- public function cdnUrl($containerName, $ssl = TRUE) {
- if (!empty($this->cdnContainers[$containerName])) {
- $key = $ssl ? 'sslUrl' : 'url';
- return $this->cdnContainers[$containerName][$key];
- }
- }
-
/**
* Get the authentication token.
*
@@ -383,11 +304,6 @@ class ObjectStorage {
foreach ($containers as $container) {
$cname = $container['name'];
$containerList[$cname] = Container::newFromJSON($container, $this->token(), $this->url());
-
- if (!empty($this->cdnContainers[$cname])) {
- $cdnList = $this->cdnContainers[$cname];
- $containerList[$cname]->useCDN($cdnList['url'], $cdnList['sslUrl']);
- }
}
return $containerList;
@@ -415,11 +331,6 @@ class ObjectStorage {
if ($status == 204) {
$container = Container::newFromResponse($name, $data, $this->token(), $this->url());
- if (isset($this->cdnContainers[$name])) {
- $cdnList = $this->cdnContainers[$name];
- $container->useCDN($cdnList['url'], $cdnList['sslUrl']);
- }
-
return $container;
}
diff --git a/src/HPCloud/Storage/ObjectStorage/Container.php b/src/HPCloud/Storage/ObjectStorage/Container.php
index 3234043..6d1059c 100644
--- a/src/HPCloud/Storage/ObjectStorage/Container.php
+++ b/src/HPCloud/Storage/ObjectStorage/Container.php
@@ -69,7 +69,6 @@ namespace HPCloud\Storage\ObjectStorage;
* container.
*
* @todo Add support for container metadata.
- * @todo Add CDN support fo container listings.
*/
class Container implements \Countable, \IteratorAggregate {
/**
@@ -93,10 +92,6 @@ class Container implements \Countable, \IteratorAggregate {
protected $acl;
protected $metadata;
- // This is only set if CDN service is activated.
- protected $cdnUrl;
- protected $cdnSslUrl;
-
/**
* Transform a metadata array into headers.
*
@@ -331,27 +326,6 @@ class Container implements \Countable, \IteratorAggregate {
$this->token = $token;
}
- /**
- * Set the URL of the CDN to use.
- *
- * If this is set, the Container will attempt to fetch objects
- * from the CDN instead of the Swift storage whenever possible.
- *
- * If ObjectStorage::useCDN() is already called, this is not necessary.
- *
- * Setting this to NULL will have the effect of turning off CDN for this
- * container.
- *
- * @param string $url
- * The URL to the CDN for this container.
- * @param string $sslUrl
- * The SSL URL to the CDN for this container.
- */
- public function useCDN($url, $sslUrl) {
- $this->cdnUrl = $url;
- $this->cdnSslUrl = $sslUrl;
- }
-
/**
* Get the name of this container.
*
@@ -699,25 +673,15 @@ class Container implements \Countable, \IteratorAggregate {
* - If-Modified-Since/If-Unmodified-Since
* - If-Match/If-None-Match
*
- * If a CDN has been specified either using useCDN() or
- * ObjectStorage::useCDN(), this will attempt to fetch the object
- * from the CDN.
- *
* @param string $name
* The name of the object to load.
- * @param boolean $requireSSL
- * If this is TRUE (the default), then SSL will always be
- * used. If this is FALSE, then CDN-based fetching will
- * use non-SSL, which is faster.
* @retval HPCloud::Storage::ObjectStorage::RemoteObject
* @return \HPCloud\Storage\ObjectStorage\RemoteObject
* A remote object with the content already stored locally.
*/
- public function object($name, $requireSSL = TRUE) {
+ public function object($name) {
$url = self::objectUrl($this->url, $name);
- $cdn = self::objectUrl($this->cdnUrl, $name);
- $cdnSsl = self::objectUrl($this->cdnSslUrl, $name);
$headers = array();
// Auth token.
@@ -725,14 +689,7 @@ class Container implements \Countable, \IteratorAggregate {
$client = \HPCloud\Transport::instance();
- if (empty($this->cdnUrl)) {
- $response = $client->doRequest($url, 'GET', $headers);
- }
- else {
- $from = $requireSSL ? $cdnSsl : $cdn;
- // print "Fetching object from $from\n";
- $response = $client->doRequest($from, 'GET', $headers);
- }
+ $response = $client->doRequest($url, 'GET', $headers);
if ($response->status() != 200) {
throw new \HPCloud\Exception('An unknown error occurred while saving: ' . $response->status());
@@ -741,10 +698,6 @@ class Container implements \Countable, \IteratorAggregate {
$remoteObject = RemoteObject::newFromHeaders($name, $response->headers(), $this->token, $url);
$remoteObject->setContent($response->content());
- if (!empty($this->cdnUrl)) {
- $remoteObject->useCDN($cdn, $cdnSsl);
- }
-
return $remoteObject;
}
@@ -780,8 +733,6 @@ class Container implements \Countable, \IteratorAggregate {
*/
public function proxyObject($name) {
$url = self::objectUrl($this->url, $name);
- $cdn = self::objectUrl($this->cdnUrl, $name);
- $cdnSsl = self::objectUrl($this->cdnSslUrl, $name);
$headers = array(
'X-Auth-Token' => $this->token,
);
@@ -789,12 +740,7 @@ class Container implements \Countable, \IteratorAggregate {
$client = \HPCloud\Transport::instance();
- if (empty($this->cdnUrl)) {
- $response = $client->doRequest($url, 'HEAD', $headers);
- }
- else {
- $response = $client->doRequest($cdnSsl, 'HEAD', $headers);
- }
+ $response = $client->doRequest($url, 'HEAD', $headers);
if ($response->status() != 200) {
throw new \HPCloud\Exception('An unknown error occurred while saving: ' . $response->status());
@@ -804,10 +750,6 @@ class Container implements \Countable, \IteratorAggregate {
$obj = RemoteObject::newFromHeaders($name, $headers, $this->token, $url);
- if (!empty($this->cdnUrl)) {
- $obj->useCDN($cdn, $cdnSsl);
- }
-
return $obj;
}
/**
@@ -981,10 +923,6 @@ class Container implements \Countable, \IteratorAggregate {
return $this->url;
}
- public function cdnUrl($ssl = TRUE) {
- return $ssl ? $this->cdnSslUrl : $this->cdnUrl;
- }
-
/**
* Get the ACL.
*
diff --git a/src/HPCloud/Storage/ObjectStorage/RemoteObject.php b/src/HPCloud/Storage/ObjectStorage/RemoteObject.php
index 5a78867..b08a41b 100644
--- a/src/HPCloud/Storage/ObjectStorage/RemoteObject.php
+++ b/src/HPCloud/Storage/ObjectStorage/RemoteObject.php
@@ -67,9 +67,6 @@ class RemoteObject extends Object {
*/
protected $allHeaders = array();
- protected $cdnUrl;
- protected $cdnSslUrl;
-
/**
* Create a new RemoteObject from JSON data.
*
@@ -114,19 +111,12 @@ class RemoteObject extends Object {
* @param string $url
* The URL to the object in the object storage. Used for issuing
* subsequent requests.
- * @param string $cdnUrl
- * The URL to the CDN version of the object. Used for issuing
- * subsequent requests. If this is set, this object may use
- * CDN to make subsequent requests. It may also return the
- * CDN URL when requested.
- * @param string $cdnSslUrl
- * The URL to the SSL-protected CDN version of the object.
*
* @retval HPCloud::Storage::ObjectStorage::RemoteObject
* @return \HPCloud\Storage\ObjectStorage\RemoteObject
* A new RemoteObject.
*/
- public static function newFromHeaders($name, $headers, $token, $url, $cdnUrl = NULL, $cdnSslUrl = NULL) {
+ public static function newFromHeaders($name, $headers, $token, $url) {
$object = new RemoteObject($name);
//$object->allHeaders = $headers;
@@ -160,82 +150,26 @@ class RemoteObject extends Object {
$object->token = $token;
$object->url = $url;
- $object->cdnUrl = $cdnUrl;
- $object->cdnSslUrl = $cdnSslUrl;
return $object;
}
- /**
- * Set the URL to this object in a CDN service.
- *
- * A CDN may be used to expedite *reading* the object. Write
- * operations are never performed on a CDN. Since a RemoteObject
- * can be partially loaded, it is possible that part of the object
- * is read from a CDN, and part from Swift. However, to accomplish
- * this would require one to set CDN services in one place, and
- * not in the other.
- *
- * Note that if CDN was set using ObjectStorage::useCDN() or
- * Container::useCDN(), you needn't call this method. CDN will
- * be automatically enabled during object construction.
- *
- * Setting this to NULL has the effect of turning off CDN for
- * this object.
- *
- * @param string $url
- * The URL to this object in CDN.
- * @param string $sslUrl
- * The SSL URL to this object in CDN.
- *
- * @retval HPCloud::Storage::ObjectStorage::RemoteObject
- * @return \HPCloud\Storage\ObjectStorage\RemoteObject
- * $this for the current object so it can be used in chaining methods.
- */
- public function useCDN($url, $sslUrl) {
- $this->cdnUrl = $url;
- $this->cdnSslUrl = $sslUrl;
-
- return $this;
- }
-
/**
* Get the URL to this object.
*
* If this object has been stored remotely, it will have
* a valid URL.
*
- * @param boolean $cached
- * If this value is set to TRUE, this call *may* return the
- * URL to a cached (CDN) URL. Reading from a cached URL should
- * be substantially faster than reading from a normal URL. Note,
- * however, that a container must have CDN enabled on it before
- * caching can be used, and a CDN must be passed into this
- * object. See ObjectStorage::useCDN(), Container::useCDN() and
- * RemoteObject::useCDN(). (Generally, using ObjectStorage::useCDN()
- * is all you need to do.)
- * @param boolean $useSSL
- * FOR CACHED URLS ONLY, there is an option for either SSL or non-SSL
- * URLs. By default, we use SSL URLs because (a) it's safer, and
- * (b) it mirrors non-CDN behavior. This can be turned off by setting
- * $useSSL to FALSE.
* @retval string
* @return string
* A URL to the object. The following considerations apply:
* - If the container is public, this URL can be loaded without
* authentication. You can, for example, pass the URL to a browser
* user agent.
- * - If a CDN URL has been provided to useCDN() and $cached is TRUE...
- * - If the container is CDN enabled, a URL to the cache will be returned.
- * - Otherwise, the Swift URL will be returned.
* - If this object has never been saved remotely, then there will be
* no URL, and this will return NULL.
*/
- public function url($cached = FALSE, $useSSL = TRUE) {
-
- if ($cached && !empty($this->cdnUrl)) {
- return $useSSL ? $this->cdnSslUrl : $this->cdnUrl;
- }
+ public function url() {
return $this->url;
}
@@ -680,12 +614,7 @@ class RemoteObject extends Object {
'X-Auth-Token' => $this->token,
);
- if (empty($this->cdnUrl)) {
- $response = $client->doRequest($this->url, $method, $headers);
- }
- else {
- $response = $client->doRequest($this->cdnUrl, $method, $headers);
- }
+ $response = $client->doRequest($this->url, $method, $headers);
if ($response->status() != 200) {
throw new \HPCloud\Exception('An unknown exception occurred during transmission.');
diff --git a/src/HPCloud/Storage/ObjectStorage/StreamWrapper.php b/src/HPCloud/Storage/ObjectStorage/StreamWrapper.php
index 026a131..a808a19 100644
--- a/src/HPCloud/Storage/ObjectStorage/StreamWrapper.php
+++ b/src/HPCloud/Storage/ObjectStorage/StreamWrapper.php
@@ -245,25 +245,11 @@ use \HPCloud\Storage\ObjectStorage;
* In general, you should avoid using this.
* - content_type: This is effective only when writing files. It will
* set the Content-Type of the file during upload.
- * - use_cdn: If this is set to TRUE, then whenever possible assets will be
- * loaded from CDN instead of from the object store. The following
- * conditions must obtain for this to work:
- * - The container must allow public reading (ACL)
- * - The container must have CDN enabled
- * - The CDN container must be active ("cdn-enabled")
- * - Authentication info must be accessible to the stream wrapper.
- * - cdn_require_ssl: If this is set to FALSE, then CDN-based requests
- * may use plain HTTP instead of HTTPS. This will spead up CDN
- * fetches at the cost of security.
* - tenantid: The tenant ID for the services you will use. (An account may
* have multiple tenancies associated.)
* - tenantname: The tenant name for the services you will use. You may use
* this in lieu of tenant ID.
*
- * @attention
- * ADVANCED: You can also pass an HPCloud::Storage::CDN object in use_cdn instead of
- * a boolean.
- *
* @see http://us3.php.net/manual/en/class.streamwrapper.php
*
* @todo The service catalog should be cached in the context like the token so that
@@ -841,28 +827,6 @@ class StreamWrapper {
//syslog(LOG_WARNING, "Container: " . $containerName);
- // EXPERIMENTAL:
- // If we can get the resource from CDN, we do so now. Note that we try to sidestep
- // the Container creation, which saves us an HTTP request.
- $cdnUrl = $this->store->cdnUrl($containerName, FALSE);
- $cdnSslUrl = $this->store->cdnUrl($containerName, TRUE);
- if (!empty($cdnUrl) && !$this->isWriting && !$this->isAppending) {
- $requireSSL = (boolean) $this->cxt('cdn_require_ssl', TRUE);
- try {
- $newUrl = $this->store->url() . '/' . $containerName;
- $token = $this->store->token();
- $this->container = new \HPCloud\Storage\ObjectStorage\Container($containerName, $newUrl, $token);
- $this->container->useCDN($cdnUrl, $cdnSslUrl);
- $this->obj = $this->container->object($objectName, $requireSSL);
- $this->objStream = $this->obj->stream();
-
- return TRUE;
- }
- // If there is an error, fall back to regular handling.
- catch (\HPCloud\Exception $e) {}
- }
- // End EXPERIMENTAL section.
-
// Now we need to get the container. Doing a server round-trip here gives
// us the peace of mind that we have an actual container.
// XXX: Should we make it possible to get a container blindly, without the
@@ -1579,62 +1543,10 @@ class StreamWrapper {
*/
}
- try {
- $this->initializeCDN($token, $serviceCatalog);
- }
- catch (\HPCloud\Exception $e) {
- //fwrite(STDOUT, $e);
- throw new \HPCloud\Exception('CDN could not be initialized', 1, $e);
-
- }
-
return !empty($this->store);
}
- /**
- * Initialize CDN service.
- *
- * When the `use_cdn` parameter is passed into the context, we try
- * to use a CDN service wherever possible.
- *
- * If `use_cdn` is set to TRUE, we try to create a new CDN object.
- * This will require a service catalog.
- *
- * When use_cdn is set to TRUE, the wrapper tries to use CDN service.
- * In such cases, we need a handle to the CDN object. This initializes
- * that handle, which can later be used to get other information.
- *
- * Also note that CDN's default behavior is to fetch over SSL CDN.
- * To disable this, set 'cdn_require_ssl' to FALSE.
- */
- protected function initializeCDN($token, $catalog) {
- $cdn = $this->cxt('use_cdn', FALSE);
-
- // No CDN should be enabled.
- if (empty($cdn)) {
- return FALSE;
- }
- // Use the CDN object, if provided.
- elseif ($cdn instanceof \HPCloud\Storage\CDN) {
- $this->cdn = $cdn;
- }
- // Or try to create a new CDN from the catalog.
- else {
- if (empty($catalog)) {
- $ident = $this->authenticate();
- $catalog = $ident->serviceCatalog();
- $token = $ident->token();
- }
- $this->cdn = \HPCloud\Storage\CDN::newFromServiceCatalog($catalog, $token);
- }
-
- if (!empty($this->cdn)) {
- $this->store->useCDN($this->cdn);
- }
- return TRUE;
- }
-
protected function authenticate() {
$username = $this->cxt('username');
$password = $this->cxt('password');
diff --git a/test/CDNTest.php b/test/CDNTest.php
deleted file mode 100755
index 2d7a18c..0000000
--- a/test/CDNTest.php
+++ /dev/null
@@ -1,145 +0,0 @@
-authenticateAsAccount($ini['hpcloud.identity.account'], $ini['hpcloud.identity.secret'], $ini['hpcloud.identity.tenantId']);
-$token = $id->authenticateAsUser($ini['hpcloud.identity.username'], $ini['hpcloud.identity.password'], $ini['hpcloud.identity.tenantId']);
-
-$objstore = \HPCloud\Storage\ObjectStorage::newFromServiceCatalog($id->serviceCatalog(), $token);
-$cdn = \HPCloud\Storage\CDN::newFromServiceCatalog($id->serviceCatalog(), $token);
-
-$objstore->useCDN($cdn);
-
-//var_dump($cdn->containers());
-
-// Check that the container has CDN.
-$cname = TEST_CONTAINER; //$ini['hpcloud.swift.container'];
-$isEnabled = FALSE;
-
-$cdnData = $cdn->container($cname);
-print "***** TESTING CDN ENABLED" . PHP_EOL;
-if ($cdnData['cdn_enabled'] != 1) {
- die('Cannot test CDN: You must enable CDN on ' . $cname);
-}
-$container = $objstore->container($cname);
-
-print "***** TESTING CDN URL" . PHP_EOL;
-$cdnSsl = $objstore->cdnUrl($cname);
-$cdnPlain = $objstore->cdnUrl($cname, FALSE);
-if ($cdnSsl == $cdnPlain) {
- die(sprintf("Surprise! %s matches %s\n", $cdnSsl, $cdnPlain));
-}
-print 'SSL CDN: ' . $cdnSsl. PHP_EOL;
-print 'Plain CDN: ' . $cdnPlain . PHP_EOL;
-print 'Container CDN URL: ' . $container->cdnUrl() . PHP_EOL;
-if ($container->cdnUrl() == NULL) {
- die('No CDN URL for Container ' . $cname);
-}
-
-if ($cdnSsl != $container->cdnUrl()) {
- die(sprintf("Expected SSL CDN %s to match Container CDN %s\n", $cdnSsl, $container->cdnUrl()));
-}
-
-$o = new \HPCloud\Storage\ObjectStorage\Object('CDNTest.txt', 'TEST');
-
-$container->save($o);
-
-$copy = $container->object($o->name());
-
-print "***** TESTING OBJECT CDN URLS." . PHP_EOL;
-print "Object SSL URL: " . $copy->url() . PHP_EOL;
-print "Object CDN SSL URL: " . $copy->url(TRUE) . PHP_EOL;
-print "Object CDN URL: " . $copy->url(TRUE, FALSE) . PHP_EOL;
-if ($copy->url(TRUE) == $copy->url(TRUE, FALSE)) {
- die(sprintf("Object SSL URL %s should not match non-SSL URL %s\n", $copy->url(TRUE), $copy->url(TRUE, FALSE)));
-}
-
-print "***** TESTING THAT CDN WAS USED." . PHP_EOL;
-if ($copy->url() == $copy->url(TRUE)) {
- die('Object Storage not used for ' . $o->name());
-}
-
-print "***** TESTING STREAM WRAPPERS " . PHP_EOL;
-$cxt = stream_context_create(array(
- 'swift' => array(
- //'token' => $token,
- 'tenantid' => $ini['hpcloud.identity.tenantId'],
- 'account' => $ini['hpcloud.identity.account'],
- 'key' => $ini['hpcloud.identity.secret'],
- 'endpoint' => $ini['hpcloud.identity.url'],
- 'use_cdn' => TRUE,
- ),
-));
-$cxt2 = stream_context_create(array(
- 'swift' => array(
- //'token' => $token,
- 'tenantid' => $ini['hpcloud.identity.tenantId'],
- 'account' => $ini['hpcloud.identity.account'],
- 'key' => $ini['hpcloud.identity.secret'],
- 'endpoint' => $ini['hpcloud.identity.url'],
- 'use_cdn' => TRUE,
- 'cdn_require_ssl' => FALSE,
- ),
-));
-
-print "***** TESTING RETURNED DATA" . PHP_EOL;
-$res = array(
- 'internal' => file_get_contents('swift://' . TEST_CONTAINER . '/CDNTest.txt', FALSE, $cxt),
- 'internalNoSSL' => file_get_contents('swift://' . TEST_CONTAINER . '/CDNTest.txt', FALSE, $cxt2),
- 'external' => file_get_contents($copy->url()),
- 'externalSslCdn' => file_get_contents($copy->url(TRUE)),
- 'externalCdn' => file_get_contents($copy->url(TRUE, FALSE)),
-);
-
-foreach ($res as $name => $val) {
- if ($val != 'TEST') {
- die(sprintf("Facility %s failed, returning '%s' instead of TEST.", $name, $val));
- }
-}
-
-print PHP_EOL . "***** All tests passed." . PHP_EOL;
diff --git a/test/README.md b/test/README.md
index 5761225..ec462c4 100644
--- a/test/README.md
+++ b/test/README.md
@@ -111,14 +111,7 @@ By default, this will run ALL of the unit tests. However, you can run
a subset of the tests using the TESTS argument:
```
-$ make test TESTS=test/Tests/CDNTest.php
-```
-
-The above only runs the CDN unit tests. To specify a list of tests,
-make sure you put quotes around the entire string:
-
-```
-$ make test TESTS="test/Tests/CDNTest.php test/Tests/ACLTest.php"
+$ make test TESTS="test/Tests/BootstrapTest.php test/Tests/ACLTest.php"
```
If you know which *group* of tests you want to run, you can run just
diff --git a/test/Tests/CDNTest.php b/test/Tests/CDNTest.php
deleted file mode 100644
index a20cc76..0000000
--- a/test/Tests/CDNTest.php
+++ /dev/null
@@ -1,252 +0,0 @@
-conf('hpcloud.swift.container');
- try {
- $cdn->delete($cname);
- }
- catch (\HPCloud\Exception $e) {
- syslog(LOG_WARNING, $e);
- }
- }
-
- public function testConstructor() {
- $ident = $this->identity();
-
- $catalog = $ident->serviceCatalog(CDN::SERVICE_TYPE);
- $token = $ident->token();
-
- $this->assertNotEmpty($catalog[0]['endpoints'][0]['publicURL']);
- $parts = parse_url($catalog[0]['endpoints'][0]['publicURL']);
- $url = 'https://' . $parts['host'];
- $tenantId = $catalog[0]['endpoints'][0]['tenantId'];
-
- $cdn = new CDN($token, $url, $tenantId);
-
- $this->assertInstanceOf('\HPCloud\Storage\CDN', $cdn);
-
- }
-
- /**
- * @depends testConstructor
- */
- public function testNewFromServiceCatalog() {
- $ident = $this->identity();
- $token = $ident->token();
- $catalog = $ident->serviceCatalog();
-
- $cdn = CDN::newFromServiceCatalog($catalog, $token, $this->conf('hpcloud.swift.region'));
-
- $this->assertInstanceOf('\HPCloud\Storage\CDN', $cdn);
-
- return $cdn;
- }
-
- /**
- * @depends testConstructor
- */
- public function testNewFromIdentity() {
- $ident = $this->identity();
- $cdn = CDN::newFromIdentity($ident, $this->conf('hpcloud.swift.region'));
-
- $this->assertInstanceOf('\HPCloud\Storage\CDN', $cdn);
-
- return $cdn;
- }
-
- /**
- * @depends testNewFromServiceCatalog
- */
- public function testEnable($cdn) {
- $container = $this->conf('hpcloud.swift.container');
-
- $this->destroyCDNFixture($cdn);
- $was_created = FALSE;
- $retval = $cdn->enable($container, self::TTL, $was_created);
-
- $this->assertRegexp('/^http[s]?:\/\//', $retval);
- $this->assertTrue($was_created);
-
- // Enabling twice STILL returns 201.
- //$was_created = FALSE;
- //$retval = $cdn->enable($container, self::TTL, $was_created);
- //$this->assertFalse($was_created);
-
- return $cdn;
- }
-
- /**
- * @depends testEnable
- */
- public function testContainers($cdn) {
- $containerList = $cdn->containers();
- $cname = $this->conf('hpcloud.swift.container');
-
- $this->assertTrue(is_array($containerList));
-
- $this->assertGreaterThanOrEqual(1, count($containerList));
-
- $find = NULL;
- foreach ($containerList as $container) {
- if ($container['name'] == $cname) {
- $find = $container;
- }
- }
-
- $this->assertNotEmpty($find);
- $this->assertEquals(self::TTL, $find['ttl']);
- $this->assertNotEmpty($find['x-cdn-uri']);
- $this->assertFalse($find['log_retention']);
- $this->assertTrue($find['cdn_enabled']);
-
- // Test that the URI returned is valid:
- //$res = file_get_contents($find['x-cdn-uri'] . '/' . $cname);
- //$this->assertEquals('Foo', $res);
-
- return $cdn;
- }
-
- /**
- * @depends testContainers
- */
- public function testContainer($cdn) {
- $cname = $this->conf('hpcloud.swift.container');
- $properties = $cdn->container($cname);
-
- //throw new \Exception(print_r($properties, TRUE));
-
- $this->assertNotEmpty($properties);
-
- $this->assertEquals(self::TTL, $properties['ttl']);
- $this->assertNotEmpty($properties['x-cdn-uri']);
- $this->assertFalse($properties['log_retention']);
- $this->assertTrue($properties['cdn_enabled']);
-
- return $cdn;
- }
-
- /**
- * @depends testContainer
- */
- public function testUpdate($cdn) {
- $cname = $this->conf('hpcloud.swift.container');
-
- $cdn->update($cname, array('ttl' => '4321'));
-
- $props = $cdn->container($cname);
-
- $this->assertEquals('4321', $props['ttl']);
-
- return $cdn;
- }
-
- /**
- * @depends testUpdate
- */
- public function testDisable($cdn) {
- $cname = $this->conf('hpcloud.swift.container');
-
- //$cdn->disable($cname);
- $cdn->update($cname, array('cdn_enabled' => FALSE));
-
- $props = $cdn->container($cname);
- $this->assertFalse($props['cdn_enabled']);
-
- return $cdn;
- }
-
- /**
- * @depends testDisable
- * @group CDN-129
- */
- public function testContainersEnabledOnly($cdn) {
- $cname = $this->conf('hpcloud.swift.container');
-
- //\HPCloud\Bootstrap::setConfiguration(array('transport.debug' => 1));
- $containers = $cdn->containers(TRUE);
-
- //throw new \Exception(print_r($containers, TRUE));
-
- $found = 0;
- foreach ($containers as $container) {
- if ($container['name'] == $cname) {
- ++$found;
- //throw new \Exception(print_r($container, TRUE));
- }
- }
-
- $this->assertEquals(0, $found, "A disabled container should not be returned.");
-
- $containers = $cdn->containers(FALSE);
- $found = 0;
- foreach ($containers as $container) {
- if ($container['name'] == $cname) {
- ++$found;
- }
- }
-
- $this->assertEquals(1, $found);
- //\HPCloud\Bootstrap::setConfiguration(array('transport.debug' => 0));
-
-
- }
-
- /**
- * @depends testDisable
- */
- public function testDelete($cdn) {
- $cname = $this->conf('hpcloud.swift.container');
-
- $cdn->delete($cname);
-
- $containers = $cdn->containers();
-
- $match = 0;
- foreach ($containers as $container) {
- if ($container['name'] == $cname) {
- ++$match;
- }
- }
- $this->assertEquals(0, $match);
- return $cdn;
- }
-
-}
diff --git a/test/Tests/StreamWrapperFSTest.php b/test/Tests/StreamWrapperFSTest.php
index dc31352..cc14b2e 100644
--- a/test/Tests/StreamWrapperFSTest.php
+++ b/test/Tests/StreamWrapperFSTest.php
@@ -251,46 +251,6 @@ class StreamWrapperFSTest extends \HPCloud\Tests\TestCase {
}
- /**
- * @depends testOpen
- */
- public function testOpenWithCDN() {
- // Unfortunately we cannot test with CDN directly, because CDN requires ten
- // minutes to an our to configure itself. Use the `php test/CDNTest.php` program
- // to directly test CDN on an already-prepared container.
-
- $this->containerFixture();
-
- // Simple write test.
- $oUrl = $this->newUrl('foo→/test.csv');
-
- // Now we test the same, but re-using the auth token:
- $cxt = $this->authSwiftContext(array('use_cdn' => TRUE));
- $res = fopen($oUrl, 'nope', FALSE, $cxt);
-
- $this->assertTrue(is_resource($res));
-
- // For this to work, we need to re-use auth tokens.
- $md = stream_get_meta_data($res);
- $wrapper = $md['wrapper_data'];
-
- fclose($res);
-
- // Test with auth token.
- $cxt = $this->basicSwiftContext(array('token' => $wrapper->token(), 'use_cdn' => TRUE));
- $res = fopen($oUrl, 'nope', FALSE, $cxt);
- $this->assertTrue(is_resource($res));
- fclose($res);
-
- // Test with CDN object
- $cdn = \HPCloud\Storage\CDN::newFromServiceCatalog($wrapper->serviceCatalog(), $wrapper->token());
- $cxt = $this->basicSwiftContext(array('use_cdn' => $cdn));
- $res = fopen($oUrl, 'nope', FALSE, $cxt);
- $this->assertTrue(is_resource($res));
- fclose($res);
-
- }
-
/**
* @depends testOpen
*/
diff --git a/test/Tests/StreamWrapperTest.php b/test/Tests/StreamWrapperTest.php
index ff4ef59..3a73b39 100644
--- a/test/Tests/StreamWrapperTest.php
+++ b/test/Tests/StreamWrapperTest.php
@@ -253,46 +253,6 @@ class StreamWrapperTest extends \HPCloud\Tests\TestCase {
}
- /**
- * @depends testOpen
- */
- public function testOpenWithCDN() {
- // Unfortunately we cannot test with CDN directly, because CDN requires ten
- // minutes to an our to configure itself. Use the `php test/CDNTest.php` program
- // to directly test CDN on an already-prepared container.
-
- $this->containerFixture();
-
- // Simple write test.
- $oUrl = $this->newUrl('foo→/test.csv');
-
- // Now we test the same, but re-using the auth token:
- $cxt = $this->authSwiftContext(array('use_cdn' => TRUE));
- $res = fopen($oUrl, 'nope', FALSE, $cxt);
-
- $this->assertTrue(is_resource($res));
-
- // For this to work, we need to re-use auth tokens.
- $md = stream_get_meta_data($res);
- $wrapper = $md['wrapper_data'];
-
- fclose($res);
-
- // Test with auth token.
- $cxt = $this->basicSwiftContext(array('token' => $wrapper->token(), 'use_cdn' => TRUE));
- $res = fopen($oUrl, 'nope', FALSE, $cxt);
- $this->assertTrue(is_resource($res));
- fclose($res);
-
- // Test with CDN object
- $cdn = \HPCloud\Storage\CDN::newFromServiceCatalog($wrapper->serviceCatalog(), $wrapper->token());
- $cxt = $this->basicSwiftContext(array('use_cdn' => $cdn));
- $res = fopen($oUrl, 'nope', FALSE, $cxt);
- $this->assertTrue(is_resource($res));
- fclose($res);
-
- }
-
/**
* @depends testOpen
*/