Merge "Use a pipeline for dib stats"

This commit is contained in:
Zuul
2019-02-22 21:07:54 +00:00
committed by Gerrit Code Review
3 changed files with 18 additions and 7 deletions

View File

@@ -294,15 +294,15 @@ Nodepool builder
Number of image uploads to a specific provider in the cloud plus the time in Number of image uploads to a specific provider in the cloud plus the time in
seconds spent to upload the image. seconds spent to upload the image.
.. zuul:stat:: nodepool.builder.dib_image_build.<diskimage_name>.<ext>.rc .. zuul:stat:: nodepool.dib_image_build.<diskimage_name>.<ext>.rc
:type: gauge :type: gauge
Return code of the DIB. Return code of the DIB.
.. zuul:stat:: nodepool.builder.dib_image_build.<diskimage_name>.<ext>.duration .. zuul:stat:: nodepool.dib_image_build.<diskimage_name>.<ext>.duration
:type: timer :type: timer
Time the DIB run took. Time the DIB run took in ms
Nodepool launcher Nodepool launcher
~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~

View File

@@ -854,6 +854,9 @@ class BuildWorker(BaseWorker):
build_data.builder = self._hostname build_data.builder = self._hostname
build_data.username = diskimage.username build_data.username = diskimage.username
if self._statsd:
pipeline = self._statsd.pipeline()
if self._zk.didLoseConnection: if self._zk.didLoseConnection:
self.log.info("ZooKeeper lost while building %s" % diskimage.name) self.log.info("ZooKeeper lost while building %s" % diskimage.name)
self._zk.resetLostFlag() self._zk.resetLostFlag()
@@ -881,16 +884,17 @@ class BuildWorker(BaseWorker):
size = os.stat("%s.%s" % (filename, ext)).st_blocks * 512 size = os.stat("%s.%s" % (filename, ext)).st_blocks * 512
self.log.debug("%s created image %s.%s (size: %d) " % self.log.debug("%s created image %s.%s (size: %d) " %
(diskimage.name, filename, ext, size)) (diskimage.name, filename, ext, size))
self._statsd.gauge(key, size) pipeline.gauge(key, size)
if self._statsd: if self._statsd:
# report result to statsd # report result to statsd
for ext in img_types.split(','): for ext in img_types.split(','):
key_base = 'nodepool.dib_image_build.%s.%s' % ( key_base = 'nodepool.dib_image_build.%s.%s' % (
diskimage.name, ext) diskimage.name, ext)
self._statsd.gauge(key_base + '.rc', rc) pipeline.gauge(key_base + '.rc', rc)
self._statsd.timing(key_base + '.duration', pipeline.timing(key_base + '.duration',
int(build_time * 1000)) int(build_time * 1000))
pipeline.send()
return build_data return build_data

View File

@@ -326,6 +326,8 @@ class TestNodePoolBuilder(tests.DBTestCase):
'0', 'g') '0', 'g')
self.assertReportedStat('nodepool.dib_image_build.' self.assertReportedStat('nodepool.dib_image_build.'
'fake-image.tar.duration', None, 'ms') 'fake-image.tar.duration', None, 'ms')
self.assertReportedStat('nodepool.dib_image_build.'
'fake-image.tar.size', '4096', 'g')
def test_diskimage_build_formats(self): def test_diskimage_build_formats(self):
configfile = self.setup_config('node_diskimage_formats.yaml') configfile = self.setup_config('node_diskimage_formats.yaml')
@@ -336,6 +338,11 @@ class TestNodePoolBuilder(tests.DBTestCase):
self.assertEqual(build_default._formats, ['qcow2']) self.assertEqual(build_default._formats, ['qcow2'])
self.assertEqual(build_vhd._formats, ['vhd']) self.assertEqual(build_vhd._formats, ['vhd'])
self.assertReportedStat('nodepool.dib_image_build.'
'fake-image-default-format.qcow2.size',
'4096', 'g')
self.assertReportedStat('nodepool.dib_image_build.'
'fake-image-vhd.vhd.size', '4096', 'g')
@mock.patch('select.poll') @mock.patch('select.poll')
def test_diskimage_build_timeout(self, mock_poll): def test_diskimage_build_timeout(self, mock_poll):