Skip to content

Commit e3368b3

Browse files
author
Slavek Kabrda
authored
Add device_label tag in addition to label tag. (#8306)
This makes labels a bit more consistent with agent's builtin io check, which uses device_label.
1 parent 7212cbf commit e3368b3

2 files changed

Lines changed: 11 additions & 7 deletions

File tree

disk/datadog_checks/disk/disk.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ def check(self, instance):
152152
tags.extend(device_tags)
153153

154154
if self.devices_label.get(device_name):
155-
tags.append(self.devices_label.get(device_name))
155+
tags.extend(self.devices_label.get(device_name))
156156

157157
# legacy check names c: vs psutil name C:\\
158158
if Platform.is_win32():
@@ -316,7 +316,7 @@ def collect_latency_metrics(self):
316316
metric_tags.append('device:{}'.format(disk_name))
317317
metric_tags.append('device_name:{}'.format(_base_device_name(disk_name)))
318318
if self.devices_label.get(disk_name):
319-
metric_tags.append(self.devices_label.get(disk_name))
319+
metric_tags.extend(self.devices_label.get(disk_name))
320320
self.rate(self.METRIC_DISK.format('read_time_pct'), read_time_pct, tags=metric_tags)
321321
self.rate(self.METRIC_DISK.format('write_time_pct'), write_time_pct, tags=metric_tags)
322322
except AttributeError as e:
@@ -422,7 +422,7 @@ def _get_devices_label_from_blkid(self):
422422
# /dev/sda1: LABEL="MYLABEL" UUID="5eea373d-db36-4ce2-8c71-12ce544e8559" TYPE="ext4"
423423
labels = self._blkid_label_re.findall(d[1])
424424
if labels:
425-
devices_label[d[0]] = 'label:{}'.format(labels[0])
425+
devices_label[d[0]] = ['label:{}'.format(labels[0]), 'device_label:{}'.format(labels[0])]
426426

427427
except SubprocessOutputEmptyError:
428428
self.log.debug("Couldn't use blkid to have device labels")
@@ -446,7 +446,7 @@ def _get_devices_label_from_blkid_cache(self):
446446
device = root.text
447447
label = root.attrib.get('LABEL')
448448
if label and device:
449-
devices_label[device] = 'label:{}'.format(label)
449+
devices_label[device] = ['label:{}'.format(label), 'device_label:{}'.format(label)]
450450
except ET.ParseError as e:
451451
self.log.warning(
452452
'Failed to parse line %s because of %s - skipping the line (some labels might be missing)', line, e

disk/tests/test_unit.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ def test_device_tagging(aggregator, gauge_metrics, rate_metrics):
127127
with mock.patch('datadog_checks.disk.disk.Disk._get_devices_label'):
128128
# _get_devices_label is only called on linux, so devices_label is manually filled
129129
# to make the test run on everything
130-
c.devices_label = {DEFAULT_DEVICE_NAME: 'label:mylab'}
130+
c.devices_label = {DEFAULT_DEVICE_NAME: ['label:mylab', 'device_label:mylab']}
131131
c.check(instance)
132132

133133
# Assert metrics
@@ -138,6 +138,7 @@ def test_device_tagging(aggregator, gauge_metrics, rate_metrics):
138138
'device_name:{}'.format(DEFAULT_DEVICE_BASE_NAME),
139139
'optional:tags1',
140140
'label:mylab',
141+
'device_label:mylab',
141142
]
142143

143144
for name, value in iteritems(gauge_metrics):
@@ -152,6 +153,7 @@ def test_device_tagging(aggregator, gauge_metrics, rate_metrics):
152153
'device_name:{}'.format(DEFAULT_DEVICE_BASE_NAME),
153154
'optional:tags1',
154155
'label:mylab',
156+
'device_label:mylab',
155157
],
156158
)
157159

@@ -167,7 +169,7 @@ def test_get_devices_label():
167169
__name__='get_subprocess_output',
168170
):
169171
labels = c._get_devices_label()
170-
assert labels.get("/dev/mapper/vagrant--vg-root") == "label:DATA"
172+
assert labels.get("/dev/mapper/vagrant--vg-root") == ["label:DATA", "device_label:DATA"]
171173

172174

173175
@pytest.mark.usefixtures('psutil_mocks')
@@ -199,7 +201,9 @@ def test_labels_from_blkid_cache_file(aggregator, instance_blkid_cache_file, gau
199201
c = Disk('disk', {}, [instance_blkid_cache_file])
200202
c.check(instance_blkid_cache_file)
201203
for metric in chain(gauge_metrics, rate_metrics):
202-
aggregator.assert_metric(metric, tags=['device:/dev/sda1', 'device_name:sda1', 'label:MYLABEL'])
204+
aggregator.assert_metric(
205+
metric, tags=['device:/dev/sda1', 'device_name:sda1', 'label:MYLABEL', 'device_label:MYLABEL']
206+
)
203207

204208

205209
@pytest.mark.skipif(not Platform.is_linux(), reason='disk labels are only available on Linux')

0 commit comments

Comments
 (0)