diff --git a/contrib/completions/bash/oc b/contrib/completions/bash/oc index c5c256f1fc33..8443d221f9ba 100644 --- a/contrib/completions/bash/oc +++ b/contrib/completions/bash/oc @@ -5765,11 +5765,13 @@ _oc_annotate() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -5865,11 +5867,13 @@ _oc_annotate() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -6007,11 +6011,13 @@ _oc_apply_edit-last-applied() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -6107,11 +6113,13 @@ _oc_apply_edit-last-applied() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -10607,11 +10615,13 @@ _oc_delete() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -10707,11 +10717,13 @@ _oc_delete() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -11088,11 +11100,13 @@ _oc_edit() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -11188,11 +11202,13 @@ _oc_edit() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -11871,11 +11887,13 @@ _oc_get() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -11971,11 +11989,13 @@ _oc_get() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -12390,11 +12410,13 @@ _oc_label() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -12490,11 +12512,13 @@ _oc_label() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -13257,11 +13281,13 @@ _oc_patch() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -13357,11 +13383,13 @@ _oc_patch() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -13487,17 +13515,35 @@ _oc_policy_can-i() flags+=("--all-namespaces") local_nonpersistent_flags+=("--all-namespaces") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") flags+=("--groups=") local_nonpersistent_flags+=("--groups=") flags+=("--ignore-scopes") local_nonpersistent_flags+=("--ignore-scopes") flags+=("--list") local_nonpersistent_flags+=("--list") + flags+=("--no-headers") + local_nonpersistent_flags+=("--no-headers") + flags+=("--output=") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output=") flags+=("--quiet") flags+=("-q") local_nonpersistent_flags+=("--quiet") flags+=("--scopes=") local_nonpersistent_flags+=("--scopes=") + flags+=("--show-all") + flags+=("-a") + local_nonpersistent_flags+=("--show-all") + flags+=("--show-labels") + local_nonpersistent_flags+=("--show-labels") + flags+=("--sort-by=") + local_nonpersistent_flags+=("--sort-by=") + flags+=("--template=") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template=") flags+=("--user=") local_nonpersistent_flags+=("--user=") flags+=("--as=") diff --git a/contrib/completions/bash/openshift b/contrib/completions/bash/openshift index 459e5b841bc5..7bbe01172025 100644 --- a/contrib/completions/bash/openshift +++ b/contrib/completions/bash/openshift @@ -11389,11 +11389,13 @@ _openshift_cli_annotate() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -11489,11 +11491,13 @@ _openshift_cli_annotate() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -11634,11 +11638,13 @@ _openshift_cli_apply_edit-last-applied() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -11734,11 +11740,13 @@ _openshift_cli_apply_edit-last-applied() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -16421,11 +16429,13 @@ _openshift_cli_delete() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -16521,11 +16531,13 @@ _openshift_cli_delete() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -16911,11 +16923,13 @@ _openshift_cli_edit() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -17011,11 +17025,13 @@ _openshift_cli_edit() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -17715,11 +17731,13 @@ _openshift_cli_get() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -17815,11 +17833,13 @@ _openshift_cli_get() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -18249,11 +18269,13 @@ _openshift_cli_label() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -18349,11 +18371,13 @@ _openshift_cli_label() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -19142,11 +19166,13 @@ _openshift_cli_patch() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -19242,11 +19268,13 @@ _openshift_cli_patch() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -19378,17 +19406,35 @@ _openshift_cli_policy_can-i() flags+=("--all-namespaces") local_nonpersistent_flags+=("--all-namespaces") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") flags+=("--groups=") local_nonpersistent_flags+=("--groups=") flags+=("--ignore-scopes") local_nonpersistent_flags+=("--ignore-scopes") flags+=("--list") local_nonpersistent_flags+=("--list") + flags+=("--no-headers") + local_nonpersistent_flags+=("--no-headers") + flags+=("--output=") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output=") flags+=("--quiet") flags+=("-q") local_nonpersistent_flags+=("--quiet") flags+=("--scopes=") local_nonpersistent_flags+=("--scopes=") + flags+=("--show-all") + flags+=("-a") + local_nonpersistent_flags+=("--show-all") + flags+=("--show-labels") + local_nonpersistent_flags+=("--show-labels") + flags+=("--sort-by=") + local_nonpersistent_flags+=("--sort-by=") + flags+=("--template=") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template=") flags+=("--user=") local_nonpersistent_flags+=("--user=") flags+=("--as=") @@ -25095,11 +25141,13 @@ _openshift_kube_annotate() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -25195,11 +25243,13 @@ _openshift_kube_annotate() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -25489,11 +25539,13 @@ _openshift_kube_apply_edit-last-applied() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -25589,11 +25641,13 @@ _openshift_kube_apply_edit-last-applied() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -31778,11 +31832,13 @@ _openshift_kube_delete() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -31878,11 +31934,13 @@ _openshift_kube_delete() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -32390,11 +32448,13 @@ _openshift_kube_edit() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -32490,11 +32550,13 @@ _openshift_kube_edit() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -33112,11 +33174,13 @@ _openshift_kube_get() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -33212,11 +33276,13 @@ _openshift_kube_get() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -33432,11 +33498,13 @@ _openshift_kube_label() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -33532,11 +33600,13 @@ _openshift_kube_label() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -34072,11 +34142,13 @@ _openshift_kube_patch() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -34172,11 +34244,13 @@ _openshift_kube_patch() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") diff --git a/contrib/completions/zsh/oc b/contrib/completions/zsh/oc index 97db48009c00..eaeea8792d02 100644 --- a/contrib/completions/zsh/oc +++ b/contrib/completions/zsh/oc @@ -5914,11 +5914,13 @@ _oc_annotate() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -6014,11 +6016,13 @@ _oc_annotate() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -6156,11 +6160,13 @@ _oc_apply_edit-last-applied() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -6256,11 +6262,13 @@ _oc_apply_edit-last-applied() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -10756,11 +10764,13 @@ _oc_delete() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -10856,11 +10866,13 @@ _oc_delete() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -11237,11 +11249,13 @@ _oc_edit() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -11337,11 +11351,13 @@ _oc_edit() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -12020,11 +12036,13 @@ _oc_get() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -12120,11 +12138,13 @@ _oc_get() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -12539,11 +12559,13 @@ _oc_label() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -12639,11 +12661,13 @@ _oc_label() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -13406,11 +13430,13 @@ _oc_patch() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -13506,11 +13532,13 @@ _oc_patch() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -13636,17 +13664,35 @@ _oc_policy_can-i() flags+=("--all-namespaces") local_nonpersistent_flags+=("--all-namespaces") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") flags+=("--groups=") local_nonpersistent_flags+=("--groups=") flags+=("--ignore-scopes") local_nonpersistent_flags+=("--ignore-scopes") flags+=("--list") local_nonpersistent_flags+=("--list") + flags+=("--no-headers") + local_nonpersistent_flags+=("--no-headers") + flags+=("--output=") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output=") flags+=("--quiet") flags+=("-q") local_nonpersistent_flags+=("--quiet") flags+=("--scopes=") local_nonpersistent_flags+=("--scopes=") + flags+=("--show-all") + flags+=("-a") + local_nonpersistent_flags+=("--show-all") + flags+=("--show-labels") + local_nonpersistent_flags+=("--show-labels") + flags+=("--sort-by=") + local_nonpersistent_flags+=("--sort-by=") + flags+=("--template=") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template=") flags+=("--user=") local_nonpersistent_flags+=("--user=") flags+=("--as=") diff --git a/contrib/completions/zsh/openshift b/contrib/completions/zsh/openshift index c715b2726026..449e4c34ce8b 100644 --- a/contrib/completions/zsh/openshift +++ b/contrib/completions/zsh/openshift @@ -11538,11 +11538,13 @@ _openshift_cli_annotate() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -11638,11 +11640,13 @@ _openshift_cli_annotate() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -11783,11 +11787,13 @@ _openshift_cli_apply_edit-last-applied() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -11883,11 +11889,13 @@ _openshift_cli_apply_edit-last-applied() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -16570,11 +16578,13 @@ _openshift_cli_delete() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -16670,11 +16680,13 @@ _openshift_cli_delete() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -17060,11 +17072,13 @@ _openshift_cli_edit() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -17160,11 +17174,13 @@ _openshift_cli_edit() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -17864,11 +17880,13 @@ _openshift_cli_get() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -17964,11 +17982,13 @@ _openshift_cli_get() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -18398,11 +18418,13 @@ _openshift_cli_label() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -18498,11 +18520,13 @@ _openshift_cli_label() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -19291,11 +19315,13 @@ _openshift_cli_patch() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -19391,11 +19417,13 @@ _openshift_cli_patch() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -19527,17 +19555,35 @@ _openshift_cli_policy_can-i() flags+=("--all-namespaces") local_nonpersistent_flags+=("--all-namespaces") + flags+=("--allow-missing-template-keys") + local_nonpersistent_flags+=("--allow-missing-template-keys") flags+=("--groups=") local_nonpersistent_flags+=("--groups=") flags+=("--ignore-scopes") local_nonpersistent_flags+=("--ignore-scopes") flags+=("--list") local_nonpersistent_flags+=("--list") + flags+=("--no-headers") + local_nonpersistent_flags+=("--no-headers") + flags+=("--output=") + two_word_flags+=("-o") + local_nonpersistent_flags+=("--output=") flags+=("--quiet") flags+=("-q") local_nonpersistent_flags+=("--quiet") flags+=("--scopes=") local_nonpersistent_flags+=("--scopes=") + flags+=("--show-all") + flags+=("-a") + local_nonpersistent_flags+=("--show-all") + flags+=("--show-labels") + local_nonpersistent_flags+=("--show-labels") + flags+=("--sort-by=") + local_nonpersistent_flags+=("--sort-by=") + flags+=("--template=") + flags_with_completion+=("--template") + flags_completion+=("_filedir") + local_nonpersistent_flags+=("--template=") flags+=("--user=") local_nonpersistent_flags+=("--user=") flags+=("--as=") @@ -25244,11 +25290,13 @@ _openshift_kube_annotate() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -25344,11 +25392,13 @@ _openshift_kube_annotate() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -25638,11 +25688,13 @@ _openshift_kube_apply_edit-last-applied() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -25738,11 +25790,13 @@ _openshift_kube_apply_edit-last-applied() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -31927,11 +31981,13 @@ _openshift_kube_delete() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -32027,11 +32083,13 @@ _openshift_kube_delete() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -32539,11 +32597,13 @@ _openshift_kube_edit() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -32639,11 +32699,13 @@ _openshift_kube_edit() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -33261,11 +33323,13 @@ _openshift_kube_get() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -33361,11 +33425,13 @@ _openshift_kube_get() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -33581,11 +33647,13 @@ _openshift_kube_label() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -33681,11 +33749,13 @@ _openshift_kube_label() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") @@ -34221,11 +34291,13 @@ _openshift_kube_patch() must_have_one_noun+=("route") must_have_one_noun+=("secret") must_have_one_noun+=("securitycontextconstraints") + must_have_one_noun+=("selfsubjectrulesreview") must_have_one_noun+=("service") must_have_one_noun+=("serviceaccount") must_have_one_noun+=("statefulset") must_have_one_noun+=("status") must_have_one_noun+=("storageclass") + must_have_one_noun+=("subjectrulesreview") must_have_one_noun+=("template") must_have_one_noun+=("templateinstance") must_have_one_noun+=("thirdpartyresource") @@ -34321,11 +34393,13 @@ _openshift_kube_patch() noun_aliases+=("sa") noun_aliases+=("secrets") noun_aliases+=("securitycontextconstraintses") + noun_aliases+=("selfsubjectrulesreviews") noun_aliases+=("serviceaccounts") noun_aliases+=("services") noun_aliases+=("statefulsets") noun_aliases+=("statuses") noun_aliases+=("storageclasses") + noun_aliases+=("subjectrulesreviews") noun_aliases+=("svc") noun_aliases+=("templateinstances") noun_aliases+=("templates") diff --git a/pkg/oc/admin/policy/cani.go b/pkg/oc/admin/policy/cani.go index c29187c4f2d5..2d5e7689eb88 100644 --- a/pkg/oc/admin/policy/cani.go +++ b/pkg/oc/admin/policy/cani.go @@ -7,7 +7,6 @@ import ( "io/ioutil" "os" "reflect" - "text/tabwriter" "github.com/spf13/cobra" @@ -21,7 +20,6 @@ import ( authorizationapi "github.com/openshift/origin/pkg/authorization/apis/authorization" "github.com/openshift/origin/pkg/client" "github.com/openshift/origin/pkg/cmd/util/clientcmd" - "github.com/openshift/origin/pkg/oc/cli/describe" ) const CanIRecommendedName = "can-i" @@ -130,16 +128,13 @@ func (o *canIOptions) Complete(cmd *cobra.Command, f *clientcmd.Factory, args [] o.RulesReviewClient = oclient o.SARClient = oclient - output := kcmdutil.GetFlagString(cmd, "output") - if len(output) > 0 { - printer, _, err := f.PrinterForCommand(cmd) - if err != nil { - return err - } - - o.Printer = printer + printer, err := f.PrinterForCommand(cmd, false, nil, printers.PrintOptions{}) + if err != nil { + return err } + o.Printer = printer + o.Namespace = metav1.NamespaceAll if !o.AllNamespaces { o.Namespace, _, err = f.DefaultNamespace() @@ -198,7 +193,6 @@ func (o *canIOptions) Run() (bool, error) { func (o *canIOptions) listAllPermissions() error { var rulesReviewResult runtime.Object - var policyRules []authorizationapi.PolicyRule if len(o.User) == 0 && len(o.Groups) == 0 { rulesReview := &authorizationapi.SelfSubjectRulesReview{} @@ -211,7 +205,6 @@ func (o *canIOptions) listAllPermissions() error { return err } - policyRules = whatCanIDo.Status.Rules rulesReviewResult = whatCanIDo } else { rulesReview := &authorizationapi.SubjectRulesReview{ @@ -227,21 +220,8 @@ func (o *canIOptions) listAllPermissions() error { return err } - policyRules = whatCanYouDo.Status.Rules rulesReviewResult = whatCanYouDo } - if o.Printer != nil { - return o.Printer.PrintObj(rulesReviewResult, o.Out) - } - - writer := tabwriter.NewWriter(o.Out, tabwriterMinWidth, tabwriterWidth, tabwriterPadding, tabwriterPadChar, tabwriterFlags) - fmt.Fprint(writer, describe.PolicyRuleHeadings+"\n") - for _, rule := range policyRules { - describe.DescribePolicyRule(writer, rule, "") - - } - writer.Flush() - - return nil + return o.Printer.PrintObj(rulesReviewResult, o.Out) } diff --git a/pkg/oc/cli/describe/printer.go b/pkg/oc/cli/describe/printer.go index 446df2fce540..53dd1e99cf39 100644 --- a/pkg/oc/cli/describe/printer.go +++ b/pkg/oc/cli/describe/printer.go @@ -72,6 +72,8 @@ var ( templateInstanceColumns = []string{"NAME", "TEMPLATE"} brokerTemplateInstanceColumns = []string{"NAME", "TEMPLATEINSTANCE"} + policyRuleColumns = []string{"VERBS", "NON-RESOURCE URLS", "RESOURCE NAMES", "API GROUPS", "RESOURCES"} + securityContextConstraintsColumns = []string{"NAME", "PRIV", "CAPS", "SELINUX", "RUNASUSER", "FSGROUP", "SUPGROUP", "PRIORITY", "READONLYROOTFS", "VOLUMES"} ) @@ -89,6 +91,8 @@ func NewHumanReadablePrinter(encoder runtime.Encoder, decoder runtime.Decoder, p p.Handler(buildColumns, nil, printBuildList) p.Handler(buildConfigColumns, nil, printBuildConfig) p.Handler(buildConfigColumns, nil, printBuildConfigList) + p.Handler(policyRuleColumns, nil, printSubjectRulesReview) + p.Handler(policyRuleColumns, nil, printSelfSubjectRulesReview) p.Handler(imageColumns, nil, printImage) p.Handler(imageStreamTagColumns, nil, printImageStreamTag) p.Handler(imageStreamTagColumns, nil, printImageStreamTagList) @@ -370,6 +374,29 @@ func printBuildConfig(bc *buildapi.BuildConfig, w io.Writer, opts kprinters.Prin return nil } +func printSubjectRulesReview(rulesReview *authorizationapi.SubjectRulesReview, w io.Writer, opts kprinters.PrintOptions) error { + printPolicyRule(rulesReview.Status.Rules, w) + return nil +} + +func printSelfSubjectRulesReview(selfSubjectRulesReview *authorizationapi.SelfSubjectRulesReview, w io.Writer, opts kprinters.PrintOptions) error { + printPolicyRule(selfSubjectRulesReview.Status.Rules, w) + return nil +} + +func printPolicyRule(policyRules []authorizationapi.PolicyRule, w io.Writer) error { + for _, rule := range policyRules { + fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\n", + rule.Verbs.List(), + rule.NonResourceURLs.List(), + rule.ResourceNames.List(), + rule.APIGroups, + rule.Resources.List(), + ) + } + return nil +} + func printBuildConfigList(buildList *buildapi.BuildConfigList, w io.Writer, opts kprinters.PrintOptions) error { for _, buildConfig := range buildList.Items { if err := printBuildConfig(&buildConfig, w, opts); err != nil { diff --git a/test/cmd/authentication.sh b/test/cmd/authentication.sh index faed5a595ee1..2d8cd66955da 100755 --- a/test/cmd/authentication.sh +++ b/test/cmd/authentication.sh @@ -39,6 +39,10 @@ os::cmd::expect_success 'oc login -u system:admin' username="$(oc get user/scoped-user -o jsonpath='{.metadata.name}')" useruid="$(oc get user/scoped-user -o jsonpath='{.metadata.uid}')" os::cmd::expect_success_and_text "oc policy can-i --list -n '${project}' --as=scoped-user" 'get.*pods' +os::cmd::expect_success "oc policy can-i --list --output=yaml" +os::cmd::expect_success "oc policy can-i --list --output=json" +os::cmd::expect_success "oc policy can-i --list --output=wide" +os::cmd::expect_success "oc policy can-i --list" whoamitoken="$(oc process -f "${OS_ROOT}/test/testdata/authentication/scoped-token-template.yaml" TOKEN_PREFIX=whoami SCOPE=user:info USER_NAME="${username}" USER_UID="${useruid}" | oc create -f - -o name | awk -F/ '{print $2}')" os::cmd::expect_success_and_text "oc get user/~ --token='${whoamitoken}'" "${username}"