Custom Backends

DC/OS E2E supports pluggable backends. You may wish to create a new backend to support a new cloud provider for example.

How to Create a Custom Backend

To create a cluster Cluster backend, you need to create two classes. You need to create a ClusterManager and a ClusterBackend.

A ClusterBackend may take custom parameters and is useful for storing backend-specific options. A ClusterManager implements the nuts and bolts of cluster management for a particular backend. This implements things like creating nodes and installing DC/OS on those nodes.

Please consider contributing your backend to this repository if it is stable and could be of value to a wider audience.

References

class dcos_e2e.backends._base_classes.ClusterBackend

Cluster backend base class.

cluster_cls

Return the ClusterManager class to use to create and manage a cluster.

Return type:Type[ClusterManager]
ip_detect_path

Return the path to a backend specific ip-detect script.

Return type:Path
class dcos_e2e.backends._base_classes.ClusterManager(masters, agents, public_agents, cluster_backend)

Create a DC/OS cluster with the given cluster_backend.

Parameters:
  • masters – The number of master nodes to create.
  • agents – The number of agent nodes to create.
  • public_agents – The number of public agent nodes to create.
  • cluster_backend – Details of the specific DC/OS Docker backend to use.
install_dcos_from_url_with_bootstrap_node(build_artifact, dcos_config, ip_detect_path, log_output_live, files_to_copy_to_genconf_dir)

Install DC/OS from a URL with a bootstrap node.

If a method which implements this abstract method raises a NotImplementedError, users of the backend can still install DC/OS from a URL in an inefficient manner.

Parameters:
  • build_artifact – The URL string to a build artifact to install DC/OS from.
  • dcos_config – The DC/OS configuration to use.
  • ip_detect_path – The ip-detect script to use for installing DC/OS.
  • log_output_live – If True, log output of the installation live.
  • files_to_copy_to_genconf_dir – Pairs of host paths to paths on the installer node. These are files to copy from the host to the installer node before installing DC/OS.
Return type:

None

install_dcos_from_path_with_bootstrap_node(build_artifact, dcos_config, ip_detect_path, log_output_live, files_to_copy_to_genconf_dir)

Install DC/OS from a build artifact passed as a file system Path.

If a method which implements this abstract method raises a NotImplementedError, users of the backend can still install DC/OS from a path in an inefficient manner.

Parameters:
  • build_artifact – The path to a build artifact to install DC/OS from.
  • dcos_config – The DC/OS configuration to use.
  • ip_detect_path – The ip-detect script to use for installing DC/OS.
  • log_output_live – If True, log output of the installation live.
  • files_to_copy_to_genconf_dir – Pairs of host paths to paths on the installer node. These are files to copy from the host to the installer node before installing DC/OS.
Return type:

None

destroy_node(node)

Destroy a node in the cluster.

Return type:None
destroy()

Destroy all nodes in the cluster.

Return type:None
masters

Return all DC/OS master node.Node s.

Return type:Set[Node]
agents

Return all DC/OS agent node.Node s.

Return type:Set[Node]
public_agents

Return all DC/OS public agent node.Node s.

Return type:Set[Node]
base_config

Return a base configuration for installing DC/OS OSS.

This does not need to include the lists of IP addresses for each node type.

Return type:Dict[str, Any]