Cluster Nodes

Clusters are made of Nodes. The Node interface is backend agnostic.

Nodes are generally used to run commands.

Nodes are either manually constructed in order to create a from_nodes(), or they are retrieved from an existing Cluster.

class dcos_e2e.node.Node(public_ip_address, private_ip_address, default_user, ssh_key_path, default_transport=<Transport.SSH: 1>)
Parameters:
  • public_ip_address (IPv4Address) – The public IP address of the node.
  • private_ip_address (IPv4Address) – The IP address used by the DC/OS component running on this node.
  • default_user (str) – The default username to use for connections.
  • ssh_key_path (Path) – The path to an SSH key which can be used to SSH to the node as the default_user user.
  • default_transport (Transport) – The transport to use for communicating with nodes.
public_ip_address

The public IP address of the node.

private_ip_address

The IP address used by the DC/OS component running on this node.

default_user

The default username to use for connections.

default_transport

The transport used to communicate with the node.

Running a Command on a Node

There are two methods used to run commands on Nodes. run and popen are roughly equivalent to their subprocess namesakes.

Node.run(args, user=None, log_output_live=False, env=None, shell=False, tty=False, transport=None, sudo=False)

Run a command on this node the given user.

Parameters:
  • args (List[str]) – The command to run on the node.
  • user (Optional[str]) – The username to communicate as. If None then the default_user is used instead.
  • log_output_live (bool) – If True, log output live. If True, stderr is merged into stdout in the return value.
  • env (Optional[Dict[str, Any]]) – Environment variables to be set on the node before running the command. A mapping of environment variable names to values.
  • shell (bool) – If False (the default), each argument is passed as a literal value to the command. If True, the command line is interpreted as a shell command, with a special meaning applied to some characters (e.g. $, &&, >). This means the caller must quote arguments if they may contain these special characters, including whitespace.
  • tty (bool) – If True, allocate a pseudo-tty. This means that the users terminal is attached to the streams of the process. This means that the values of stdout and stderr will not be in the returned subprocess.CompletedProcess.
  • transport (Optional[Transport]) – The transport to use for communicating with nodes. If None, the Node’s default_transport is used.
  • sudo (bool) – Whether to use “sudo” to run commands.
Return type:

CompletedProcess

Returns:

The representation of the finished process.

Raises:
Node.popen(args, user=None, env=None, shell=False, transport=None)

Open a pipe to a command run on a node as the given user.

Parameters:
  • args (List[str]) – The command to run on the node.
  • user (Optional[str]) – The user to open a pipe for a command for over. If None the default_user is used instead.
  • env (Optional[Dict[str, Any]]) – Environment variables to be set on the node before running the command. A mapping of environment variable names to values.
  • shell (bool) – If False (the default), each argument is passed as a literal value to the command. If True, the command line is interpreted as a shell command, with a special meaning applied to some characters (e.g. $, &&, >). This means the caller must quote arguments if they may contain these special characters, including whitespace.
  • transport (Optional[Transport]) – The transport to use for communicating with nodes. If None, the Node’s default_transport is used.
Return type:

Popen

Returns:

The pipe object attached to the specified process.

Sending a File to a Node

Node.send_file(local_path, remote_path, user=None, transport=None, sudo=False)

Copy a file to this node.

Parameters:
  • local_path (Path) – The path on the host of the file to send.
  • remote_path (Path) – The path on the node to place the file.
  • user (Optional[str]) – The name of the remote user to send the file. If None, the default_user is used instead.
  • transport (Optional[Transport]) – The transport to use for communicating with nodes. If None, the Node’s default_transport is used.
  • sudo (bool) – Whether to use sudo to create the directory which holds the remote file.
Return type:

None

Roles

class dcos_e2e.node.Role

Roles of DC/OS nodes.

MASTER = 'master'
AGENT = 'slave'
PUBLIC_AGENT = 'slave_public'

Transports

class dcos_e2e.node.Transport

Transports for communicating with nodes.

SSH = 1
DOCKER_EXEC = 2