summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Brown <ben.brown@codethink.co.uk>2014-01-21 12:23:08 +0000
committerBen Brown <ben.brown@codethink.co.uk>2014-01-21 12:38:22 +0000
commit394a6c619cd9458fbd659a70963485b9519cbc04 (patch)
treef33ea2dec2b5cccac9095fc6b2c6295b5e12906d
parent451ee498abbf5a4b7986954a561e4bda94955e72 (diff)
downloadtrove-overseer-394a6c619cd9458fbd659a70963485b9519cbc04.tar.gz
Fixup code
-rw-r--r--overseerlib/__init__.py1
-rw-r--r--overseerlib/app.py38
-rw-r--r--overseerlib/parseyaml.py25
3 files changed, 36 insertions, 28 deletions
diff --git a/overseerlib/__init__.py b/overseerlib/__init__.py
index 1abf511..49d9ad0 100644
--- a/overseerlib/__init__.py
+++ b/overseerlib/__init__.py
@@ -18,6 +18,7 @@
import cliapp
+import parseyaml
import mailnotify
import app
diff --git a/overseerlib/app.py b/overseerlib/app.py
index 13fb461..dc3e811 100644
--- a/overseerlib/app.py
+++ b/overseerlib/app.py
@@ -25,16 +25,32 @@ import cliapp
import overseerlib
+defaults = {
+ 'work-area': '/home/trove-overseer',
+ 'config-name': 'monitoring.conf',
+}
+
+
class TroveOverseer(cliapp.Application):
def add_settings(self):
- self.settings.string(['config-path'], 'path to configuration file',
- metavar='FILE', default='/etc/monitoring.conf')
+ self.settings.string(['work-area'],
+ 'path to the area for the controller to work in',
+ metavar='PATH',
+ default=defaults['work-area'])
+ self.settings.string(['config-name'], 'configuration file name. '
+ 'Defaults to monitoring.conf',
+ metavar='FILENAME',
+ default=defaults['config-name'])
def process_args(self, args):
-# self.rungit(['remote', 'update', 'origin'])
-# self.rungit(['reset', '--hard', 'origin/master'])
-# self.rungit(['clean', '-fdx'])
+ self.rungit(['remote', 'update', 'origin'])
+ self.rungit(['reset', '--hard', 'origin/master'])
+ self.rungit(['clean', '-fdx'])
+ config = os.path.join(self.settings['work-area'], 'git',
+ self.settings['config-name']))
+ overseerlib.parseyaml.ParseYAML.load_config(config)
+
cliapp.Application.process_args(self, args)
def human_to_bytes(self, threshold):
@@ -51,19 +67,20 @@ class TroveOverseer(cliapp.Application):
return int(num * prefix[letter])
def rungit(self, args):
- self.runcmd(['git']+args, cwd='/src/morph')
+ self.runcmd(['git']+args, cwd=os.path.join(self.settings['work-area'],
+ 'git'))
def write_to_html(self, html_file):
if html_file:
try:
- with open(self.html_file + '.new', 'w') as ofh:
+ with open(html_file + '.new', 'w') as ofh:
ofh.write('<!DOCTYPE html>\n')
ofh.write(self.gen_html())
ofh.write('\n')
- target = self.filename
- os.rename(self.filename + '.new', target)
+ target = filename
+ os.rename(filename + '.new', target)
except:
- os.unlink(self.filename + '.new')
+ os.unlink(filename + '.new')
raise
def gen_footer(self):
@@ -71,7 +88,6 @@ class TroveOverseer(cliapp.Application):
return self.tag('div', Class='footer', content=
'Generated by Trove Monitoring at ' + curtime)
-
def tag(self, tagname, content=None, gap=False, **kwargs):
tagval = ' '.join([tagname] +
['%s=%r' % (k.lower(), v)
diff --git a/overseerlib/parseyaml.py b/overseerlib/parseyaml.py
index 664f265..8aacfa7 100644
--- a/overseerlib/parseyaml.py
+++ b/overseerlib/parseyaml.py
@@ -23,21 +23,12 @@ import cliapp
class ParseYAML(object):
- def parse_yaml(self, self.settings['config-name']):
- sender = 'ben.brown@codethink.co.uk'
- username = 'benbrown'
- password = getpass.getpass()
- recipients = ['ben.brown@codethink.co.uk']
- composed_message = '''\
-From: %s
-To: %s
-Subject: Test
-
-%s
- ''' % (sender, ', '.join(recipients), content)
- server = smtplib.SMTP_SSL('imap.codethink.co.uk')
- server.login(username, password)
+ def load_config(self, config):
+ with open(config) as f:
+ text = f.read()
try:
- server.sendmail(sender, recipients, composed_message)
- finally:
- server.close
+ obj = yaml.safe_load(text)
+ except yaml.error.YAMLError as e:
+ raise cliapp.AppException('Could not load configuration file')
+
+ return obj