GigaSpaces XAP 8.0 API

org.openspaces.admin.space
Class ElasticSpaceDeployment

java.lang.Object
  extended by org.openspaces.admin.space.ElasticSpaceDeployment
All Implemented Interfaces:
AdvancedStatefulDeploymentTopology, EagerScaleTopology, ElasticDeploymentTopology, ElasticStatefulDeploymentTopology, ManualCapacityScaleTopology, ProcessingUnitDeploymentTopology

public class ElasticSpaceDeployment
extends Object
implements ElasticStatefulDeploymentTopology, AdvancedStatefulDeploymentTopology

Defines an elastic deployment of a partitioned data grid (space). The advantage of partitioned topology is that the data can spread across different containers, and is not limited by the size of each container. The disadvantage compared to replicated topology is that there is only 1 read/write endpoint for each data object (no concurrent reads from different containers for the same data).

Since:
8.0
Author:
itaif
See Also:
ElasticSpaceDeployment

Constructor Summary
ElasticSpaceDeployment(String spaceName)
          Constructs a new Space deployment with the space name that will be created (it will also be the processing unit name).
 
Method Summary
 ElasticSpaceDeployment addCommandLineArgument(String commandLineArgument)
          Will add a JVM level argument when the process is executed using pure JVM.
 ElasticSpaceDeployment addContextProperty(String key, String value)
          Defines a context deploy time property overriding any ${...}
 ElasticSpaceDeployment addDependencies(org.openspaces.admin.internal.pu.dependency.ProcessingUnitDetailedDependencies<? extends ProcessingUnitDependency> detailedDependencies)
          Postpones deployment of processing unit instances until the specified dependencies are met.
 ElasticSpaceDeployment addDependency(String requiredProcessingUnitName)
          Postpones deployment of processing unit instances deployment until the specified processing unit deployment is complete.
 ElasticSpaceDeployment addEnvironmentVariable(String name, String value)
          Defines an environment variable that will be passed to forked process.
 ElasticSpaceDeployment commandLineArgument(String commandLineArgument)
          Will add a JVM level argument when the process is executed using pure JVM.
 ElasticSpaceDeployment dedicatedMachineProvisioning(ElasticMachineProvisioningConfig config)
          Configure the server side bean that starts and stops machines automatically.
 ElasticSpaceDeployment environmentVariable(String name, String value)
          Defines an environment variable that will be passed to forked process.
 ElasticSpaceDeployment highlyAvailable(boolean highlyAvailable)
          Specifies if the space should duplicate each information on two different machines.
 ElasticSpaceDeployment maxMemoryCapacity(int maxMemoryCapacity, MemoryUnit unit)
          Specifies an estimate of the maximum memory capacity for this processing unit.
 ElasticSpaceDeployment maxMemoryCapacity(String maxMemoryCapacity)
          Specifies an estimate of the minimum memory capacity for this processing unit.
 ElasticSpaceDeployment maxNumberOfCpuCores(int maxNumberOfCpuCores)
          Specifies an estimate for the maximum total number of cpu cores used by this processing unit.
 ElasticSpaceDeployment memoryCapacityPerContainer(int memoryCapacityPerContainer, MemoryUnit unit)
          Specifies the the heap size per container (operating system process) For example: memoryCapacityPerContainer(256,MemoryUnit.MEGABYTES) is equivalent to commandLineArgument("-Xmx256m").commandLineArgument("-Xms256m")
 ElasticSpaceDeployment memoryCapacityPerContainer(String memoryCapacityPerContainer)
          Specifies the the heap size per container (operating system process) For example: memoryCapacityPerContainer("256m") is equivalent to commandLineArgument("-Xmx256m").commandLineArgument("-Xms256m")
 ElasticSpaceDeployment minNumberOfCpuCoresPerMachine(double minNumberOfCpuCoresPerMachine)
          Deprecated. since 8.0.6
 ElasticSpaceDeployment name(String name)
          Sets the processing unit name that will be deployed.
 ElasticSpaceDeployment numberOfBackupsPerPartition(int numberOfBackupsPerPartition)
          Overrides the number of backup processing unit instances per partition.
 ElasticSpaceDeployment numberOfPartitions(int numberOfPartitions)
          Defines the number of processing unit partitions.
 ElasticSpaceDeployment overrideCommandLineArguments()
          Will cause JVM options added using ElasticDeploymentTopology.commandLineArgument(String) to override all the vm arguments that the JVM will start by default with.
 ElasticSpaceDeployment scale(EagerScaleConfig strategy)
          Enables the specified scale strategy, and disables all other scale strategies.
 ElasticSpaceDeployment scale(ManualCapacityScaleConfig strategy)
          Enables the specified scale strategy, and disables all other scale strategies.
 ElasticSpaceDeployment secured(boolean secured)
          Will deploy a secured processing unit.
 ElasticSpaceDeployment sharedMachineProvisioning(String sharingId, ElasticMachineProvisioningConfig config)
          Configure the server side bean that starts and stops machines automatically.
 ElasticSpaceDeployment singleMachineDeployment()
          Allows deployment of the processing unit on a single machine, by lifting the limitation for primary and backup processing unit instances from the same partition to be deployed on different machines.
 ProcessingUnitDeployment toProcessingUnitDeployment(Admin admin)
          Converts the deployment to a standard ProcessingUnitDeployment
 ElasticSpaceDeployment userDetails(String userName, String password)
          Advanced: Sets the security user details for authentication and authorization of the processing unit.
 ElasticSpaceDeployment userDetails(UserDetails userDetails)
          Advanced: Sets the security user details for authentication and authorization of the processing unit.
 ElasticSpaceDeployment useScriptToStartContainer()
          Will cause the GridServiceContainer to be started using a script and not a pure Java process.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ElasticSpaceDeployment

