summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xparser/parser.rb41
1 files changed, 32 insertions, 9 deletions
diff --git a/parser/parser.rb b/parser/parser.rb
index d11360c..a3f7246 100755
--- a/parser/parser.rb
+++ b/parser/parser.rb
@@ -6,14 +6,6 @@
# Macro names match the pattern "^[0-9A-Z_]$"
#
#
-# TODO:
-#
-# Write manual.
-#
-# Use a real parser framework?
-#
-# Love me.
-#
require 'beanstalk-client'
@@ -28,11 +20,40 @@ require 'json'
#
-# Simple wrapper to parse the configuration file
+# This is a simple class which will parse a sentinel configuration file.
+#
+# Unlike Sentinel it is not using a real parser, instead it peels off lines
+# via a small number of very simple regular expressions - this should be flaky,
+# but in practice it manages to successfully parse each of the configuration
+# files that we currently maintain @ Bytemark.
+#
+# TODO:
+#
+# 1. Break parse_file down into repeated calls to parse_line, to allow test
+# cases to be written.
+#
+# 2. Explicitly abort and panic on malformed lines.
+#
+# 3. Implement HTTP-fetching for macro-bodies.
+#
+# Steve
+# --
#
class MonitorConfig
+
+ #
+ # A hash of macros we found.
+ #
attr_reader :MACROS
+
+ #
+ # A handle to the beanstalkd queue.
+ #
attr_reader :queue
+
+ #
+ # The filename that we're going to parse.
+ #
attr_reader :filename
#
@@ -90,6 +111,7 @@ class MonitorConfig
end
+
#
# Is the given string of text a macro?
#
@@ -98,6 +120,7 @@ class MonitorConfig
end
+
#
# Return an array of hosts if the given string was a macro identifier.
#