v1.7.0
jamiehannaford
released this
31 Oct 15:45
·
1513 commits
to master
since this release
Integration with Guzzle HTTP component
- Uploading files is now much quicker
- Parallel requests using multi-cURL, which means files can be uploaded concurrently
- Files over 5GB are fragmented and uploaded using multibyte chunking
- URLs are now treated as fully fledged objects (
Guzzle\Http\Url
), allowing for greater functionality - Requests that send content now have the benefit of using the
Guzzle\Http\EntityBody
object, which extends and builds on the native functionality offered by PHP streams. Now there is a cool abstraction layer that offers a lot of consistency - Progress functionality (either by dedicated methods or by anonymous functions)
- Event dispatching so all of your objects now have access to, and can also modify, the HTTP workflow. See Symfony's Event Dispatcher Component for more info.
For a complete list of features, view the official page.
Keypair support
Although code now exists in the SDK for API compatability for creating servers with keypairs, there has been a recent bug in Nova where certain endpoints (DFW, IAD and ORD) do not exhibit the desired functionality. A patch will be released in the near future. For reference, you just need to add in an extra array key:
try {
$server->create(array(
'name' => 'test',
'image' => $image,
'flavor' => $flavor,
'networks' => array(
$service->network(RAX_PUBLIC),
$service->network(RAX_PRIVATE)
),
'OS-DCF:diskConfig' => 'AUTO',
'keypair' => array(
'name' => 'id_rsa.pub',
'publicKey' => file_get_contents('/path/to/local/key')
)
));
} catch (\Guzzle\Http\Exception\ClientErrorResponseException $e) {
var_dump($e->getResponse());
}
Better handling of services
- Endpoints, the Service Catalog, and Catalog Items are now treated as objects
- Factory methods in the core OpenStack client have been renamed for greater clarity
- Services are now constructed with a ServiceBuilder for efficiency
- Namespace changes to all resource models for greater consistency
Major upgrade of CloudFiles
- Near 100% API consistency for Cloud Files
- Complete documentation, both technical and non-technical, for all functionality
- Better handling of resource objects:
Account
,Container
,CDNContainer
,DataObject
- The ability to upload files in 3 different ways (each one has a different use case):
- Sequential uploads for simple files
- Parallel batched uploads for multiple files
- An
OpenCloud\ObjectStore\Upload\TransferBuilder
factory for handling large uploads (+5GB) that require chunking
- Conditional requests for getting objects (
If-Match
,If-None-Match
,If-Modified-Since
andIf-Unmodified-Since
).
Range
is also now supported for partial content returns. - Bulk extract and bulk delete now better supported
Unit test structure overhaul
- Completely refactored unit tests
- All unit tests now inherit from one centralized test case
- Use of singletons for client object re-use
- New implementation of mock responses
- Request capturing using Event dispatchers
Other changes
- Refactoring of Autoscale/Monitoring to keep things DRY
- New docblock for every file with up-to-date license
- Fix to logging output functionality
- Fixes to server metadata
- Minor changes to Metadata
- Core change to method/property overloading. For every private model property, the end-user now has access to a
dynamic getter/setter methods that ensure better encapsulation. For finer-grained control, they can specify concrete
methods which supercede the magic methods. I want to get into the habit of encouraging filtered access through methods
rather than raw property access.