public ElasticSpaceDeployment(String spaceName)
Constructs a new Space deployment with the space name that will be created (it will also be the processing unit name).

Method Detail

maxMemoryCapacity

public ElasticSpaceDeployment maxMemoryCapacity(int maxMemoryCapacity,
                                                MemoryUnit unit)
Description copied from interface: ElasticStatefulDeploymentTopology
Specifies an estimate of the maximum memory capacity for this processing unit. The actual maximum memory capacity will be at least the specified maximum. Requires the memoryCapacityPerContainer() property. The memory capacity value is the sum of both the primary and backup instances memory capacity.

Specified by:
maxMemoryCapacity in interface ElasticStatefulDeploymentTopology

maxMemoryCapacity

public ElasticSpaceDeployment maxMemoryCapacity(String maxMemoryCapacity)
Description copied from interface: ElasticStatefulDeploymentTopology
Specifies an estimate of the minimum memory capacity for this processing unit. The actual maximum memory capacity will be at least the specified maximum. Requires the memoryCapacityPerContainer() property. The memory capacity value is the sum of both the primary and backup instances memory capacity.

Specified by:
maxMemoryCapacity in interface ElasticStatefulDeploymentTopology

memoryCapacityPerContainer

public ElasticSpaceDeployment memoryCapacityPerContainer(int memoryCapacityPerContainer,
                                                         MemoryUnit unit)
Description copied from interface: ElasticDeploymentTopology
Specifies the the heap size per container (operating system process) For example: memoryCapacityPerContainer(256,MemoryUnit.MEGABYTES) is equivalent to commandLineArgument("-Xmx256m").commandLineArgument("-Xms256m")

Specified by:
memoryCapacityPerContainer in interface ElasticDeploymentTopology

memoryCapacityPerContainer

public ElasticSpaceDeployment memoryCapacityPerContainer(String memoryCapacityPerContainer)
Description copied from interface: ElasticDeploymentTopology
Specifies the the heap size per container (operating system process) For example: memoryCapacityPerContainer("256m") is equivalent to commandLineArgument("-Xmx256m").commandLineArgument("-Xms256m")

Specified by:
memoryCapacityPerContainer in interface ElasticDeploymentTopology

maxNumberOfCpuCores

public ElasticSpaceDeployment maxNumberOfCpuCores(int maxNumberOfCpuCores)
Description copied from interface: ElasticStatefulDeploymentTopology
Specifies an estimate for the maximum total number of cpu cores used by this processing unit.

Specified by:
maxNumberOfCpuCores in interface ElasticStatefulDeploymentTopology

scale

public ElasticSpaceDeployment scale(EagerScaleConfig strategy)
Description copied from interface: EagerScaleTopology
Enables the specified scale strategy, and disables all other scale strategies. Eager scale starts new containers on any available agent. Scale strategies can also be reconfigured after deployment.

Specified by:
scale in interface EagerScaleTopology
See Also:
EagerScaleConfig, EagerScaleConfigurer

scale

public ElasticSpaceDeployment scale(ManualCapacityScaleConfig strategy)
Description copied from interface: ManualCapacityScaleTopology
Enables the specified scale strategy, and disables all other scale strategies. Manual scale, starts containers until the specified capacity is reached. Scale strategies can also be reconfigured after deployment.

