Switch to a per-namespace configurable expiration policy for time machine, and switch the tag gc to respect it.

This commit is contained in:
Jake Moshenko 2015-02-12 14:11:56 -05:00
parent d81e6c7a4d
commit 872539bdbf
4 changed files with 26 additions and 17 deletions

View file

@ -1,12 +1,14 @@
import string
import logging
import uuid
import time
from random import SystemRandom
from datetime import datetime
from peewee import *
from data.read_slave import ReadSlaveModel
from sqlalchemy.engine.url import make_url
from data.read_slave import ReadSlaveModel
from util.names import urn_generator
@ -136,6 +138,9 @@ def uuid_generator():
return str(uuid.uuid4())
_get_epoch_timestamp = lambda: int(time.time())
def close_db_filter(_):
if not db.is_closed():
logger.debug('Disconnecting from database.')
@ -175,6 +180,7 @@ class User(BaseModel):
invoice_email = BooleanField(default=False)
invalid_login_attempts = IntegerField(default=0)
last_invalid_login = DateTimeField(default=datetime.utcnow)
removed_tag_expiration_s = IntegerField(default=1209600) # Two weeks
def delete_instance(self, recursive=False, delete_nullable=False):
# If we are deleting a robot account, only execute the subset of queries necessary.
@ -456,8 +462,8 @@ class RepositoryTag(BaseModel):
name = CharField()
image = ForeignKeyField(Image)
repository = ForeignKeyField(Repository)
lifetime_start = DateTimeField(default=datetime.utcnow)
lifetime_end = DateTimeField(null=True)
lifetime_start_ts = IntegerField(default=_get_epoch_timestamp)
lifetime_end_ts = IntegerField(null=True, index=True)
class Meta:
database = db