Previously BlobStore.list and thus BlobStore.clearContainer serialized
on synchronous and failed CDN lookups. This effectively prevents
clearing any large container. We cache a negative entry to work
around this. When HP improves their CDN support we should remove this
workaround.
This commit formats all the Abiquo provider following the jclouds
formatting guidelines. It uses the Eclipse default formatting
configuration and a 3 spaces indentation and a line wrap fo 120
characters.
Made a few changes to adapt the Abiquo compute service
implementation to the most common use cases:
* Do not attempt to create a VDC. Regualr users may not have
permissions to create VDCs, so don't try to create them. A
VDC compatible with teh template being deployed must exist.
* Configure nodes with one public ip by default, and if no
public ip is available, assign one from the default private
VLAN for the selected virtual datacenter.
Also fixed some concept mappings between Abiquo and jclouds:
Virtual datacenter (zone) election should be performed by the
TemplateBuilder and not by the ComputeServiceAdapter. This commit
refactors the current adapter to implement the right behavior.
The two main concepts in this refactor are about locations. Now,
physical datacenters will be scoped to Region locations, and virtual
datacenters to Zones.
Images in Abiquo are scoped to Regions (each physical datacenter has a
set of available images), and hardware profiles will be used to scope
images to a particular virtual datacenter. Since a virtual datacenter in
Abiquo is just a container that provides compute resources in a specific
virtualization technology, each image will have one hardware profile
scoped to each compatible virtual datacenter (zone).
This way, the virtual datacenter election will be made using the
TemplateBuilder, by selecting the desired hardware profile.
HP modified the Swift signing mechanism to include the tenant id.
Note that this functionality requires using API access key
credentials. Live tests need some sorting out since we only support
password credential tests today.
Having a deep look at this class noticed that most of the tests were
duplicating tests in the AsyncMonitorTest class. All the functionallity
provided by the awaitCompletion and monitor methods is already tested
(and properly tested using mocks) in that class, so those methods have
been removed.
The BaseMonitoringService class just delegates to the AsyncMonitor one,
adding a bit of logic to validate input parameters, so the
BaseMonitoringServiceTest class now only tests the logic it is
responsible for.
When using TestNG timeout option to control test execution, random
timeout failures appeared. The tests have been refactored to manually
control the timeout.