Specified by:
scale in interface ManualCapacityScaleTopology
See Also:
ManualCapacityScaleConfig, ManualCapacityScaleConfigurer

name

public ElasticSpaceDeployment name(String name)
Description copied from interface: ElasticDeploymentTopology
Sets the processing unit name that will be deployed. By default it will be based on the parameter passed in the constructor.

Specified by:
name in interface ElasticDeploymentTopology

addContextProperty

public ElasticSpaceDeployment addContextProperty(String key,
                                                 String value)
Description copied from interface: ElasticDeploymentTopology
Defines a context deploy time property overriding any ${...} defined within a processing unit configuration.

Specified by:
addContextProperty in interface ElasticDeploymentTopology

secured

public ElasticSpaceDeployment secured(boolean secured)
Description copied from interface: ProcessingUnitDeploymentTopology
Will deploy a secured processing unit. Note, by setting user details the processing unit will be secured automatically.

Specified by:
secured in interface ProcessingUnitDeploymentTopology

userDetails

public ElasticSpaceDeployment userDetails(UserDetails userDetails)
Description copied from interface: ProcessingUnitDeploymentTopology
Advanced: Sets the security user details for authentication and authorization of the processing unit.

Specified by:
userDetails in interface ProcessingUnitDeploymentTopology

userDetails

public ElasticSpaceDeployment userDetails(String userName,
                                          String password)
Description copied from interface: ProcessingUnitDeploymentTopology
Advanced: Sets the security user details for authentication and authorization of the processing unit.

Specified by:
userDetails in interface ProcessingUnitDeploymentTopology

useScriptToStartContainer

public ElasticSpaceDeployment useScriptToStartContainer()
Description copied from interface: ElasticDeploymentTopology
Will cause the GridServiceContainer to be started using a script and not a pure Java process.

Specified by:
useScriptToStartContainer in interface ElasticDeploymentTopology

overrideCommandLineArguments

public ElasticSpaceDeployment overrideCommandLineArguments()
Description copied from interface: ElasticDeploymentTopology
Will cause JVM options added using ElasticDeploymentTopology.commandLineArgument(String) to override all the vm arguments that the JVM will start by default with.

Specified by:
overrideCommandLineArguments in interface ElasticDeploymentTopology

commandLineArgument

public ElasticSpaceDeployment commandLineArgument(String commandLineArgument)
Description copied from interface: ElasticDeploymentTopology
Will add a JVM level argument when the process is executed using pure JVM. For example, the memory can be controlled using -Xmx512m. This method does not conform to the fluent API naming conventions. Use addCommandLineArgument instead.

Specified by:
commandLineArgument in interface ElasticDeploymentTopology

addCommandLineArgument

public ElasticSpaceDeployment addCommandLineArgument(String commandLineArgument)
Description copied from interface: ElasticDeploymentTopology
Will add a JVM level argument when the process is executed using pure JVM. For example, the memory can be controlled using -Xmx512m.

Specified by:
addCommandLineArgument in interface ElasticDeploymentTopology

environmentVariable

public ElasticSpaceDeployment environmentVariable(String name,
                                                  String value)
Description copied from interface: ElasticDeploymentTopology
Defines an environment variable that will be passed to forked process. This method does not conform to the fluent API naming conventions. Use addEnvironmnetVariable instead.

Specified by:
environmentVariable in interface ElasticDeploymentTopology

addEnvironmentVariable

public ElasticSpaceDeployment addEnvironmentVariable(String name,
                                                     String value)
Description copied from interface: ElasticDeploymentTopology
Defines an environment variable that will be passed to forked process.

Specified by:
addEnvironmentVariable in interface ElasticDeploymentTopology

highlyAvailable

public ElasticSpaceDeployment highlyAvailable(boolean highlyAvailable)
Description copied from interface: ElasticStatefulDeploymentTopology
Specifies if the space should duplicate each information on two different machines. If set to false then partition data is lost each time fail-over or scaling occurs. By default highlyAvailable is true

Specified by:
highlyAvailable in interface ElasticStatefulDeploymentTopology

dedicatedMachineProvisioning

public ElasticSpaceDeployment dedicatedMachineProvisioning(ElasticMachineProvisioningConfig config)
Description copied from interface: ElasticDeploymentTopology
Configure the server side bean that starts and stops machines automatically. For example, the bean could delegate the request to a cloud provider.

