Skip to content

check_drivesize: improve detection of drives out of the drive argument#410

Open
inqrphl wants to merge 10 commits into
mainfrom
check-drivesize-windows-improve-drive-detection-in-custom-paths
Open

check_drivesize: improve detection of drives out of the drive argument#410
inqrphl wants to merge 10 commits into
mainfrom
check-drivesize-windows-improve-drive-detection-in-custom-paths

Conversation

@inqrphl

@inqrphl inqrphl commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Detect and work with lowercase/uppercase , with or without semicolon, with or without slashes combinations of drive:

c
c:
c:
c:/
C
C:
C:
C:/

The previous version did not realize when C:\ was directly a drive, and tried to open it and match it to an existing drive.

This worked if it was a normal drive, but failed if it was a network mounted drive, the commit realizes that its a drive and directly uses stats provided by gopsutil. Otherwise it would try opening a handle to the drive root and fail, saying it was not mounted.

Add tests that check both the status line and perfdata labels using regex on all 8 combinations.

@sni check if the perfdata labels in tests look good.

inqrphl and others added 7 commits July 14, 2026 14:11
…t that user can type

add tests that check both the status line and perdata labels using regex
…into check-drivesize-windows-improve-drive-detection-in-custom-paths
…om-paths' of https://github.com/ConSol-Monitoring/snclient into check-drivesize-windows-improve-drive-detection-in-custom-paths
…indows and improve functions overall

output line always uses the format 'C:\' if its a drive. this includes uppercase conversion, adding colon if necessary, adding backslashes if necessarry, converting slashes to backslashes and compacting slashes

perfdata labels append colon if necessary, change existing slashes to backslashes and compact them.

perfdata labels are not kept the same due to compatibility reasons

these are generated in separate functions now called cleanupPathString and getPerflabelPrefix

improvements:

windows CheckDrivesize.setDrives , CheckDrivesize.setVolumes , CheckDrivesize.setShares all try to populate the entry data for 'id' , 'drive' , 'drive_or_id' , 'drive_or_name' , 'drive_or_name_or_id'

improved some error logs, they were not easily understandable if format strings were empty

revise the windows volume discovery, it was causing check to fail due to RDP shared folder
…dows-improve-drive-detection-in-custom-paths
@inqrphl
inqrphl marked this pull request as draft July 15, 2026 14:56
Ahmet Oeztuerk and others added 3 commits July 15, 2026 17:27
fix extra space when loading 'WNetGetLastErrorA ' library, there was a trailing space. Likely never encountered before

add windows build tag to check_drivesize_windows_test.go

fix wrong trace messages in cleanupPathString

make discovery functions use consitent naming: now they all use requiredDrives

fix other comments
…once discovered in drive check and once discovered in volume check
…platforms if drive itself is literally "/"
@inqrphl

inqrphl commented Jul 15, 2026

Copy link
Copy Markdown
Contributor Author

Fixed an issue about RDP shared folders in volume discovery, I guess I was the first one to encounter it.

More fixes made using AI to review files:

stop cutting trailing slash in condition keywords on non-windows platforms if drive itself is literally "/"

fix extra space when loading 'WNetGetLastErrorA ' function out of library, there was a trailing space. Likely never encountered before

add windows build tag to check_drivesize_windows_test.go

fix wrong trace messages in cleanupPathString

make discovery functions use consitent naming: now they all use requiredDrives

fix other comments

@inqrphl inqrphl left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good,

the folder=X argument output is not completely checked in terms of status line and perfdata labels, but that is not needed right now.

@inqrphl
inqrphl marked this pull request as ready for review July 16, 2026 11:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant