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
]
-
-
class
dcos_e2e.backends._base_classes.
ClusterManager
(masters, agents, public_agents, files_to_copy_to_installer, cluster_backend)¶ Create a DC/OS cluster with the given
cluster_backend
.Parameters: - masters (
int
) – The number of master nodes to create. - agents (
int
) – The number of agent nodes to create. - public_agents (
int
) – The number of public agent nodes to create. - files_to_copy_to_installer (
List
[Tuple
[Path
,Path
]]) – 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. - cluster_backend (
ClusterBackend
) – Details of the specific DC/OS Docker backend to use.
-
install_dcos_from_url_with_bootstrap_node
(build_artifact, dcos_config, log_output_live)¶ 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: Return type: None
-
install_dcos_from_path_with_bootstrap_node
(build_artifact, dcos_config, log_output_live)¶ 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: 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 (