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_ssh_user, ssh_key_path)
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_ssh_user (str) – The default username to use for SSH connections.
  • ssh_key_path (Path) – The path to an SSH key which can be used to SSH to the node as the default_ssh_user user.
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_ssh_user

The default username to use for SSH connections.

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)

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 SSH as. If None then the default_ssh_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.
Return type:

CompletedProcess

Returns:

The representation of the finished process.

Raises:

subprocess.CalledProcessError – The process exited with a non-zero code.

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

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 SSH. If None the default_ssh_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.
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)

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 via secure copy. If None the default_ssh_user is used instead.
Return type:

None