brooklyn.location
Interface MachineProvisioningLocation<T extends MachineLocation>

All Superinterfaces:
Identifiable, Location, Rebindable, Serializable

public interface MachineProvisioningLocation<T extends MachineLocation>
extends Location

A location that is able to provision new machines within its location. This interface extends Location to add the ability to provision MachineLocations in this location.


Method Summary
 Map<String,Object> getProvisioningFlags(Collection<String> tags)
          Gets flags, suitable as an argument to obtain(Map).
 MachineProvisioningLocation<T> newSubLocation(Map<?,?> newFlags)
          Creates a new location of the same type, but with additional creation instructions in the form of flags, e.g.
 T obtain(Map<?,?> flags)
          Obtain a machine in this location.
 void release(T machine)
          Release a previously-obtained machine.
 
Methods inherited from interface brooklyn.location.Location
containsLocation, findLocationProperty, getAllConfig, getAllConfig, getChildLocations, getChildren, getConfig, getDisplayName, getExtension, getId, getLocationProperty, getName, getParent, getParentLocation, getRebindSupport, hasConfig, hasConfig, hasExtension, hasLocationProperty, setParent, setParentLocation, toVerboseString
 

Method Detail

obtain

T obtain(Map<?,?> flags)
                                 throws NoMachinesAvailableException
Obtain a machine in this location.

Parameters:
flags - Details of the desired machine (e.g. image, size, open ports, etc; some flag support is limited to selected providers). "callerContext" can be specified to have custom logging and error messages (useful if starting machines in parallel)
Returns:
a machine that is a child of this location.
Throws:
NoMachinesAvailableException - if there are no machines available in this location (or impls may return null, but that is discouraged)

newSubLocation

MachineProvisioningLocation<T> newSubLocation(Map<?,?> newFlags)
Creates a new location of the same type, but with additional creation instructions in the form of flags, e.g. for specifying subnets, security groups, etc

Implementers who wish to subclass this provisioning location for additional functionality in a specific cloud can use the relevant implementation of this method as a guide.


release

void release(T machine)
Release a previously-obtained machine.

Parameters:
machine - a MachineLocation previously obtained from a call to #obtain()
Throws:
IllegalStateException - if the machine did not come from a call to #obtain() or it has already been released.

getProvisioningFlags

Map<String,Object> getProvisioningFlags(Collection<String> tags)
Gets flags, suitable as an argument to obtain(Map). The tags provided give hints about the machine required. The provisioning-location could be configured to understand those tags. For example, an AWS-location could be configured to understand that a particular entity type (e.g. "TomcatServer") requires a particular AMI in that region, so would return the required image id.

Parameters:
tags -
Returns:


Copyright © 2013. All Rights Reserved.