summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Illfelder <illfelder@google.com>2016-07-08 15:01:28 -0700
committerMax Illfelder <illfelder@google.com>2016-07-08 15:01:28 -0700
commitf44cdfbee7ddcfe4c71730550947c3b2bd17d4b8 (patch)
treea3105484cc1f46cefc5986d7c77138279b1be9f3
parent97ec9d47da88ab0d93cc3fdf3b8f6a86b03f1142 (diff)
parent1513426cae523e2fae8424fa9f41f1230d237822 (diff)
downloadgoogle-compute-image-packages-f44cdfbee7ddcfe4c71730550947c3b2bd17d4b8.tar.gz
Merge branch 'development'
-rw-r--r--google_compute_engine/compat.py14
-rw-r--r--google_compute_engine/logger.py4
-rw-r--r--google_compute_engine/metadata_watcher.py5
-rw-r--r--google_compute_engine/tests/logger_test.py11
-rw-r--r--google_compute_engine/tests/metadata_watcher_test.py13
-rwxr-xr-xsetup.py2
6 files changed, 30 insertions, 19 deletions
diff --git a/google_compute_engine/compat.py b/google_compute_engine/compat.py
index 824724a..036dfbc 100644
--- a/google_compute_engine/compat.py
+++ b/google_compute_engine/compat.py
@@ -15,6 +15,7 @@
"""A module for resolving compatibility issues between Python 2 and Python 3."""
+import logging
import sys
if sys.version_info >= (3,):
@@ -33,3 +34,16 @@ else:
import urllib as urlretrieve
import urllib2 as urlrequest
import urllib2 as urlerror
+
+if sys.version_info < (2,7,):
+ class NullHandler(logging.Handler):
+ def emit(self, record):
+ pass
+
+ def handle(self, record):
+ pass
+
+ def createLock(self):
+ pass
+
+ logging.NullHandler = NullHandler
diff --git a/google_compute_engine/logger.py b/google_compute_engine/logger.py
index a8e49a3..a075eae 100644
--- a/google_compute_engine/logger.py
+++ b/google_compute_engine/logger.py
@@ -15,8 +15,7 @@
"""A library for logging text to SysLog and the serial console."""
-import logging
-import logging.handlers
+from google_compute_engine.compat import logging
def Logger(name, debug=False, facility=None):
@@ -32,6 +31,7 @@ def Logger(name, debug=False, facility=None):
"""
logger = logging.getLogger(name)
logger.handlers = []
+ logger.addHandler(logging.NullHandler())
logger.propagate = False
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter(name + ': %(levelname)s %(message)s')
diff --git a/google_compute_engine/metadata_watcher.py b/google_compute_engine/metadata_watcher.py
index e23c60a..c6b035e 100644
--- a/google_compute_engine/metadata_watcher.py
+++ b/google_compute_engine/metadata_watcher.py
@@ -157,12 +157,11 @@ class MetadataWatcher(object):
return self._GetMetadataUpdate(
metadata_key=metadata_key, recursive=recursive, wait=wait)
except (httpclient.HTTPException, socket.error, urlerror.URLError) as e:
- if isinstance(e, type(exception)) and e.args == exception.args:
+ if isinstance(e, type(exception)):
continue
else:
exception = e
- message = 'GET request error retrieving metadata. %s.'
- self.logger.exception(message, exception)
+ self.logger.exception('GET request error retrieving metadata.')
def WatchMetadata(self, handler, metadata_key='', recursive=True):
"""Watch for changes to the contents of the metadata server.
diff --git a/google_compute_engine/tests/logger_test.py b/google_compute_engine/tests/logger_test.py
index 6fb7d4a..a0b6100 100644
--- a/google_compute_engine/tests/logger_test.py
+++ b/google_compute_engine/tests/logger_test.py
@@ -24,7 +24,9 @@ class LoggerTest(unittest.TestCase):
@mock.patch('google_compute_engine.logger.logging.handlers.SysLogHandler')
@mock.patch('google_compute_engine.logger.logging.StreamHandler')
- def testLogger(self, mock_stream, mock_syslog):
+ @mock.patch('google_compute_engine.logger.logging.NullHandler')
+ def testLogger(self, mock_null, mock_stream, mock_syslog):
+ mock_null.return_value = mock_null
mock_stream.return_value = mock_stream
mock_syslog.return_value = mock_syslog
name = 'test'
@@ -32,7 +34,7 @@ class LoggerTest(unittest.TestCase):
# Verify basic logger setup.
named_logger = logger.Logger(name=name, debug=True)
mock_stream.setLevel.assert_called_once_with(logger.logging.DEBUG)
- self.assertEqual(named_logger.handlers, [mock_stream])
+ self.assertEqual(named_logger.handlers, [mock_null, mock_stream])
# Verify logger setup with a facility.
address = '/dev/log'
@@ -40,11 +42,12 @@ class LoggerTest(unittest.TestCase):
named_logger = logger.Logger(name=name, debug=True, facility=facility)
mock_syslog.assert_called_once_with(address=address, facility=facility)
mock_syslog.setLevel.assert_called_once_with(logger.logging.INFO)
- self.assertEqual(named_logger.handlers, [mock_stream, mock_syslog])
+ self.assertEqual(
+ named_logger.handlers, [mock_null, mock_stream, mock_syslog])
# Verify the handlers are reset during repeated calls.
named_logger = logger.Logger(name=name, debug=False)
- self.assertEqual(named_logger.handlers, [])
+ self.assertEqual(named_logger.handlers, [mock_null])
if __name__ == '__main__':
diff --git a/google_compute_engine/tests/metadata_watcher_test.py b/google_compute_engine/tests/metadata_watcher_test.py
index d661517..7692f91 100644
--- a/google_compute_engine/tests/metadata_watcher_test.py
+++ b/google_compute_engine/tests/metadata_watcher_test.py
@@ -207,9 +207,8 @@ class MetadataWatcherTest(unittest.TestCase):
def testHandleMetadataUpdateException(self):
mock_response = mock.Mock()
first = metadata_watcher.socket.timeout()
- second = metadata_watcher.socket.timeout('a')
- third = metadata_watcher.urlerror.URLError('b')
- mock_response.side_effect = [first, second, second, third, {}]
+ second = metadata_watcher.urlerror.URLError('Test')
+ mock_response.side_effect = [first, first, second, {}]
self.mock_watcher._GetMetadataUpdate = mock_response
metadata_key = 'instance/id'
recursive = False
@@ -221,13 +220,9 @@ class MetadataWatcherTest(unittest.TestCase):
{})
expected_calls = [
mock.call(metadata_key=metadata_key, recursive=recursive, wait=wait),
- ] * 5
+ ] * 4
self.assertEqual(mock_response.mock_calls, expected_calls)
- expected_calls = [
- mock.call.exception(mock.ANY, first),
- mock.call.exception(mock.ANY, second),
- mock.call.exception(mock.ANY, third),
- ]
+ expected_calls = [mock.call.exception(mock.ANY)] * 2
self.assertEqual(self.mock_logger.mock_calls, expected_calls)
def testWatchMetadata(self):
diff --git a/setup.py b/setup.py
index d476a25..49e9f9c 100755
--- a/setup.py
+++ b/setup.py
@@ -32,7 +32,7 @@ setuptools.setup(
packages=setuptools.find_packages(),
scripts=glob.glob('scripts/*'),
url='https://github.com/GoogleCloudPlatform/compute-image-packages',
- version='2.1.0',
+ version='2.1.1',
# Entry points create scripts in /usr/bin that call a function.
entry_points={
'console_scripts': [