GigaSpaces XAP 10.0.1 API

org.openspaces.admin.space
Class ElasticSpaceDeployment

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

public class ElasticSpaceDeployment
extends org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment
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.
 ElasticSpaceConfig create()
          Converts this fluent API object to a lazy implementation of ProcessingUnitConfig
 ElasticSpaceDeployment dedicatedMachineProvisioning(ElasticMachineProvisioningConfig config)
          Configure the server side bean that starts and stops machines automatically.
 ElasticSpaceDeployment environmentVariable(String name, String value)
          Sets an environment variable that will be passed to forked process.
 ElasticSpaceConfig getConfig()
           
 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 AbstractElasticProcessingUnitDeployment.commandLineArgument(String) to override all the vm arguments that the JVM will start by default with.
 ElasticSpaceDeployment publicMachineProvisioning(ElasticMachineProvisioningConfig config)
          Configure the server side bean that starts and stops machines automatically.
 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.
 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 org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment
addContextPropertyDefault, getElasticProperties, scale, sharedMachineProvisioning
 
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
Overrides:
memoryCapacityPerContainer in class org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment

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
Overrides:
memoryCapacityPerContainer in class org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment

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
Overrides:
name in class org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment

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
Overrides:
addContextProperty in class org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment

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
Overrides:
secured in class org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment

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
Overrides:
userDetails in class org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment

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
Overrides:
userDetails in class org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment

useScriptToStartContainer

public ElasticSpaceDeployment useScriptToStartContainer()
Description copied from class: org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment
Will cause the GridServiceContainer to be started using a script and not a pure Java process.

Specified by:
useScriptToStartContainer in interface ElasticDeploymentTopology
Overrides:
useScriptToStartContainer in class org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment

overrideCommandLineArguments

public ElasticSpaceDeployment overrideCommandLineArguments()
Description copied from class: org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment
Will cause JVM options added using AbstractElasticProcessingUnitDeployment.commandLineArgument(String) to override all the vm arguments that the JVM will start by default with.

Specified by:
overrideCommandLineArguments in interface ElasticDeploymentTopology
Overrides:
overrideCommandLineArguments in class org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment

commandLineArgument

public ElasticSpaceDeployment commandLineArgument(String commandLineArgument)
Description copied from class: org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment
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:
commandLineArgument in interface ElasticDeploymentTopology
Overrides:
commandLineArgument in class org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment

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 class: org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment
Sets an environment variable that will be passed to forked process.

Specified by:
environmentVariable in interface ElasticDeploymentTopology
Overrides:
environmentVariable in class org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment

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
Overrides:
dedicatedMachineProvisioning in class org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment
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)

publicMachineProvisioning

public ElasticSpaceDeployment publicMachineProvisioning(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 any other instance using publicMachineProvisioning or any non-elastic processing unit instance.

Specified by:
publicMachineProvisioning in interface ElasticDeploymentTopology
Overrides:
publicMachineProvisioning in class org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment

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 ElasticStatefulDeploymentTopology.maxMemoryCapacity(String) and ElasticStatefulDeploymentTopology.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
Overrides:
addDependencies in class org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment
See Also:
ProcessingUnitDeploymentDependenciesConfigurer

create

public ElasticSpaceConfig create()
Description copied from interface: ProcessingUnitDeploymentTopology
Converts this fluent API object to a lazy implementation of ProcessingUnitConfig

Specified by:
create in interface ProcessingUnitDeploymentTopology

getConfig

public ElasticSpaceConfig getConfig()
Overrides:
getConfig in class org.openspaces.admin.internal.pu.elastic.AbstractElasticProcessingUnitDeployment

GigaSpaces XAP 10.0.1 API

Copyright © GigaSpaces.