# -*- coding: utf-8 -*-
"""Tools for databases' retention policies"""
from asyncflux.util import asyncflux_coroutine
[docs]class RetentionPolicy(object):
DEFAULT = False
def __init__(self, database, name, duration, replication, default=None):
self.__database = database
self.__name = name
self.__duration = duration
self.__replication = replication
self.__default = default or self.DEFAULT
@property
def database(self):
return self.__database
@property
def name(self):
return self.__name
@property
def duration(self):
return self.__duration
@property
def replication(self):
return self.__replication
@property
def default(self):
return self.__default
@asyncflux_coroutine
[docs] def alter(self, duration=None, replication=None, default=False):
if duration:
self.__duration = duration
if replication:
self.__replication = replication
self.__default = default
yield self.database.alter_retention_policy(self.name, duration,
replication, default)
@asyncflux_coroutine
[docs] def drop(self):
yield self.database.drop_retention_policy(self.name)
def __repr__(self):
return 'RetentionPolicy(%r, %r)' % (self.database, self.name)