from collections import namedtuple import uuid Status = namedtuple('Status', ['state']) ClusterList = namedtuple('ClusterList', ['clusters']) Tag = namedtuple('Tag', ['key', 'value']) class Cluster: def __init__(self, id=None, tags=None, status_state=None): self.id = id or uuid.uuid4() self.tags = tags or [] self.status = Status(state=status_state or 'RUNNING') class MockEmrConnection(): def __init__(self): self.clusters = dict() def set_clusters(self, clusters): """Add clusters into the cluster list. Args: clusters (list): List of clusters to add. """ for cluster in clusters: self.clusters.update({ cluster.id: cluster }) def list_clusters(self): """Return all the clusters. """ return ClusterList(clusters=self.clusters.values()) def describe_cluster(self, cluster_id): """Describe a cluster. Args: cluster_id (str): the cluster id. Return: Cluster """ return self.clusters.get(cluster_id)