31 lines
1 KiB
Python
31 lines
1 KiB
Python
files = {
|
|
'/usr/local/share/telegraf/smartctl_power_mode': {
|
|
'source': 'telegraf_plugin_power_mode',
|
|
'content_type': 'mako',
|
|
'mode': '0755',
|
|
},
|
|
'/usr/local/share/telegraf/smartctl_errors': {
|
|
'source': 'telegraf_plugin_errors',
|
|
'content_type': 'mako',
|
|
'mode': '0755',
|
|
},
|
|
}
|
|
|
|
previous_action = []
|
|
|
|
for device, conf in node.metadata.get('smartctl').items():
|
|
for option, value in conf.items():
|
|
if option == 'apm':
|
|
action_name = f'smartctl_apm_{device}'
|
|
actions[action_name] = {
|
|
'command': f'smartctl --set apm,{value} "{device}"',
|
|
'unless': f'smartctl --get apm "{device}" --json=c | jq .ata_apm.level | grep -q "^{value}$"',
|
|
'needs': [
|
|
'pkg_apt:smartmontools',
|
|
*previous_action,
|
|
],
|
|
}
|
|
else:
|
|
raise ValueError(f'{node.name}: unkown smartctl option: {option}')
|
|
|
|
previous_action = [f'action:{action_name}']
|