Skip to content

Commit c05075f

Browse files
committed
add filter and output option to cli
1 parent 0114bf9 commit c05075f

File tree

1 file changed

+56
-3
lines changed

1 file changed

+56
-3
lines changed

bin/cli.py

Lines changed: 56 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -488,11 +488,64 @@ def statuses(self,):
488488
"""Return a list of valid statuses"""
489489
print([s.name for s in K8sClusterStatus])
490490

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+
):
492498
"""
493499
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))
496549

497550

498551
class LockProxy(object):

0 commit comments

Comments
 (0)