The machines returned by the 'machine provisioner' will be dedicated to the instances of this processing unit. In other words, this processing unit will not share the machines with other processing units.

See also DiscoveredMachineProvisioningConfig for configuring deployment on a non-virtualized environment. Machines are discovered if 'Grid Service Agents' are running on them.

Specified by:
dedicatedMachineProvisioning in interface ElasticDeploymentTopology
See Also:
ElasticDeploymentTopology.sharedMachineProvisioning(String, ElasticMachineProvisioningConfig)

sharedMachineProvisioning

public ElasticSpaceDeployment sharedMachineProvisioning(String sharingId,
                                                        ElasticMachineProvisioningConfig config)
Description copied from interface: ElasticDeploymentTopology
Configure the server side bean that starts and stops machines automatically. For example, the bean could delegate the request to a cloud provider.

The machines returned by the 'machine provisioner' will be shared by other processing unit instances with the same sharingId.

See also DiscoveredMachineProvisioningConfig for configuring deployment on a non-virtualized environment. Machines are discovered if 'Grid Service Agents' are running on them.

Specified by:
sharedMachineProvisioning in interface ElasticDeploymentTopology
See Also:
ElasticDeploymentTopology.dedicatedMachineProvisioning(ElasticMachineProvisioningConfig)

numberOfBackupsPerPartition

public ElasticSpaceDeployment numberOfBackupsPerPartition(int numberOfBackupsPerPartition)
Description copied from interface: AdvancedStatefulDeploymentTopology
Overrides the number of backup processing unit instances per partition. Default is 1 This is an advanced property.

Specified by:
numberOfBackupsPerPartition in interface AdvancedStatefulDeploymentTopology

numberOfPartitions

public ElasticSpaceDeployment numberOfPartitions(int numberOfPartitions)
Description copied from interface: AdvancedStatefulDeploymentTopology
Defines the number of processing unit partitions. This property cannot be used with #maxMemoryCapacity(String) and #maxNumberOfCpuCores(int). This is an advanced property.

Specified by:
numberOfPartitions in interface AdvancedStatefulDeploymentTopology

minNumberOfCpuCoresPerMachine

@Deprecated
public ElasticSpaceDeployment minNumberOfCpuCoresPerMachine(double minNumberOfCpuCoresPerMachine)
Deprecated. since 8.0.6

See Also:
ElasticMachineProvisioningConfig.getMinimumNumberOfCpuCoresPerMachine()

singleMachineDeployment

public ElasticSpaceDeployment singleMachineDeployment()
Description copied from interface: AdvancedStatefulDeploymentTopology
Allows deployment of the processing unit on a single machine, by lifting the limitation for primary and backup processing unit instances from the same partition to be deployed on different machines. Default value is false (by default primary instances and backup instances need separate machines). This is an advanced property.

Specified by:
singleMachineDeployment in interface AdvancedStatefulDeploymentTopology

addDependency

public ElasticSpaceDeployment addDependency(String requiredProcessingUnitName)
Description copied from interface: ProcessingUnitDeploymentTopology
Postpones deployment of processing unit instances deployment until the specified processing unit deployment is complete. Same as: deployment.addDependencies(new ProcessingUnitDeploymentDependenciesConfigurer().dependsOnDeployment(requiredProcessingUnitName).create())

Specified by:
addDependency in interface ProcessingUnitDeploymentTopology

addDependencies

public ElasticSpaceDeployment addDependencies(org.openspaces.admin.internal.pu.dependency.ProcessingUnitDetailedDependencies<? extends ProcessingUnitDependency> detailedDependencies)
Description copied from interface: ProcessingUnitDeploymentTopology
Postpones deployment of processing unit instances until the specified dependencies are met. The following example postpones the deployment of this processing unit until B has completed the deployment and C has at least one instance deployed. deployment.addDependencies(new ProcessingUnitDeploymentDependenciesConfigurer().dependsOnDeployment("B").dependsOnMinimumNumberOfDeployedInstances("C",1).create())

Specified by:
addDependencies in interface ProcessingUnitDeploymentTopology
See Also:
ProcessingUnitDeploymentDependenciesConfigurer

toProcessingUnitDeployment

public ProcessingUnitDeployment toProcessingUnitDeployment(Admin admin)
Description copied from interface: ProcessingUnitDeploymentTopology
Converts the deployment to a standard ProcessingUnitDeployment

Specified by:
toProcessingUnitDeployment in interface ProcessingUnitDeploymentTopology

GigaSpaces XAP 8.0 API

Copyright © GigaSpaces.