From 749727e7d643ef8679559f8a07d8571f7b0631c4 Mon Sep 17 00:00:00 2001 From: Patrick Uiterwijk Date: Oct 19 2017 22:10:58 +0000 Subject: Cache generated fedimg vars Signed-off-by: Patrick Uiterwijk --- diff --git a/alt.fedoraproject.org/build/fedimg_vars.py b/alt.fedoraproject.org/build/fedimg_vars.py index eeab54d..4db9a34 100755 --- a/alt.fedoraproject.org/build/fedimg_vars.py +++ b/alt.fedoraproject.org/build/fedimg_vars.py @@ -13,16 +13,29 @@ from __future__ import print_function import collections import functools +from datetime import datetime, timedelta import logging +import shelve import os from fedimg_vars_lib import get_messages, sanity_check +logging.basicConfig(level=logging.INFO) + log = logging.getLogger('fedimg_vars') +cachefile = '/tmp/fedora_websites_fedimg_alt_%s_%s.cache' + # We cache this guy on disk for 500s def collect(release): + shelf = shelve.open(cachefile % (release['curr_cloud_AMI_id'], release['atomic_composedate'])) + if shelf.get('timestamp') and shelf.get('timestamp') > (datetime.utcnow() - timedelta(hours=1)): + log.info('Retrieving release data from shelf') + toreturn = shelf['collected'] + shelf.close() + return toreturn + results = collections.defaultdict(dict) # 1 - transform release vars into an image name we want to query for @@ -71,4 +84,8 @@ def collect(release): region = upload['destination'][5:-1] results[name][region] = ami + shelf['timestamp'] = datetime.utcnow() + shelf['collected'] = results + shelf.close() + return results diff --git a/getfedora.org/build/fedimg_vars.py b/getfedora.org/build/fedimg_vars.py index f6944c5..df572a7 100755 --- a/getfedora.org/build/fedimg_vars.py +++ b/getfedora.org/build/fedimg_vars.py @@ -13,16 +13,29 @@ from __future__ import print_function import collections import functools +from datetime import datetime, timedelta import logging +import shelve import os from fedimg_vars_lib import get_messages, sanity_check +logging.basicConfig(level=logging.INFO) + log = logging.getLogger('fedimg_vars') +cachefile = '/tmp/fedora_websites_fedimg_getfedora_%s_%s.cache' + # We cache this guy on disk for 500s def collect(release): + shelf = shelve.open(cachefile % (release['curr_cloud_AMI_id'], release['atomic_composedate'])) + if shelf.get('timestamp') and shelf.get('timestamp') > (datetime.utcnow() - timedelta(hours=1)): + log.info('Retrieving release data from shelf') + toreturn = shelf['collected'] + shelf.close() + return toreturn + results = collections.defaultdict(dict) # 1 - transform release vars into an image name we want to query for @@ -83,4 +96,8 @@ def collect(release): region = upload['destination'][5:-1] results[name][region] = ami + shelf['timestamp'] = datetime.utcnow() + shelf['collected'] = results + shelf.close() + return results