docker-php-client

ClusterConfig Class Documentation

Description

ClusterConfig is a class for configuring Docker cluster operations. It allows you to set execution strategy, error detail level, configure retries, set node priorities, and other cluster parameters.

Namespace

Sangezar\DockerClient\Config

Methods

create

public static function create(): self

Creates a new cluster configuration instance.

Returns:

setExecutionStrategy

public function setExecutionStrategy(string $strategy): self

Sets the execution strategy for operations on cluster nodes.

Parameters:

Returns:

Exceptions:

setErrorDetailLevel

public function setErrorDetailLevel(string $level): self

Sets the error detail level.

Parameters:

Returns:

Exceptions:

setRetryConfig

public function setRetryConfig(bool $enable, ?int $maxRetries = null, ?int $retryDelay = null, ?bool $exponentialBackoff = null): self

Configures retry parameters for error handling.

Parameters:

Returns:

Exceptions:

setOperationTimeout

public function setOperationTimeout(int $seconds): self

Sets the timeout for cluster node operations.

Parameters:

Returns:

Exceptions:

setNodePriority

public function setNodePriority(string $nodeName, int $priority): self

Sets the priority for a node.

Parameters:

Returns:

Exceptions:

setDefaultNodeTag

public function setDefaultNodeTag(?string $tag): self

Sets the default tag for operations.

Parameters:

Returns:

addFailoverNode

public function addFailoverNode(string $nodeName): self

Adds a node to the list of failover nodes.

Parameters:

Returns:

Exceptions:

getExecutionStrategy

public function getExecutionStrategy(): string

Gets the current execution strategy.

Returns:

getErrorDetailLevel

public function getErrorDetailLevel(): string

Gets the current error detail level.

Returns:

isRetryOnFailure

public function isRetryOnFailure(): bool

Checks if retries are allowed.

Returns:

getMaxRetries

public function getMaxRetries(): int

Gets the maximum number of retries.

Returns:

getRetryDelay

public function getRetryDelay(): int

Gets the delay between retries.

Returns:

isExponentialBackoff

public function isExponentialBackoff(): bool

Checks if exponential delay increase is used.

Returns:

getOperationTimeout

public function getOperationTimeout(): int

Gets the operation timeout.

Returns:

getNodePriorities

public function getNodePriorities(): array

Gets node priorities.

Returns:

getDefaultNodeTag

public function getDefaultNodeTag(): ?string

Gets the default tag.

Returns:

getFailoverNodes

public function getFailoverNodes(): array

Gets the list of failover nodes.

Returns:

toArray

public function toArray(): array

Converts the configuration to an array.

Returns:

Usage Examples

Creating Basic Configuration

use Sangezar\DockerClient\Config\ClusterConfig;
use Sangezar\DockerClient\Cluster\Operations\AbstractOperations;

// Creating configuration with default parameters
$config = ClusterConfig::create();

// Setting execution strategy and error level
$config->setExecutionStrategy(AbstractOperations::EXECUTION_PARALLEL)
       ->setErrorDetailLevel(AbstractOperations::ERROR_LEVEL_DETAILED);

Configuring Retries

use Sangezar\DockerClient\Config\ClusterConfig;

$config = ClusterConfig::create();

// Allow retries with maximum 5 attempts
// and 500ms delay between attempts
$config->setRetryConfig(true, 5, 500, true);

// Set operation timeout to 60 seconds
$config->setOperationTimeout(60);

Configuring Node Priorities

use Sangezar\DockerClient\Config\ClusterConfig;

$config = ClusterConfig::create();

// Setting priorities for nodes
$config->setNodePriority('node1', 1) // highest priority
       ->setNodePriority('node2', 2)
       ->setNodePriority('node3', 3);

// Adding failover nodes
$config->addFailoverNode('backup-node1')
       ->addFailoverNode('backup-node2');

// Setting default tag
$config->setDefaultNodeTag('production');

Getting Configuration Settings

use Sangezar\DockerClient\Config\ClusterConfig;

$config = ClusterConfig::create()
    ->setExecutionStrategy(AbstractOperations::EXECUTION_PARALLEL)
    ->setRetryConfig(true, 3, 1000, true);

// Checking if retries are allowed
if ($config->isRetryOnFailure()) {
    echo "Retries are allowed\n";
    echo "Maximum number of attempts: " . $config->getMaxRetries() . "\n";
    echo "Delay: " . $config->getRetryDelay() . " ms\n";
}

// Getting all settings as an array
$allSettings = $config->toArray();