support submiting nano images to LAVA

This adds logic that will execute LAVA testing for each nano
image that we have support for in the validation lab.
diff --git a/lava-submit.py b/lava-submit.py
new file mode 100755
index 0000000..783bc97
--- /dev/null
+++ b/lava-submit.py
@@ -0,0 +1,53 @@
+#!/usr/bin/python
+
+import argparse
+import json
+import os
+import re
+import string
+import sys
+import xmlrpclib
+
+SERVER='validation.linaro.org/lava-server/RPC2/'
+JOB_BASE='http://validation.linaro.org/lava-server/scheduler/job'
+
+def get_job(jobname, device_type, img_url):
+
+    buff = None
+    with open('lava-template.json') as f:
+        buff = f.read()
+        tmpl = string.Template(buff)
+        buff = tmpl.substitute(jobname=jobname,device_type=device_type,img_url=img_url)
+    return buff
+
+def obfuscate_credentials(s):
+    return re.sub(r"([^ ]:).+?(@)", r"\1xxx\2", s)
+
+def main():
+    p = argparse.ArgumentParser(description='submits a benchmark job to lava')
+    p.add_argument('-j', dest='job_name', required=True,
+                   help='name of job for LAVA')
+    p.add_argument('-u', dest='img_url', required=True,
+                   help='URL of image')
+    p.add_argument('-d', dest='device_type', required=True,
+                   help='The device type to execute on. ie "panda"')
+    args = p.parse_args()
+
+    job = get_job(args.job_name, args.device_type, args.img_url)
+
+    user = os.environ.get('LAVA_USER')
+    token = os.environ.get('LAVA_TOKEN')
+    if user is None or token is None:
+        print "Error LAVA_USER and LAVA_TOKEN environment variables are required"
+        return
+    server = xmlrpclib.ServerProxy("https://%s:%s@%s" % (user, token, SERVER))
+    try:
+        lava_job_id = server.scheduler.submit_job(job)
+        print "lava job: %s/%d" % (JOB_BASE,lava_job_id)
+    except xmlrpclib.ProtocolError, e:
+        print "Error making a LAVA request:", obfuscate_credentials(str(e))
+        sys.exit(1)
+
+if __name__ == "__main__":
+    main()
+