atlassian/themis

View on GitHub
themis/model/emr_model.py

Summary

Maintainability
A
2 hrs
Test Coverage
import themis.monitoring.emr_monitoring
import themis.scaling.emr_scaling
from themis.util import aws_common
from themis import config
from themis.model.aws_model import *


class EmrCluster(Scalable, Monitorable):
    def __init__(self, id=None):
        super(EmrCluster, self).__init__(id)
        self.type = None
        self.ip = None
        self.ip_public = None
        self.monitoring_data = {}

    def fetch_data(self):
        if self.needs_scaling():
            self.monitoring_data = themis.monitoring.emr_monitoring.collect_info(self)
        return self.monitoring_data

    def needs_scaling(self, params=None):
        app_config = config.get_config()
        cluster_ids = app_config.general.get_autoscaling_clusters()
        return self.id in cluster_ids

    def perform_scaling(self, params=None):
        themis.scaling.emr_scaling.perform_scaling(self)


class EmrClusterType(object):
    PRESTO = aws_common.CLUSTER_TYPE_PRESTO
    HIVE = aws_common.CLUSTER_TYPE_HIVE