From 7de120ef7610b2ccc4447154785238269737ac07 Mon Sep 17 00:00:00 2001 From: =?utf8?q?C=C3=A9dric=20Le=20Ninivin?= Date: Fri, 6 Jun 2014 14:17:47 +0200 Subject: [PATCH] resilient-stack: include feed monitoring on pbs server resilient: improve feed monitoring to provide feed access directly in monitor --- software/slaprunner/instance-runner-export.cfg.in | 13 +++++++++++- stack/resilient/buildout.cfg | 12 +++++++++++ stack/resilient/instance-pull-backup.cfg.in | 12 +++++++++++ .../templates/monitor-check-resilient-feed.in | 23 ++++++++++++++++++++++ 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 stack/resilient/templates/monitor-check-resilient-feed.in diff --git a/software/slaprunner/instance-runner-export.cfg.in b/software/slaprunner/instance-runner-export.cfg.in index 49c2a82..6bc89e7 100644 --- a/software/slaprunner/instance-runner-export.cfg.in +++ b/software/slaprunner/instance-runner-export.cfg.in @@ -63,4 +63,15 @@ url = $${monitor-frontend:config-url}/$${deploy-index-template:filename} # Extends publish section with resilient parameters [publish-connection-informations] -<= resilient-publish-connection-parameter \ No newline at end of file +<= resilient-publish-connection-parameter + +[monitor-check-resilient-feed-file] +recipe = slapos.recipe.template:jinja2 +template = ${template-monitor-check-resilient-feed:location}/${template-monitor-check-resilient-feed:filename} +rendered = $${monitor-directory:monitor-custom-scripts}/check-create-resilient-feed-files.py +mode = 700 +context = + key input_feed_directory directory:notifier-feeds + key monitor_feed_directory monitor-directory:public-cgi + raw base_url http://[$${notifier:host}]:$${notifier:port}/get/ + raw python_executable ${buildout:executable} diff --git a/stack/resilient/buildout.cfg b/stack/resilient/buildout.cfg index 5bc9895..fb53fb8 100644 --- a/stack/resilient/buildout.cfg +++ b/stack/resilient/buildout.cfg @@ -104,6 +104,18 @@ output = ${buildout:directory}/template-wrapper.cfg mode = 0644 md5sum = 8cde04bfd0c0e9bd56744b988275cfd8 +################## +# Monitor element +# + +[template-monitor-check-resilient-feed] +recipe = hexagonit.recipe.download +url = ${:_profile_base_location_}/templates/monitor-check-resilient-feed.in +download-only = true +#md5sum = 7c0608eafb5c6998846851744a70b3de +filename = monitor-check-resilient-feed.in +mode = 0644 + [versions] # Pin Jinja2 to 2.6, as 2.7 breaks current code Jinja2 = 2.6 diff --git a/stack/resilient/instance-pull-backup.cfg.in b/stack/resilient/instance-pull-backup.cfg.in index e50b12d..67370cd 100644 --- a/stack/resilient/instance-pull-backup.cfg.in +++ b/stack/resilient/instance-pull-backup.cfg.in @@ -27,6 +27,7 @@ parts = ## Monitor for pbs monitor-current-log-access monitor-backup-log-access + monitor-check-resilient-feed-file extends = ${monitor-template:output} eggs-directory = ${buildout:eggs-directory} @@ -258,3 +259,14 @@ source = $${directory:logrotate-backup} [monitor-current-log-access] < = monitor-directory-access source = $${basedirectory:log} + +[monitor-check-resilient-feed-file] +recipe = slapos.recipe.template:jinja2 +template = ${template-monitor-check-resilient-feed:location}/${template-monitor-check-resilient-feed:filename} +rendered = $${monitor-directory:monitor-custom-scripts}/check-create-resilient-feed-files.py +mode = 700 +context = + key input_feed_directory directory:notifier-feeds + key monitor_feed_directory monitor-directory:public-cgi + key base_url publish-connection-informations:feeds-url + raw python_executable ${buildout:executable} diff --git a/stack/resilient/templates/monitor-check-resilient-feed.in b/stack/resilient/templates/monitor-check-resilient-feed.in new file mode 100644 index 0000000..de3f6bf --- /dev/null +++ b/stack/resilient/templates/monitor-check-resilient-feed.in @@ -0,0 +1,23 @@ +#!{{ python_executable }} + +import os +import urllib2 +import sys + +input_feed_directory = '{{ input_feed_directory }}' +monitor_feed_directory = '{{ monitor_feed_directory }}' +base_url = "{{ base_url }}" +feed_file_list = os.listdir(input_feed_directory) + +rss_ok = True + +for feed_file_name in feed_file_list: + print "Getting %s" % feed_file_name + url = base_url + feed_file_name + try: + feed = urllib2.urlopen(url) + body = feed.read() + open(os.path.join(monitor_feed_directory, feed_file_name + '.rss'), 'w').write(body) + print "FEED is ok" + except urllib2.HTTPError as e: + sys.exit("%s is unvailable: %s" % (feed_file_name, e)) -- 2.1.4