'port numbers must be unique:'
f' {port} used for {", ".join(sorted(using_port))}'
)
+
+
+def check_debug_level(debug_level: Optional[dict[str, str]]) -> None:
+ """Check the types of the debug_level parameter.
+ NOTE: this is intentionally fairly loose with regards to values in order
+ to retain state and lazily translate values as needed.
+ """
+ if debug_level is None:
+ return
+ if not isinstance(debug_level, dict):
+ raise ValueError(f'invalid debug_level type: {type(debug_level)}')
+ _keys = {'samba', 'ctdb'}
+ for key, value in debug_level.items():
+ if not isinstance(key, str):
+ raise ValueError(f'invalid type in debug_level: {type(key)}')
+ if not isinstance(value, str):
+ raise ValueError(f'invalid type in debug_level: {type(value)}')
+ if key not in _keys:
+ raise ValueError(f'invalid key in debug_level: {key!r}')
+ if not (
+ value.isdigit()
+ or value.upper() in ceph.smb.constants.DEBUG_LEVEL_TERMS
+ ):
+ raise ValueError(f'invalid value in debug_level: {value!r}')