Merge remote branch 'cros/upstream' into tempbranch2

Merged to trunk@4816.

BUG=
TEST=we will build a new autotest server instance, and keep cautotest running and then later do a cname switch.

Review URL: http://codereview.chromium.org/3511003

Change-Id: Iee5f52f45f28f84927d6c6f9a74edc370d40288a
diff --git a/scheduler/monitor_db.py b/scheduler/monitor_db.py
index 5b7e593..2d878bb 100755
--- a/scheduler/monitor_db.py
+++ b/scheduler/monitor_db.py
@@ -7,7 +7,7 @@
 
 import common
 import datetime, errno, optparse, os, pwd, Queue, re, shutil, signal
-import smtplib, socket, stat, subprocess, sys, tempfile, time, traceback
+import smtplib, socket, stat, subprocess, sys, tempfile, time, traceback, urllib
 import itertools, logging, weakref, gc
 
 import MySQLdb
@@ -1823,6 +1823,7 @@
         keyval_path = os.path.join(self._working_directory(), 'host_keyvals',
                                    host.hostname)
         platform, all_labels = host.platform_and_labels()
+        all_labels = [ urllib.quote(label) for label in all_labels ]
         keyval_dict = dict(platform=platform, labels=','.join(all_labels))
         self._write_keyvals_before_job_helper(keyval_dict, keyval_path)