@@ -488,11 +488,64 @@ def statuses(self,):
488
488
"""Return a list of valid statuses"""
489
489
print ([s .name for s in K8sClusterStatus ])
490
490
491
- def k8s_supported_versions (self ):
491
+ def k8s_supported_versions (
492
+ self ,
493
+ output = "json" ,
494
+ major_filter = None ,
495
+ minor_filter = None ,
496
+ patch_filter = None ,
497
+ ):
492
498
"""
493
499
Print a list of supported k8s versions
494
- """
495
- print (get_client ().k8s_cluster .k8s_supported_versions ())
500
+
501
+ :param output: how to print the output, 'json' or 'text'
502
+ :param major_filter: only return versions matching major_filter
503
+ :param minor_filter: only return versions matching minor_filter
504
+ :param patch_filter: only return versions matching patch_filter
505
+
506
+ Example::
507
+
508
+ hpecp k8scluster k8s_supported_versions --major-filter 1 --minor-filter 17
509
+ """
510
+ assert output in [
511
+ "json" ,
512
+ "text" ,
513
+ ], "'output' parameter ust be 'json' or 'text'"
514
+
515
+ assert major_filter is None or isinstance (
516
+ major_filter , int
517
+ ), "'major_filter' if provided must be an int"
518
+ assert minor_filter is None or isinstance (
519
+ minor_filter , int
520
+ ), "'minor_filter' if provided must be an int"
521
+ assert patch_filter is None or isinstance (
522
+ patch_filter , int
523
+ ), "'patch_filter' if provided must be an int"
524
+
525
+ vers = []
526
+ for v in get_client ().k8s_cluster .k8s_supported_versions ():
527
+ if (
528
+ (
529
+ major_filter is not None
530
+ and not v .startswith (str (major_filter ))
531
+ )
532
+ or (
533
+ minor_filter is not None
534
+ and not v .find ("." + str (minor_filter ) + "." ) > 0
535
+ )
536
+ or (
537
+ patch_filter is not None
538
+ and not v .endswith (str (patch_filter ))
539
+ )
540
+ ):
541
+ continue
542
+ else :
543
+ vers .append (v )
544
+
545
+ if output == "json" :
546
+ print (vers )
547
+ else :
548
+ print (" " .join (vers ))
496
549
497
550
498
551
class LockProxy (object ):
0 commit comments