@@ -258,14 +258,46 @@ def check_dependency_version(handler: CheckResultHandler):
258
258
handler .log_info ('Checking dependency version...' )
259
259
shell = sh .LocalShell ()
260
260
out = shell .get_stdout_or_raise_error (None , 'corosync -v' )
261
- match = re .search (r"version\s+'((\d+)(?:\.\d+)*)'" , out )
262
- if not match or match .group (2 ) != '3' :
261
+ _check_version_range (
262
+ handler ,
263
+ 'Corosync' , (3 ,),
264
+ re .compile (r"version\s+'(\d+(?:\.\d+)*)'" ),
265
+ shell .get_stdout_or_raise_error (None , 'corosync -v' ),
266
+ )
267
+ _check_version_range (
268
+ handler ,
269
+ 'Pacemaker' , (3 ,),
270
+ re .compile (r"^Pacemaker\s+(\d+(?:\.\d+)*)" ),
271
+ shell .get_stdout_or_raise_error (None , 'pacemakerd --version' ),
272
+ )
273
+
274
+
275
+ def _check_version_range (
276
+ handler : CheckResultHandler , component_name : str ,
277
+ minimum : tuple ,
278
+ pattern ,
279
+ text : str ,
280
+ ):
281
+ match = pattern .search (text )
282
+ if not match :
263
283
handler .handle_problem (
264
- False , 'Corosync version not supported' , [
265
- 'Supported version: corosync >= 3 ' ,
266
- f'Actual version: corosync == { match . group ( 1 ) } ' ,
284
+ False , f' { component_name } version not supported' , [
285
+ 'Unknown version:' ,
286
+ text ,
267
287
],
268
288
)
289
+ else :
290
+ version = tuple (int (x ) for x in match .group (1 ).split ('.' ))
291
+ if not minimum <= version :
292
+ handler .handle_problem (
293
+ False , f'{ component_name } version not supported' , [
294
+ 'Supported version: {} <= {}' .format (
295
+ '.' .join (str (x ) for x in minimum ),
296
+ component_name ,
297
+ ),
298
+ f'Actual version: { component_name } == { match .group (1 )} ' ,
299
+ ],
300
+ )
269
301
270
302
271
303
def check_service_status (handler : CheckResultHandler ):
0 commit comments