Source code for elastichq.model.ClusterModel

"""
.. module:: ClusterModel

.. moduleauthor:: Roy Russo <royrusso.gmail.com>
"""

from ..globals import db, ma


[docs]class ClusterModel(db.Model): """ Keeping it simple... cluster_name must be unique. """ __tablename__ = 'cluster' cluster_name = db.Column(db.String, primary_key=True) cluster_ip = db.Column(db.String, nullable=False) cluster_port = db.Column(db.String, nullable=False, default="9200") cluster_scheme = db.Column(db.String, nullable=False, default="http") cluster_version = db.Column(db.String, nullable=False, default="http") cluster_username = db.Column(db.String, nullable=True) cluster_password = db.Column(db.String, nullable=True) cluster_connected = False cluster_health = None def __init__(self, cluster_name, cluster_ip, cluster_port='9200', cluster_scheme='http', username=None, password=None): """ Init :param cluster_name: :param cluster_ip: :param cluster_port: :param cluster_scheme: """ self.cluster_name = cluster_name self.cluster_port = cluster_port self.cluster_ip = cluster_ip self.cluster_scheme = cluster_scheme self.cluster_username = username self.cluster_password = password @property def cluster_host(self): """ Concats scheme, ip, port :return: SCHEME://IP:PORT """ return self.cluster_scheme + "://" + self.cluster_ip + ":" + self.cluster_port @property def is_basic_auth(self): if self.cluster_username is not None and self.cluster_password is not None: return True return False
[docs]class ClusterDTO(ma.ModelSchema): """ Generic data transfer object for a cluster. """ _links = ma.Hyperlinks({ 'summary': ma.AbsoluteURLFor('.clusters_summary', cluster_name='<cluster_name>', _external=True), 'stats': ma.AbsoluteURLFor('.clusters_stats', cluster_name='<cluster_name>', _external=True), 'health': ma.AbsoluteURLFor('.clusters_health', cluster_name='<cluster_name>', _external=True), 'collection': ma.AbsoluteURLFor('.clusters_list') }) class Meta: ordered = True model = ClusterModel fields = ( 'cluster_name', 'cluster_ip', 'cluster_port', 'cluster_scheme', 'cluster_connected', 'cluster_host', 'cluster_version', 'cluster_health', '_links')