Commits

Joe Heck committed ebbda80 Merge

merging in as default UI

Comments (0)

Files changed (78)

 reports/*.html
 reports/*.css
 reports/*.js
+.cache/*
 
 For now, see:
 	docs/intro/install.rst
+
+For development installation, see:
+	docs/intro/hackerguide.rst
 * refactor the "monitor result" into a class and wrap with unit tests (done: 205:569ff9e83261)
 ** set up MonitorResult pieces to serialize/deserialize from JSON (done: 205:569ff9e83261)
 * refactor the simplePoller to read and write using the new REST API's (done: 225:b8f32ae1ba0d)
-* document the process to create a virtual machine with all the elements to run an instance of eyes
+* document the process to create a virtual machine with all the elements to run an instance of eyes (done: 235:8ada3eb00c10)
+
+Interupt: refactor ArgSet to be simple list - single and double tuple entries is too complex. (done: 263:8e6c6f64e8fa)
 
 milestone 4
-* finalize an initial site design and layout with basic use cases
+* finalize an initial site design and layout with basic use cases (done: 274:939691d00b31)
 * bolster and add on additional models to flesh out use cases
 ** create models to tie monitors to groups & users
-** create and enable tagging against monitors
+** create and enable tagging against monitors (done: 274:939691d00b31)
 ** create model to support a monitor template
 *** bonus: enable tagging against hosts, groups, and users as well
 ** use case: create a monitor from scratch - pick list
-*** choose monitor type
-*** run against a test host & get output
+*** choose monitor type  (done: 274:939691d00b31)
+*** run against a test host & get output  (done: 274:939691d00b31)
 *** add argument field
 *** save as a monitor (with host)
 *** save as a template (without host)
-** use case: status page of existing monitors
-** use case: status page of all monitors for a given host
+** use case: status page of existing monitors (done: 274:939691d00b31)
+** use case: status page of all monitors for a given host (done: 274:939691d00b31)
 ** use case: reviewing monitor templates
 ** use case: status page for monitors by tag
 ** create an action model for taking actions on warnings and errors with monitors
 *** sending email callback function
 ** use case: page showing all alerting monitors in aggregate
 *** a tag page with a list of all monitors - selectable to get trend detail in sidebar
-*** a host page with a list of all monitors - selectable to get trend detail in sidebar
+*** a host page with a list of all monitors - selectable to get trend detail in sidebar (done: 274:939691d00b31)
 *** editing page - same as above, but with historical data available as trend as well (mult datasources)
 ** come up with Eyes logo
+* make method for poller/poster to report errors in submitting data (invalid poller arguments)
+* show errors reported from poller
+* edit a monitor...
+* identify if the poller is running, or has run in the past 5 minutes (design elements for this?)
+* Host page -> New Monitor -> Save Monitor to Host
+
 
 milestone 5
 * create a method to invoke & check on a background poller process started from within the web interface

docs/eyes.graffle

+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>ActiveLayerIndex</key>
+	<integer>0</integer>
+	<key>ApplicationVersion</key>
+	<array>
+		<string>com.omnigroup.OmniGraffle</string>
+		<string>138.17.0.133677</string>
+	</array>
+	<key>AutoAdjust</key>
+	<true/>
+	<key>BackgroundGraphic</key>
+	<dict>
+		<key>Bounds</key>
+		<string>{{0, 0}, {576, 733}}</string>
+		<key>Class</key>
+		<string>SolidGraphic</string>
+		<key>ID</key>
+		<integer>2</integer>
+		<key>Style</key>
+		<dict>
+			<key>shadow</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+			<key>stroke</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+		</dict>
+	</dict>
+	<key>CanvasOrigin</key>
+	<string>{0, 0}</string>
+	<key>ColumnAlign</key>
+	<integer>1</integer>
+	<key>ColumnSpacing</key>
+	<real>36</real>
+	<key>CreationDate</key>
+	<string>2010-11-20 15:03:28 -0800</string>
+	<key>Creator</key>
+	<string>Joseph Heck</string>
+	<key>DisplayScale</key>
+	<string>1 0/72 in = 1.0000 in</string>
+	<key>GraphDocumentVersion</key>
+	<integer>6</integer>
+	<key>GraphicsList</key>
+	<array>
+		<dict>
+			<key>Bounds</key>
+			<string>{{238.5, 173}, {29, 14}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>ID</key>
+			<integer>50</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 sleep}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{231.5, 101}, {43, 14}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>ID</key>
+			<integer>49</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 surprise}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{233.5, 388.999}, {31, 14}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>ID</key>
+			<integer>48</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 anger}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{238, 461}, {30, 14}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>ID</key>
+			<integer>47</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 worry}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{231.5, 245}, {33, 14}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>ID</key>
+			<integer>46</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 happy}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{83.5354, 385.034}, {18, 18}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>45</integer>
+			<key>Rotation</key>
+			<real>210</real>
+			<key>Shape</key>
+			<string>AdjustableWedge</string>
+			<key>ShapeData</key>
+			<dict>
+				<key>endAngle</key>
+				<real>90</real>
+				<key>startAngle</key>
+				<real>270</real>
+			</dict>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{114.465, 385.034}, {18, 18}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>44</integer>
+			<key>Rotation</key>
+			<real>150</real>
+			<key>Shape</key>
+			<string>AdjustableWedge</string>
+			<key>ShapeData</key>
+			<dict>
+				<key>endAngle</key>
+				<real>90</real>
+				<key>startAngle</key>
+				<real>270</real>
+			</dict>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{72, 359.999}, {72, 72}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>43</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{186.465, 452.535}, {18, 18}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>38</integer>
+			<key>Rotation</key>
+			<real>210</real>
+			<key>Shape</key>
+			<string>AdjustableWedge</string>
+			<key>ShapeData</key>
+			<dict>
+				<key>endAngle</key>
+				<real>90</real>
+				<key>startAngle</key>
+				<real>270</real>
+			</dict>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{189, 315}, {18, 18}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>37</integer>
+			<key>Rotation</key>
+			<real>180</real>
+			<key>Shape</key>
+			<string>AdjustableWedge</string>
+			<key>ShapeData</key>
+			<dict>
+				<key>endAngle</key>
+				<real>90</real>
+				<key>startAngle</key>
+				<real>270</real>
+			</dict>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{153, 315}, {18, 18}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>36</integer>
+			<key>Rotation</key>
+			<real>180</real>
+			<key>Shape</key>
+			<string>AdjustableWedge</string>
+			<key>ShapeData</key>
+			<dict>
+				<key>endAngle</key>
+				<real>90</real>
+				<key>startAngle</key>
+				<real>270</real>
+			</dict>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{155.535, 452.535}, {18, 18}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>15</integer>
+			<key>Rotation</key>
+			<real>150</real>
+			<key>Shape</key>
+			<string>AdjustableWedge</string>
+			<key>ShapeData</key>
+			<dict>
+				<key>endAngle</key>
+				<real>90</real>
+				<key>startAngle</key>
+				<real>270</real>
+			</dict>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{117, 243.001}, {18, 18}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>35</integer>
+			<key>Shape</key>
+			<string>AdjustableWedge</string>
+			<key>ShapeData</key>
+			<dict>
+				<key>endAngle</key>
+				<real>90</real>
+				<key>startAngle</key>
+				<real>270</real>
+			</dict>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{189, 179.938}, {18, 0.125}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>34</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{153, 179.938}, {18, 0.125}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>18</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{144, 144}, {72, 72}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>6</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{117, 99}, {18, 18}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>5</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{81, 99}, {18, 18}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>4</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{72, 72}, {72, 72}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>3</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{144, 432}, {72, 72}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>25</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{144, 288}, {72, 72}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>22</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{81, 243.001}, {18, 18}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>12</integer>
+			<key>Shape</key>
+			<string>AdjustableWedge</string>
+			<key>ShapeData</key>
+			<dict>
+				<key>endAngle</key>
+				<real>90</real>
+				<key>startAngle</key>
+				<real>270</real>
+			</dict>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{72, 216.001}, {72, 72}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>19</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+		</dict>
+	</array>
+	<key>GridInfo</key>
+	<dict>
+		<key>ShowsGrid</key>
+		<string>YES</string>
+		<key>SnapsToGrid</key>
+		<string>YES</string>
+	</dict>
+	<key>GuidesLocked</key>
+	<string>NO</string>
+	<key>GuidesVisible</key>
+	<string>YES</string>
+	<key>HPages</key>
+	<integer>1</integer>
+	<key>ImageCounter</key>
+	<integer>2</integer>
+	<key>KeepToScale</key>
+	<false/>
+	<key>Layers</key>
+	<array>
+		<dict>
+			<key>Lock</key>
+			<string>NO</string>
+			<key>Name</key>
+			<string>Layer 1</string>
+			<key>Print</key>
+			<string>YES</string>
+			<key>View</key>
+			<string>YES</string>
+		</dict>
+	</array>
+	<key>LayoutInfo</key>
+	<dict>
+		<key>Animate</key>
+		<string>NO</string>
+		<key>circoMinDist</key>
+		<real>18</real>
+		<key>circoSeparation</key>
+		<real>0.0</real>
+		<key>layoutEngine</key>
+		<string>dot</string>
+		<key>neatoSeparation</key>
+		<real>0.0</real>
+		<key>twopiSeparation</key>
+		<real>0.0</real>
+	</dict>
+	<key>LinksVisible</key>
+	<string>NO</string>
+	<key>MagnetsVisible</key>
+	<string>NO</string>
+	<key>MasterSheets</key>
+	<array/>
+	<key>ModificationDate</key>
+	<string>2010-11-20 15:41:50 -0800</string>
+	<key>Modifier</key>
+	<string>Joseph Heck</string>
+	<key>NotesVisible</key>
+	<string>NO</string>
+	<key>Orientation</key>
+	<integer>2</integer>
+	<key>OriginVisible</key>
+	<string>NO</string>
+	<key>PageBreaks</key>
+	<string>YES</string>
+	<key>PrintInfo</key>
+	<dict>
+		<key>NSBottomMargin</key>
+		<array>
+			<string>float</string>
+			<string>41</string>
+		</array>
+		<key>NSLeftMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSPaperSize</key>
+		<array>
+			<string>size</string>
+			<string>{612, 792}</string>
+		</array>
+		<key>NSRightMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSTopMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+	</dict>
+	<key>PrintOnePage</key>
+	<false/>
+	<key>QuickLookPreview</key>
+	<data>
+	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
+	2D28zKcKihjnAjtwGn5POw/RSJDlHbAl9K7ZJIcHe+dTgQVNNyPbcMfAidjwkCGhQIpE
+	vKGh4Ui0COnbMs8DGlJGeo3pZS/bPrNoYRfDD9jVO86wqwdJsR/cvLBLKBZ2jZZit5Ce
+	YTdM7GW8SiJ2z3hOxIvkocgjHg8zHtJQ5j/fYYj03kd3x0GWB8hIbzDKp9yQgJnuHuin
+	XzEg4X3y7jO9+vLx8fHf13T3lX65O28eESdWrIXbB+SeSUO/QOrjCL2Q9ju9+vGaX0sj
+	vfpbF09PkP8H3b1zVxoyRxHnNV7hjujpEj3eudD3DurcBP/x25+fnm6CrxEDxhV4NDJk
+	TseAYOCnNIB//sdAP9rqL109f5p2vOipAm+dHty1p5CUDZOvKZt+Z2X3Khhyp89s8fja
+	scempvf/AVkPe9kKZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjE5NzMKZW5kb2JqCjMg
+	MCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCA0IDAgUiAvUmVzb3VyY2VzIDcgMCBS
+	IC9Db250ZW50cyA1IDAgUiAvTWVkaWFCb3ggWzAgMCA1NzYgNzMzXQo+PgplbmRvYmoK
+	NyAwIG9iago8PCAvUHJvY1NldCBbIC9QREYgL1RleHQgXSAvQ29sb3JTcGFjZSA8PCAv
+	Q3MxIDggMCBSIC9DczIgOSAwIFIgPj4gL0ZvbnQgPDwKL0YxLjAgMTAgMCBSID4+ID4+
+	CmVuZG9iagoxMSAwIG9iago8PCAvTGVuZ3RoIDEyIDAgUiAvTiAzIC9BbHRlcm5hdGUg
+	L0RldmljZVJHQiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGFVM9rE0EU
+	/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2h
+	B/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1Ki
+	EWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea
+	2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINI
+	OJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4
+	jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpk
+	YYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiw
+	UECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP
+	5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHm
+	gjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI
+	++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVg
+	YJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbpt
+	U3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocs
+	n5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fms
+	Utl+ThrWgZf6b8C8/UUKZW5kc3RyZWFtCmVuZG9iagoxMiAwIG9iago3MzcKZW5kb2Jq
+	CjggMCBvYmoKWyAvSUNDQmFzZWQgMTEgMCBSIF0KZW5kb2JqCjEzIDAgb2JqCjw8IC9M
+	ZW5ndGggMTQgMCBSIC9OIDEgL0FsdGVybmF0ZSAvRGV2aWNlR3JheSAvRmlsdGVyIC9G
+	bGF0ZURlY29kZSA+PgpzdHJlYW0KeAGFUk9IFFEc/s02EoSIQYV4iHcKCZUprKyg2nZ1
+	WZVtW5XSohhn37qjszPTm9k1xZMEXaI8dQ+iY3Ts0KGbl6LArEvXIKkgCDx16PvN7Ooo
+	hG95O9/7/f1+33tEbZ2m7zspQVRzQ5UrpaduTk2Lgx8pRR3UTlimFfjpYnGMseu5kr+7
+	19Zn0tiy3se1dvv2PbWVZWAh6i22txD6IZFmAB+ZnyhlgLPAHZav2D4BPFgOrBrwI6ID
+	D5q5MNPRnHSlsi2RU+aiKCqvYjtJrvv5uca+i7WJg/5cj2bWjr2z6qrRTNS090ShvA+u
+	RBnPX1T2bDUUpw3jnEhDGinyrtXfK0zHEZErEEoGUjVkuZ9qTp114HUYu126k+P49hCl
+	PslgqIm16bKZHYV9AHYqy+wQ8AXo8bJiD+eBe2H/W1HDk8AnYT9kh3nWrR/2F65T4HuE
+	PTXgzhSuxfHaih9eLQFD91QjaIxzTcTT1zlzpIjvMdQZmPdGOaYLMXeWqhM3gDthH1mq
+	ZgqxXfuu6iXuewJ30+M70Zs5C1ygHElysRXZFNA8CVgUfYuwSQ48Ps4eVeB3qJjAHLmJ
+	3M0o9x7VERtno1KBVnqNV8ZP47nxxfhlbBjPgH6sdtd7fP/p4xV117Y+PPmNetw5rr2d
+	G1VhVnFlC93/xzKEj9knOabB06FZWGvYduQPmsxMsAwoxH8FPpf6khNV3NXu7bhFEsxQ
+	PixsJbpLVG4p1Oo9g0qsHCvYAHZwksQsWhy4U2u6OXh32CJ6bflNV7Lrhv769nr72vIe
+	bcqoKSgTzbNEZpSxW6Pk3Xjb/WaREZ84Or7nvYpayf5JRRA/hTlaKvIUVfRWUNbEb2cO
+	fhu2flw/pef1Qf08CT2tn9Gv6KMRvgx0Sc/Cc1Efo0nwsGkh4hKgioMz1E5UY40D4inx
+	8rRbZJH9D0AZ/WYKZW5kc3RyZWFtCmVuZG9iagoxNCAwIG9iago3MDQKZW5kb2JqCjkg
+	MCBvYmoKWyAvSUNDQmFzZWQgMTMgMCBSIF0KZW5kb2JqCjQgMCBvYmoKPDwgL1R5cGUg
+	L1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMyAw
+	IFIgXSA+PgplbmRvYmoKMTUgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL091dGxpbmVz
+	IDIgMCBSIC9QYWdlcyA0IDAgUiA+PgplbmRvYmoKMiAwIG9iago8PCAvTGFzdCAxNiAw
+	IFIgL0ZpcnN0IDE3IDAgUiA+PgplbmRvYmoKMTcgMCBvYmoKPDwgL1BhcmVudCAxOCAw
+	IFIgL0NvdW50IDAgL0Rlc3QgWyAzIDAgUiAvWFlaIDAgNzMzIDAgXSAvVGl0bGUgKENh
+	bnZhcyAxKQo+PgplbmRvYmoKMTggMCBvYmoKPDwgPj4KZW5kb2JqCjE2IDAgb2JqCjw8
+	IC9QYXJlbnQgMTggMCBSIC9Db3VudCAwIC9EZXN0IFsgMyAwIFIgL1hZWiAwIDczMyAw
+	IF0gL1RpdGxlIChDYW52YXMgMSkKPj4KZW5kb2JqCjE5IDAgb2JqCjw8IC9MZW5ndGgg
+	MjAgMCBSIC9MZW5ndGgxIDg5OTYgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFt
+	CngBvVp5fNTVtT/3t8+Sycxk9iUzk8nMZLIvEIgZkiFMNiAxJAIJEkwCgQRBA4bYWKFR
+	oUhUXFCI4LOurE8ZQgoTEB/lIUhrFbXFpdpqxdb2Y559fdgNMvPO7zdJhHxaP/zhp79f
+	zr333PXc7z33nHt/k+6169ohAfqAhrpFrV3LQXpclwBI7tLVrV1xXvsnjGcv7el2xnk2
+	DYBetbxrxeo4LzwOILevWNU71j5pMYBqSkd767J4OVzBuLADM+I8mYJxasfq7u/Fee0Q
+	xoFVty8dK08KIO9c3fq9sfHhI5G/rXV1e7y+6zzGqV2339E9xj+CcbBrbftYfdKI8r0F
+	BHMT4XaQwa3AAwVqfJsB+C/kdmCwVCzHZ1mmYtstiYGvQSNI/C01D0vxGdcrF/7WfsWn
+	eFT4O2bIxuuLMeeP+gGUBMtHFI9OlEjtMEiMQENGBKqRSpGmImVkzDRBH9kNjyA9g0RD
+	J3kAepG2ID2JxEyk9iE3TB4YZITgMdILFjI7qGAcN+nMDpNc4XgnQrihpx0fmD47Tsy4
+	ep8S82ACyGbKyTPkR7AMHORF8JC7oArSyM7D/lWOFizaB11IfUi0FBKybzA53/EqyQQP
+	Q7CNF5IZcsTx+7wsx+d5EYoMOk75IgxGP0lGLpjoOGl/2vFf9hWOV5EOxIv2+7HGEcc+
+	+yrHtuQI2TnoeMweIdjm0Xi0zo5NjzhW+7c7luVJ5XO3R6gDg44iLF8QVDgKp7scU+0X
+	HTm+iECQz7LPdaTn/dyRig2xmhM79QQ1Dpt9m+MGLEq2l/tuQDpO9pNdkE52DXpmO45h
+	Eqd7uNo/fXuEfP9wVVqeJ0LuChZWpW33V/k8/rkOj7/C58P0gtf5jfzN/Ew+n8/g03gv
+	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
+	7qTfQ1cBrEoOXIKcRdtg4k0mhSEhW+5XKiwW4jeYzZZ3xq1yjWgcRPVCeOP2oTQgAi6q
+	FmkmGnFDiI5Og5Z6mnSOwFlrPGS6Jfe+V0Keof2Ue8qKbZ83ZJGDTM5oUf2Ulr2L/oNS
+	XX776RnpNz1Zv4V63yLqvxZvFs8yOfijrjO4oZLZL6O2ykgFX63YTPcLm+Q/pU7TZ/hz
+	whn5OYViOb9SaJd3Knr4XqFH3qvYxPcr5GJdqpK+E77H0gvTDGkZJIMpJsXMw+RhhpMx
+	hFZQNMspWeAEuYLm5Sr0FzzL7RJo5rSckp1WANmlNCeswP1krlVfMtWMFhVN/JklJ2KC
+	UmMA/8RT9Zx5vUEl69fijMGvVSoV7GZ1Bv7hr3VDMvxGLo+QB4JJWkIonmNYsSLHywSZ
+	XBDzVVqGoRVKnLbUlGyuyca260+b2M3Zpgxhvfo1KbF5vfr0RE5eLmles2YNHuCsVIGV
+	FBC3Ao9Z77359k/f+dVQ9NzxD989Hv0Zk3NliJ57ZZiuvPw2PePKfyOgqA/6aLV07hK9
+	xU+Dt/Xr7zftMdE8Z+Sma6u0jdoV/J30nfyDugHYwQ7odxh2GPfCXoO6CuboK43n9EyI
+	PcNSm9ndsJvsYfca2dQ01qQ3GtCX65WKRLugEp2LwYqAskAOGvWmg8qHDehjfuES0UQ4
+	L9VcNMWxHAMyrkoIcb45x1QaCAREe4XQBbV6PRgMq7VGo4klZDVqhWlzdoYIjRgJGCMK
+	eblrSDNqXwFHUzwlbaSp4mG2cFoJmYbI0LTrrPe+trKn+p7y+pNz0tX5OWq2RBXtfoM4
+	CJOzIvpo9MuXo8uHOOGFBM5lEh5PZWqvDND3ilhJT6wdf/v6Z08iZobw97PZ0m9kN+Iv
+	ePX4q9x8WACNsAgWY6moyfH7LIf/7wDz59ZV1FRmVLWv6mnv7lzaKtUY7zmEiTqkFqQu
+	pD6kR5CeQQojnUQ6j/QJ0p/ErpHUSM7Y2IMZMJEmeJe+lpfmcFX5iknlHZP4zkm8+DvR
+	1f3fNom/fRLfNYlfO4m/YxK/bhJ/5yS+V+T/H0gpMAkKZW5kc3RyZWFtCmVuZG9iagoy
+	MCAwIG9iago1Nzk0CmVuZG9iagoyMSAwIG9iago8PCAvVHlwZSAvRm9udERlc2NyaXB0
+	b3IgL0FzY2VudCA3NzAgL0NhcEhlaWdodCA3MTcgL0Rlc2NlbnQgLTIzMCAvRmxhZ3Mg
+	MzIKL0ZvbnRCQm94IFstOTUxIC00ODEgMTQ0NSAxMTIyXSAvRm9udE5hbWUgL1VMUEZN
+	RytIZWx2ZXRpY2EgL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDAgL01heFdpZHRoIDE1MDAg
+	L1hIZWlnaHQgNjM3IC9Gb250RmlsZTIgMTkgMCBSID4+CmVuZG9iagoyMiAwIG9iagpb
+	IDU1NiAwIDAgMCA1NTYgMCA1NTYgNTU2IDIyMiAwIDAgMjIyIDAgNTU2IDU1NiA1NTYg
+	MCAzMzMgNTAwIDAgNTU2IDAgNzIyCjAgNTAwIF0KZW5kb2JqCjEwIDAgb2JqCjw8IC9U
+	eXBlIC9Gb250IC9TdWJ0eXBlIC9UcnVlVHlwZSAvQmFzZUZvbnQgL1VMUEZNRytIZWx2
+	ZXRpY2EgL0ZvbnREZXNjcmlwdG9yCjIxIDAgUiAvV2lkdGhzIDIyIDAgUiAvRmlyc3RD
+	aGFyIDk3IC9MYXN0Q2hhciAxMjEgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nCj4+
+	CmVuZG9iagoyMyAwIG9iagooTWFjIE9TIFggMTAuNi41IFF1YXJ0eiBQREZDb250ZXh0
+	KQplbmRvYmoKMjQgMCBvYmoKKEQ6MjAxMDExMjAyMzQzMTdaMDAnMDAnKQplbmRvYmoK
+	MSAwIG9iago8PCAvUHJvZHVjZXIgMjMgMCBSIC9DcmVhdGlvbkRhdGUgMjQgMCBSIC9N
+	b2REYXRlIDI0IDAgUiA+PgplbmRvYmoKeHJlZgowIDI1CjAwMDAwMDAwMDAgNjU1MzUg
+	ZiAKMDAwMDAxMDk2NSAwMDAwMCBuIAowMDAwMDA0MjEyIDAwMDAwIG4gCjAwMDAwMDIw
+	ODkgMDAwMDAgbiAKMDAwMDAwNDA2MyAwMDAwMCBuIAowMDAwMDAwMDIyIDAwMDAwIG4g
+	CjAwMDAwMDIwNjkgMDAwMDAgbiAKMDAwMDAwMjE5MyAwMDAwMCBuIAowMDAwMDAzMTYz
+	IDAwMDAwIG4gCjAwMDAwMDQwMjcgMDAwMDAgbiAKMDAwMDAxMDY5NiAwMDAwMCBuIAow
+	MDAwMDAyMzAzIDAwMDAwIG4gCjAwMDAwMDMxNDMgMDAwMDAgbiAKMDAwMDAwMzE5OSAw
+	MDAwMCBuIAowMDAwMDA0MDA3IDAwMDAwIG4gCjAwMDAwMDQxNDYgMDAwMDAgbiAKMDAw
+	MDAwNDM3NSAwMDAwMCBuIAowMDAwMDA0MjYwIDAwMDAwIG4gCjAwMDAwMDQzNTMgMDAw
+	MDAgbiAKMDAwMDAwNDQ2OCAwMDAwMCBuIAowMDAwMDEwMzUyIDAwMDAwIG4gCjAwMDAw
+	MTAzNzMgMDAwMDAgbiAKMDAwMDAxMDU5OCAwMDAwMCBuIAowMDAwMDEwODcxIDAwMDAw
+	IG4gCjAwMDAwMTA5MjMgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAyNSAvUm9vdCAx
+	NSAwIFIgL0luZm8gMSAwIFIgL0lEIFsgPDlkNTU5MWJhNjg5YTI2ZWM0MTUxNmRkNzZj
+	ZDg2ZWI0Pgo8OWQ1NTkxYmE2ODlhMjZlYzQxNTE2ZGQ3NmNkODZlYjQ+IF0gPj4Kc3Rh
+	cnR4cmVmCjExMDQwCiUlRU9GCjEgMCBvYmoKPDwvQXV0aG9yIChKb3NlcGggSGVjaykv
+	Q3JlYXRpb25EYXRlIChEOjIwMTAxMTIwMjMwMzAwWikvQ3JlYXRvciAoT21uaUdyYWZm
+	bGUgNS4yLjMpL01vZERhdGUgKEQ6MjAxMDExMjAyMzQxMDBaKS9Qcm9kdWNlciAyMyAw
+	IFIgL1RpdGxlIChleWVzLmdyYWZmbGUpPj4KZW5kb2JqCnhyZWYKMSAxCjAwMDAwMTE2
+	OTggMDAwMDAgbiAKdHJhaWxlcgo8PC9JRCBbPDlkNTU5MWJhNjg5YTI2ZWM0MTUxNmRk
+	NzZjZDg2ZWI0PiA8OWQ1NTkxYmE2ODlhMjZlYzQxNTE2ZGQ3NmNkODZlYjQ+XSAvSW5m
+	byAxIDAgUiAvUHJldiAxMTA0MCAvUm9vdCAxNSAwIFIgL1NpemUgMjU+PgpzdGFydHhy
+	ZWYKMTE4NjYKJSVFT0YK
+	</data>
+	<key>QuickLookThumbnail</key>
+	<data>
+	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
+	AAABAAIAAAFSAAMAAAABAAEAAAFTAAMAAAAEAAAKYIdzAAcAABnsAAAKaAAAAAAACAAI
+	AAgACAABAAEAAQABAAAZ7GFwcGwCEAAAbW50clJHQiBYWVogB9oACwALAAwAFAARYWNz
+	cEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAA
+	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARZGVzYwAAAVAA
+	AABiZHNjbQAAAbQAAAJCY3BydAAAA/gAAADQd3RwdAAABMgAAAAUclhZWgAABNwAAAAU
+	Z1hZWgAABPAAAAAUYlhZWgAABQQAAAAUclRSQwAABRgAAAgMYWFyZwAADSQAAAAgdmNn
+	dAAADUQAAAYSbmRpbgAAE1gAAAY+Y2hhZAAAGZgAAAAsbW1vZAAAGcQAAAAoYlRSQwAA
+	BRgAAAgMZ1RSQwAABRgAAAgMYWFiZwAADSQAAAAgYWFnZwAADSQAAAAgZGVzYwAAAAAA
+	AAAIRGlzcGxheQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAA
+	EgAAAAxubE5MAAAAFgAAAOhuYk5PAAAAEgAAAP5kYURLAAAAHAAAARBlblVTAAAAEgAA
+	ASxwbFBMAAAAEgAAAT5mckZSAAAAFgAAAVBwdEJSAAAAGAAAAWZwdFBUAAAAFgAAAX56
+	aENOAAAADAAAAZRlc0VTAAAAEgAAAaBqYUpQAAAADgAAAbJydVJVAAAAJAAAAcBzdlNF
+	AAAAEAAAAeR6aFRXAAAADgAAAfRkZURFAAAAEAAAAgJpdElUAAAAFAAAAhJmaUZJAAAA
+	EAAAAiZrb0tSAAAADAAAAjYASwBsAGUAdQByAGUAbgAtAEwAQwBEAEYAYQByAGcAZQAt
+	AEwAQwBEAEwAQwBEAC0AZgBhAHIAdgBlAHMAawDmAHIAbQBDAG8AbABvAHIAIABMAEMA
+	RABLAG8AbABvAHIAIABMAEMARABMAEMARAAgAGMAbwB1AGwAZQB1AHIATABDAEQAIABD
+	AG8AbABvAHIAaQBkAG8ATABDAEQAIABhACAAQwBvAHIAZQBzX2mCcgAgAEwAQwBEAEwA
+	QwBEACAAYwBvAGwAbwByMKsw6TD8ACAATABDAEQEJgQyBDUEQgQ9BD4EOQAgBBYEGgAt
+	BDQEOARBBD8EOwQ1BDkARgDkAHIAZwAtAEwAQwBEX2mCcm2yZnaYb3k6VmgARgBhAHIA
+	YgAtAEwAQwBEAEwAQwBEACAAYwBvAGwAbwByAGkAVgDkAHIAaQAtAEwAQwBEzuy37AAg
+	AEwAQwBEAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAxMAAAAAAAAAAA
+	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+	AAAAAAAAAAAAAAAAWFlaIAAAAAAAAPNSAAEAAAABFs9YWVogAAAAAAAAbzEAADljAAAB
+	g1hZWiAAAAAAAABg7gAAt2oAAAgSWFlaIAAAAAAAACa3AAAPMgAAyZdjdXJ2AAAAAAAA
+	BAAAAAAFAAoADwAUABkAHgAjACgALQAyADYAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIA
+	dwB8AIEAhgCLAJAAlQCaAJ8AowCoAK0AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2
+	APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoB
+	oQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6
+	AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oD
+	lgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wTh
+	BPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoG
+	ewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghG
+	CFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK
+	agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzA
+	DNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14P
+	eg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJk
+	EoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsV
+	vRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlF
+	GWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4d
+	Rx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1
+	IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcm
+	JyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC
+	KzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUw
+	bDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9
+	Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8
+	JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJy
+	QrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1J
+	Y0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1Bx
+	ULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BY
+	L1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AF
+	YFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9o
+	lmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6
+	cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6
+	pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQd
+	hICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+O
+	Zo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4
+	mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj
+	5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8W
+	r4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7
+	LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB
+	x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bU
+	SdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE
+	4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTv
+	QO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p
+	/br+S/7c/23//3BhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAArAdmNndAAAAAAA
+	AAAAAAMBAAACAAAABwAeAEoAiwDjASoBbgHAAhkCdALaA0kDwwRHBNQFbQYRBsIHfAg+
+	CQcJ3Qq5C5wMjw2nDtwQEBFLEokTyRURFlwXrBkEGmEbvR0gHowf+CFkItokTiXJJy8o
+	jinrK0ksny32L0MwjTHQMw00QjVzNpw3wDjgOf07FzwrPTk+RT9SQGNBc0KEQ5dEq0W/
+	RtNH6Uj/ShVLLExDTVtOaU92UIVRklKfU6tUt1XCVstX0ljZWd9a41voXO1d6F7cX85g
+	v2GvYp5jjWR6ZWZmUWc7aCRpDmn2at9rxmypbY1ucG9TcDdxGnH8ct5zwHSjdYV2ZndJ
+	eCt5Cnnqesx7sHyYfYR+d39xgHKBeoKKg6GEvYXfhwmIPIlwiqOL1o0KjjyPbZCekc6S
+	/ZQslVuWipe2mOCaC5s1nF+diZ6yn9uhBKIto1akf6WoptGn+KkgqkyrfKyyrfGvOrCP
+	se+zW7TPtk+31Lk8unS7qbzcvgu/M8BWwXHChcORxJbFlsaRx4jIg8mHyo3LjcyFzXTO
+	V88uz/vQwNF70jbS9tPX1LnVmtZ911/YQtkl2gna7dvR3LXdmt5932DgROEp4hDi+ePm
+	5NblyebB57vouem56qXrjux27V7uRe8r8BDw9fHa8r7zofSF9Wj2S/cv+BP49/nc+sD7
+	ovyE/WX+RP8i//8AAAAGABoAQAB4AMUBEwFMAZAB3wIzAo4C8wNfA9YEVQTdBXAGDga3
+	B2UIGgjaCZwKZwtCDD0NVA5oD4AQoBHBEukUFRVEFnkXrxjvGi4bchy8HgsfViCqIf8j
+	QSSBJb8m/Cg3KWoqnSvLLPIuFS8zMEgxWzJnM3E0eTV9Nno3ajhbOUw6PTswPCI9FT4I
+	Pvo/7UDhQdVCykO+RLNFp0aYR4hId0loSllLSEw4TSdOFU8ET/RQ4lHRUsBTsFSeVYhW
+	c1deWElZM1odWwZb7lzWXb1eo1+KYG9hVGI0Ywxj4mS5ZY9mZmc8aBFo5mm7apFrZWw6
+	bQ9t4263b4hwWXErcfxyznOgdHJ1Q3YVdud3uXiMeV56MHsCe9d8r32Lfm1/VYBEgTqC
+	OYM9hEiFWIZuh4eIpYnDiuGL/o0cjjmPVpBzkZCSrJPJlOaWApccmDaZUZptm4ucrJ3Q
+	nvagIqFQooOjuaTxpi6ncai0qferOax8rb6vALBBsYOyxbQFtUe2iLfHuQe6RbuCvL29
+	9L8mwFPBe8Kew7vE1cXpxvfIBMkTyiHLL8w9zUzOWs9o0HfRhtKV06LUr9W81snX1tjl
+	2fTbA9wU3SXeON9M4Gfho+Lp5CflWuaG56rox+nh6vjsDu0l7j/vW/CA8dDzM/ST9fP3
+	Uvi0+hj7hfz4/nf//wAAAAQAEQAqAE4AgADAAQcBOgF0AbcCAgJNAqAC+wNeA8oEPAS2
+	BTgFwgZQBuMHewgbCMcJjQpjCzwMGwz+DeIOyw+1EKURmBKOE4gUhRWGFosXkxifGasa
+	uBu9HL0dvh6/H74guyG1IqsjnSSLJXUmXCdAKCIpACnbKrcriyxWLSAt6i61L4AwSzEW
+	MeEyqzN1ND81CTXTNp03aDg0OPg5vjqFO0s8EjzaPaI+aj8yP/xAxkGRQl1DKkP3RMNF
+	j0ZbRydH8ki+SYpKVkshS+tMtk2ATkxPFk/hUKtRc1I7UwJTylSSVVpWIFbnV65YdVk7
+	WgJayVuPXFNdFl3ZXptfXWAdYN1hnWJdYxxj2mSYZVZmE2bPZ4toRWkAabtqdmsxa+xs
+	p21ibhxu12+TcE5xCHHBcnpzM3PsdKV1XnYXds93h3g/ePh5sHppeyB72XyUfVR+GX7l
+	f7iAlIF5gmaDXIRZhVuGZYd1iIWJloqmi7aMxo3VjuWP9JEDkhOTIpQwlTqWQ5dKmFGZ
+	WZpim2+cf52Tnqyfy6DvoiWjeaTQpienfqjWqi2rhKzbrjGviLDesjazi7TftjO3h7jc
+	ujO7irzivjy/mMD2wlTDtcUnxqTILcnFy2vNJM7s0MfSsdSp1rDYwdrd3QDfMOGn5Ibn
+	iuq37g/xiPUY+LX8V///AABuZGluAAAAAAAABjYAAKXjAABWoQAAUVsAAKcrAAAlmwAA
+	DhQAAFANAABUOQACQo8AAdmZAAFHrgADAQAAAgAAAA0AJwBGAGYAhwCoAMkA6wEOATEB
+	VQF6AZ0BvAHbAfwCHQI/AmIChgKqAs8C9AMbA0EDaAOQA7kD4gQLBDUEYASMBLgE5AUS
+	BT8FbgWhBdUGCgZBBngGsgbsBygHZwenB+kILgh1CL8JCwlaCawKAQpYCrILDgtuC9IM
+	OAygDQgNcg3eDkoOuQ8oD5oQDRCBEPcRbxHoEmMS3xNiE+cUbRT2FYEWDhadFy8Xwxhb
+	GPUZkRoxGtMbdxwdHNAdhx5CHwAfwSCFIU0iGSLoI7skkSVqJkYnJSgMKPUp4irSK8Qs
+	ui2zLrAvrzCyMbgywDPLNN418TcEOBU5IzotOzE8MD0qPiA/EkACQO9B20K/Q6JEiEVv
+	RlhHQkgvSR5KD0sDS/hM8E3qTuVP4lDhUeRS61PzVP1WCVcXWCdZOVpNW2Nce12VXrBf
+	zmDtYg5jM2RZZX9mo2fFaONp/WsSbCFtKm4uby1wKXEichZzCXP6dOl2GndNeIR5v3r+
+	fEV9k37rgE2Bu4M0hLmGSYfjiYeLIYyujkCP4JGRk1iVPZdJmXebxZ4boA6iAqP5pfKn
+	7qnsq+yt76/1sf20CLYbuC+6RLxZvmnAdsJ+xIDGfch2ymzMYM6L0LjS6tUh113Zn9vm
+	3jHggeLV5SvniOnn7EfuqvEQ83v17fhm+uf9cP//AAAADwAuAFEAdQCaAL8A5AELATIB
+	WwGEAakBywHvAhQCOgJgAogCsALZAwMDLQNZA4UDsQPfBA0EPARrBJsEzQT+BTEFZAWc
+	BdUGDwZMBokGyAcKB00HkgfaCCUIcgjCCRYJbAnGCiMKggrlC0oLugwrDJ8NFQ2MDgYO
+	gg8AD4EQAxCIEQ4RlxIiEq8TQBPVFG0VBhWiFkEW4heGGC0Y1hmBGjAa4BuTHEgdBB3C
+	HoMfRiAMINYhoiJzI0YkHiT4JdYmtyegKJcpkSqOK44ski2aLqYvtTDIMd4y9zQVNTo2
+	YzeOOL057zslPF89mz7bQB5BZEKvQ/tFRUaLR8tJBUo3S2JMhk2mTsFP2lDwUgRTFlQq
+	VUBWWVdzWI9ZrlrOW/FdFl49X2ZgkWG+Yu5kI2VYZo9nxmj9ajRraWyebdFvAnAycWBy
+	jnO7dOh2D3c3eGB5i3q4e+d9F35Jf32AsoHqgyOEXYWahtiIF4lZip6L5I0tjniPxpEY
+	km+TzJUwlpuYDpmJmwyclZ4nn8ehaaMMpLKmWqgEqbCrX60QrsOweLIvs+i1p7dpuS26
+	8ry6voLATMIXw+PFsMd8yUrLGczQzlXP49F60x7UztaL2FPaJtwB3eLfxuGr44/lcudT
+	6Rvqn+wn7bHvPvDO8l/z7/WA9w/4mfoe+5/9Gv6P//8AAAAXAEEAcACfAM8A/wEyAWYB
+	mQHFAfMCIgJSAoQCtwLsAyEDWAOQA8kEAwQ+BHoEtwT1BTUFdgW9BgUGTwabBuoHOweQ
+	B+gIRAikCQgJcAncCkwKwAs3C7oMQgzMDVkN6g5+DxUPsBBPEPERlhI+EukTnRRTFQ0V
+	yhaJF0wYEhjaGaUachtBHBMc6x3GHqQfhiBrIVQiQSMyJCclHyYbJxooICkrKjkrSyxh
+	LXwumi+9MOQyDjM8NHI1rjbvODU5gTrSPCg9hD7mQExBt0MrRKRGIUejSSlKtUxETdhP
+	cFEMUrBUW1YJV71Zdls0XPhewGCNYl5kNmYMZ9lpmmtJbOlueW/8cXRy5XRQdbN3EXhy
+	edR7Onyhfgt/eIDngliDzIVChrqINIm2iz2MyY5Zj+uRfpMRlKKWL5e5mT6av5w8nbaf
+	BaBMoZWi36QqpXemxagVqWaquqwOrWSuvLAVsXCyy7QotYq27bhRube7HryGve6/V8DB
+	wivDlcT/xmrH1MlAyqvMFs1zzsrQG9Fo0qzT6tUj1lfXgtio2cra5dv83RDeH98r4DXh
+	OuI+40DkQOU+5jrnN+gx6SrqIusO6+nsue137jXu7O+l8FnxCvG88mbzEPO49Fz1APWi
+	9kL24vd/+Bz4uflV+fD6jPsn+8L8Xvz4/ZP+L/7J/2T//wAAc2YzMgAAAAAAAQxCAAAF
+	3v//8yYAAAeSAAD9kf//+6L///2jAAAD3AAAwGxtbW9kAAAAAAAABhAAAJyjAAAAAAAA
+	AAAAAAAAAAAAAAAAAAAAAAAA
+	</data>
+	<key>ReadOnly</key>
+	<string>NO</string>
+	<key>RowAlign</key>
+	<integer>1</integer>
+	<key>RowSpacing</key>
+	<real>36</real>
+	<key>SheetTitle</key>
+	<string>Canvas 1</string>
+	<key>SmartAlignmentGuidesActive</key>
+	<string>YES</string>
+	<key>SmartDistanceGuidesActive</key>
+	<string>YES</string>
+	<key>UniqueID</key>
+	<integer>1</integer>
+	<key>UseEntirePage</key>
+	<false/>
+	<key>VPages</key>
+	<integer>1</integer>
+	<key>WindowInfo</key>
+	<dict>
+		<key>CurrentSheet</key>
+		<integer>0</integer>
+		<key>ExpandedCanvases</key>
+		<array>
+			<dict>
+				<key>name</key>
+				<string>Canvas 1</string>
+			</dict>
+		</array>
+		<key>Frame</key>
+		<string>{{622, 143}, {490, 714}}</string>
+		<key>ListView</key>
+		<true/>
+		<key>OutlineWidth</key>
+		<integer>142</integer>
+		<key>RightSidebar</key>
+		<false/>
+		<key>ShowRuler</key>
+		<true/>
+		<key>Sidebar</key>
+		<true/>
+		<key>SidebarWidth</key>
+		<integer>120</integer>
+		<key>VisibleRegion</key>
+		<string>{{0, 0}, {341, 546}}</string>
+		<key>Zoom</key>
+		<real>1</real>
+		<key>ZoomValues</key>
+		<array>
+			<array>
+				<string>Canvas 1</string>
+				<real>1</real>
+				<real>1</real>
+			</array>
+		</array>
+	</dict>
+	<key>saveQuickLookFiles</key>
+	<string>YES</string>
+</dict>
+</plist>
 Welcome to Eyes's documentation!
 ================================
 
-Contents:
+* source: http://bitbucket.org/heckj/eyes
+* mailing list: http://groups.google.com/group/eyes-monitoring
 
 .. toctree::
    :maxdepth: 2

docs/intro/faq.rst

 --------------------------------------------------------------
 
 If this FAQ doesn't contain an answer to your question, you might want to
-try the `eyes-users mailing list`_. Feel free to ask any question related
-to installing, using, or debugging Eyes.
-
-If you prefer IRC, the `#eyes IRC channel`_ on the Freenode IRC network is an
-active community of helpful individuals who may be able to solve your problem.
-
-.. _`eyes-users mailing list`: http://groups.google.com/group/eyes-users
-.. _`#eyes IRC channel`: irc://irc.freenode.net/eyes
+try the eyes-monitoring mailing list at http://groups.google.com/group/eyes-monitoring.
+Feel free to ask any question related to installing, using, or debugging Eyes.
 
 How do I get started?
 ---------------------

eyeswebapp/__init__.py

 """
 This is the documentation string for eyeswebapp.
-"""
+"""

eyeswebapp/api/handlers.py

 import re
 #from eyeswebapp.core.models import Datastore
 
+
 class MonitorHandler(BaseHandler):
     """
     Handler entrypoint for monitors - currently without Authentication
     # fields = ('title', ...)
     # exclude = ('id', re.compile(r'^private_'))
     model = Monitor
-    
+
     #@throttle(5, 10*60) # allow 5 times in 10 minutes
     def read(self, request, monitor_id=None):
         """ reads all monitors pending, or a specific monitor if provided"""
             return mon
         except ObjectDoesNotExist:
             return rc.NOT_FOUND
-        
+
+
 class MonitorResultHandler(BaseHandler):
     """
     Handler entrypoint for processing results of a monitor invocation - JSON structure
     """
     allowed_methods = ('POST', )
     #fields = ('monitor_id', 'json_resultset')
+
     @require_mime('json')
     def create(self, request, monitor_id):
         """ processes the results of a monitor being invoked - storing the resulting data"""
             return rc.NOT_FOUND
         if request.content_type == 'application/json':
             data = request.data
-            was_stored = mon.store_dict_results(data, debug=True)
+            was_stored = mon.store_dict_results(data, debug=False)
             if (was_stored):
                 return rc.CREATED
         return rc.BAD_REQUEST

eyeswebapp/api/models.py

 from django.db import models
-""" this apparently has to exist in order for Django to think this is an application and trigger testing..."""
+""" this apparently has to exist in order for Django to think this is an application and trigger testing..."""

eyeswebapp/api/tests/__init__.py

-from monitor import *
+from monitor import *

eyeswebapp/api/tests/monitor.py

 from eyeswebapp.util.monitor import ArgSet
 import simplejson
 
+
 class MonitorTests(TestCase):
     """ test cases for the Monitor API """
 
         self.failUnlessEqual(response.status_code, 301)
         response = self.client.get('/api/')
         self.failUnlessEqual(response.status_code, 200)
-    
+
     def test_monitor_list_api(self):
         """ invoking /api/monitor/ to get a list of pending monitors... """
         response = self.client.get('/api/monitor')
         self.failUnlessEqual(response.status_code, 301)
         response = self.client.get('/api/monitor/')
         self.failUnlessEqual(response.status_code, 200)
-        
+
         objresult = simplejson.loads(response.content)
-        self.assertEquals(type(objresult), type([])) # is a list
+        self.assertEquals(type(objresult), type([]))  # is a list
         self.assertTrue(len(objresult) > 0)
-    #
+
     def test_monitor_detail_api(self):
         """ /api/monitor/ piston.resource.<piston.resource.Resource object at 0x101bd1550> """
         response = self.client.get('/api/monitor/1')
         self.failUnlessEqual(response.status_code, 200)
 
         objresult = simplejson.loads(response.content)
-        self.assertEquals(type(objresult), type({})) # is a dictionary
+        self.assertEquals(type(objresult), type({}))  # is a dictionary
         for element in self.expected_keys:
             self.assertTrue(element in objresult.keys(), "%s not in returned keys" % element)
 
         """ tests expect a 405 (not allowed) from a GET response to an existing /monitor/[ID]/store/ call """
         response = self.client.get('/api/monitor/1/store/')
         self.failUnlessEqual(response.status_code, 405)
-    
+
     def test_quick_check_mock_data(self):
         """testing that mock data is valid"""
         from util.monitor import validate_poller_results
         mock_nagios_json_data = mock_nagios_results()
         validated = validate_poller_results(mock_nagios_json_data)
         self.assertTrue(validated)
-    
+
     def test_post_ping_data(self):
         """ tests posting a PING monitor result as JSON data """
         mock_nagios_json_data = mock_nagios_results()
-        response = self.client.post('/api/monitor/1/store/', content_type='application/json', data = mock_nagios_json_data )
+        response = self.client.post('/api/monitor/1/store/', content_type='application/json', data=mock_nagios_json_data)
         self.failUnlessEqual(response.status_code, 201)
 
     def test_post_ping_data_bad_monitor(self):
         """ tests failure posting a monitor result as JSON data (non-exist monitor)"""
         mock_nagios_json_data = mock_nagios_results()
-        response = self.client.post('/api/monitor/9999/store/', content_type='application/json', data = mock_nagios_json_data )
+        response = self.client.post('/api/monitor/9999/store/', content_type='application/json', data=mock_nagios_json_data)
         self.failUnlessEqual(response.status_code, 404)
-    
+
     def test_flawed_data_post(self):
         """ testing posting of flawed result dictionary"""
-        bad_mock_data = {'command': '/opt/local/libexec/nagios/check_ping -H localhost -w 1,99% -c 1,99%', } 
-        response = self.client.post('/api/monitor/1/store/', content_type='application/json', data = bad_mock_data )
+        bad_mock_data = {'command': '/opt/local/libexec/nagios/check_ping -H localhost -w 1,99% -c 1,99%', }
+        response = self.client.post('/api/monitor/1/store/', content_type='application/json', data=bad_mock_data)
         self.failUnlessEqual(response.status_code, 400)
-    
+
     def test_non_json_post_to_store_monitor_result(self):
         """ testing flawed posting mechanism
         should fail with Bad Request"""
         response = self.client.post('/api/monitor/1/store/', {'name': 'fred', 'passwd': 'secret'})
         self.failUnlessEqual(response.status_code, 400)
-        

eyeswebapp/api/urls.py

 from django.conf.urls.defaults import *
 from piston.resource import Resource
 from piston.doc import documentation_view
-from eyeswebapp.api.handlers import MonitorHandler, MonitorResultHandler#, DatastoreHandler
+from eyeswebapp.api.handlers import MonitorHandler, MonitorResultHandler
 
 monitor_handler = Resource(MonitorHandler)
 monitor_result_handler = Resource(MonitorResultHandler)
 #datastore_handler = Resource(DatastoreHandler)
 
 urlpatterns = patterns('',
-    url(r'^monitor/(?P<monitor_id>\d+)/$', monitor_handler, { 'emitter_format': 'json' }),
-    url(r'^monitor/$', monitor_handler, { 'emitter_format': 'json' }),
+    url(r'^monitor/(?P<monitor_id>\d+)/$', monitor_handler, {'emitter_format': 'json'}),
+    url(r'^monitor/$', monitor_handler, {'emitter_format': 'json'}),
 
     # for processing the monitor result JSON structure and storing into data stores
-    url(r'^monitor/(?P<monitor_id>\d+)/store/$', monitor_result_handler, { 'emitter_format': 'json' }),
-    
+    url(r'^monitor/(?P<monitor_id>\d+)/store/$', monitor_result_handler, {'emitter_format': 'json'}),
+
     #url(r'^datastore/(?P<monitor_id>\d+)/(?P<datastore_name>\w+)$', datastore_handler, { 'emitter_format': 'json' }),
     # automatically generated documentation
     url(r'^$', documentation_view)
-)
+)

eyeswebapp/context_processors.py

 """ common template enhancing context processors.
 
-A context processor is a method that takes an HTTP request object and returns a 
+A context processor is a method that takes an HTTP request object and returns a
 dictionary. The dictionaries of all processors defined in settings
 (TEMPLATE_CONTEXT_PROCESSORS) get merged together and used for template
 processing.
 """
 from django.conf import settings
 
+
 def common(request):
     """ This is a project specific context processor that injects various
     interesting values into the Context object, for use by our templates."""
-        
+
     ctx = {}
     ctx['MEDIA_URL'] = settings.MEDIA_URL
 

eyeswebapp/core/admin.py

 from core.models import Monitor
 from core.models import Datastore
+from core.models import Host
 from django.contrib import admin
 
+admin.site.register(Host)
 admin.site.register(Monitor)
-admin.site.register(Datastore)
+admin.site.register(Datastore)

eyeswebapp/core/migrations/0001_initial.py

 from django.db import models
 from core.models import Monitor, Datastore
 
+
 class Migration:
     # pylint: disable=E1101
     def forwards(self, orm):
-        
+
         # Adding model 'Datastore'
         db.create_table('core_datastore', (
             ('id', orm['core.Datastore:id']),
             ('step', orm['core.Datastore:step']),
         ))
         db.send_create_signal('core', ['Datastore'])
-        
+
         # Adding model 'Monitor'
         db.create_table('core_monitor', (
             ('id', orm['core.Monitor:id']),
             ('alerting', orm['core.Monitor:alerting']),
         ))
         db.send_create_signal('core', ['Monitor'])
-        
-    
-    
+
     def backwards(self, orm):
-        
         # Deleting model 'Datastore'
         db.delete_table('core_datastore')
-        
+
         # Deleting model 'Monitor'
         db.delete_table('core_monitor')
-        
-    
-    
+
     models = {
         'core.datastore': {
             'dstype': ('django.db.models.fields.CharField', [], {'default': "'GAUGE'", 'max_length': '8'}),
             'timeout': ('django.db.models.fields.IntegerField', [], {'default': '5'})
         }
     }
-    
+
     complete_apps = ['core']

eyeswebapp/core/migrations/0002_removehostip.py

 from django.db import models
 from core.models import Monitor, Datastore
 
+
 class Migration:
     # pylint: disable=E1101
     def forwards(self, orm):
-        
+
         # Deleting field 'Monitor.hostip'
         db.delete_column('core_monitor', 'hostip')
-        
-    
-    
+
     def backwards(self, orm):
-        
+
         # Adding field 'Monitor.hostip'
         db.add_column('core_monitor', 'hostip', orm['core.monitor:hostip'])
-        
-    
-    
+
     models = {
         'core.datastore': {
             'dstype': ('django.db.models.fields.CharField', [], {'default': "'GAUGE'", 'max_length': '8'}),
             'timeout': ('django.db.models.fields.IntegerField', [], {'default': '5'})
         }
     }
-    
+
     complete_apps = ['core']

eyeswebapp/core/migrations/0003_move_host_to_new_model.py

 from south.v2 import SchemaMigration
 from django.db import models
 
+
 class Migration(SchemaMigration):
     # pylint: disable=E1101
     def forwards(self, orm):
-        
+
         # Adding model 'Host'
         db.create_table('core_host', (
             ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
         # Adding field 'Monitor.host'
         db.add_column('core_monitor', 'host', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['core.Host'], null=True), keep_default=False)
 
+    def backwards(self, orm):
 
-    def backwards(self, orm):
-        
         # Deleting model 'Host'
         db.delete_table('core_host')
 
         # Deleting field 'Monitor.host'
         db.delete_column('core_monitor', 'host_id')
 
-
     models = {
         'core.datastore': {
             'Meta': {'object_name': 'Datastore'},

eyeswebapp/core/migrations/0004_remove_timeout_from_model.py

 from south.v2 import SchemaMigration
 from django.db import models
 
+
 class Migration(SchemaMigration):
     # pylint: disable=E1101
     def forwards(self, orm):
-        
+
         # Deleting field 'Monitor.timeout'
         db.delete_column('core_monitor', 'timeout')
 
+    def backwards(self, orm):
 
-    def backwards(self, orm):
-        
         # Adding field 'Monitor.timeout'
         db.add_column('core_monitor', 'timeout', self.gf('django.db.models.fields.IntegerField')(default=5), keep_default=False)
 
-
     models = {
         'core.datastore': {
             'Meta': {'object_name': 'Datastore'},

eyeswebapp/core/migrations/0005_rename_kind_to_plugin_name.py

 from south.v2 import SchemaMigration
 from django.db import models
 
+
 class Migration(SchemaMigration):
     # pylint: disable=E1101
     def forwards(self, orm):
-        
+
         # Deleting field 'Monitor.kind'
         db.delete_column('core_monitor', 'kind')
 
         # Adding field 'Monitor.plugin_name'
         db.add_column('core_monitor', 'plugin_name', self.gf('django.db.models.fields.CharField')(default='check_ping', max_length=250), keep_default=False)
 
+    def backwards(self, orm):
 
-    def backwards(self, orm):
-        
         # Adding field 'Monitor.kind'
         db.add_column('core_monitor', 'kind', self.gf('django.db.models.fields.CharField')(default='check_ping', max_length=250), keep_default=False)
 
         # Deleting field 'Monitor.plugin_name'
         db.delete_column('core_monitor', 'plugin_name')
 
-
     models = {
         'core.datastore': {
             'Meta': {'object_name': 'Datastore'},

eyeswebapp/core/migrations/0006_add_passive_to_monitor_model.py

 from south.v2 import SchemaMigration
 from django.db import models
 
+
 class Migration(SchemaMigration):
     # pylint: disable=E1101
     def forwards(self, orm):
-        
+
         # Adding field 'Monitor.passive'
         db.add_column('core_monitor', 'passive', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False)
 
+    def backwards(self, orm):
 
-    def backwards(self, orm):
-        
         # Deleting field 'Monitor.passive'
         db.delete_column('core_monitor', 'passive')
 
-
     models = {
         'core.datastore': {
             'Meta': {'ordering': "['name']", 'object_name': 'Datastore'},

eyeswebapp/core/migrations/0007_set_basic_passive_data.py

 from south.v2 import DataMigration
 from django.db import models
 
+
 class Migration(DataMigration):
     # pylint: disable=E1101
     def forwards(self, orm):
     def backwards(self, orm):
         "Write your backwards methods here."
 
-
     models = {
         'core.datastore': {
             'Meta': {'ordering': "['name']", 'object_name': 'Datastore'},

eyeswebapp/core/migrations/0008_add_tagging_to_host_and_monitor.py

+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+
+        # Adding field 'Monitor.tags_string'
+        db.add_column('core_monitor', 'tags_string', self.gf('tagging.fields.TagField')(default=''), keep_default=False)
+
+        # Adding index on 'Monitor', fields ['passive']
+        db.create_index('core_monitor', ['passive'])
+
+        # Adding index on 'Monitor', fields ['nextupdate']
+        db.create_index('core_monitor', ['nextupdate'])
+
+        # Adding field 'Host.tags_string'
+        db.add_column('core_host', 'tags_string', self.gf('tagging.fields.TagField')(default=''), keep_default=False)
+
+    def backwards(self, orm):
+
+        # Removing index on 'Monitor', fields ['nextupdate']
+        db.delete_index('core_monitor', ['nextupdate'])
+
+        # Removing index on 'Monitor', fields ['passive']
+        db.delete_index('core_monitor', ['passive'])
+
+        # Deleting field 'Monitor.tags_string'
+        db.delete_column('core_monitor', 'tags_string')
+
+        # Deleting field 'Host.tags_string'
+        db.delete_column('core_host', 'tags_string')
+
+    models = {
+        'core.datastore': {
+            'Meta': {'ordering': "['name']", 'object_name': 'Datastore'},
+            'dstype': ('django.db.models.fields.CharField', [], {'default': "'GAUGE'", 'max_length': '8'}),
+            'heartbeat': ('django.db.models.fields.IntegerField', [], {'default': '600'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'monitor': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.Monitor']"}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '18'}),
+            'step': ('django.db.models.fields.IntegerField', [], {'default': '300'})
+        },
+        'core.host': {
+            'Meta': {'ordering': "['hostname']", 'object_name': 'Host'},
+            'hostname': ('django.db.models.fields.CharField', [], {'default': "'localhost'", 'max_length': '250'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'tags_string': ('tagging.fields.TagField', [], {})
+        },
+        'core.monitor': {
+            'Meta': {'object_name': 'Monitor'},