diff --git a/cmd/list/list.go b/cmd/list/list.go index 766b568a..511daccf 100644 --- a/cmd/list/list.go +++ b/cmd/list/list.go @@ -20,11 +20,8 @@ var ( # List all supported frameworks names kubescape list frameworks --account - # List all supported controls names + # List all supported controls names with ids kubescape list controls - - # List all supported controls ids - kubescape list controls --id Control documentation: https://hub.armosec.io/docs/controls @@ -68,7 +65,7 @@ func GetListCmd(ks meta.IKubescape) *cobra.Command { listCmd.PersistentFlags().StringVarP(&listPolicies.Credentials.ClientID, "client-id", "", "", "Kubescape SaaS client ID. Default will load client ID from cache, read more - https://hub.armosec.io/docs/authentication") listCmd.PersistentFlags().StringVarP(&listPolicies.Credentials.SecretKey, "secret-key", "", "", "Kubescape SaaS secret key. Default will load secret key from cache, read more - https://hub.armosec.io/docs/authentication") listCmd.PersistentFlags().StringVar(&listPolicies.Format, "format", "pretty-print", "output format. supported: 'pretty-printer'/'json'") - listCmd.PersistentFlags().BoolVarP(&listPolicies.ListIDs, "id", "", false, "List control ID's instead of controls names") + listCmd.PersistentFlags().MarkDeprecated("id", "Control ID's are included in list outpus") return listCmd } diff --git a/core/cautils/getter/downloadreleasedpolicy.go b/core/cautils/getter/downloadreleasedpolicy.go index b33c002b..4e2aff24 100644 --- a/core/cautils/getter/downloadreleasedpolicy.go +++ b/core/cautils/getter/downloadreleasedpolicy.go @@ -1,6 +1,7 @@ package getter import ( + "fmt" "strings" "github.com/armosec/armoapi-go/armotypes" @@ -55,13 +56,21 @@ func (drp *DownloadReleasedPolicy) ListFrameworks() ([]string, error) { return drp.gs.GetOPAFrameworksNamesList() } -func (drp *DownloadReleasedPolicy) ListControls(listType ListType) ([]string, error) { - switch listType { - case ListID: - return drp.gs.GetOPAControlsIDsList() - default: - return drp.gs.GetOPAControlsNamesList() +func (drp *DownloadReleasedPolicy) ListControls() ([]string, error) { + controlsIDsList, err := drp.gs.GetOPAControlsIDsList() + if err != nil { + return []string{}, err } + controlsNamesList, err := drp.gs.GetOPAControlsNamesList() + if err != nil { + return []string{}, err + } + controlsNamesWithIDsList := make([]string, len(controlsIDsList)) + // by design both slices have the same length + for i := range controlsIDsList { + controlsNamesWithIDsList = append(controlsNamesWithIDsList, fmt.Sprintf("%v (%v)", controlsNamesList[i], controlsIDsList[i])) + } + return controlsNamesWithIDsList, nil } func (drp *DownloadReleasedPolicy) GetControlsInputs(clusterName string) (map[string][]string, error) { diff --git a/core/cautils/getter/getpolicies.go b/core/cautils/getter/getpolicies.go index b8fe7b06..263ae8af 100644 --- a/core/cautils/getter/getpolicies.go +++ b/core/cautils/getter/getpolicies.go @@ -6,19 +6,13 @@ import ( "github.com/kubescape/opa-utils/reporthandling/attacktrack/v1alpha1" ) -// supported listing -type ListType string - -const ListID ListType = "id" -const ListName ListType = "name" - type IPolicyGetter interface { GetFramework(name string) (*reporthandling.Framework, error) GetFrameworks() ([]reporthandling.Framework, error) GetControl(name string) (*reporthandling.Control, error) ListFrameworks() ([]string, error) - ListControls(ListType) ([]string, error) + ListControls() ([]string, error) } type IExceptionsGetter interface { diff --git a/core/cautils/getter/kscloudapi.go b/core/cautils/getter/kscloudapi.go index f7e22080..d7e5422a 100644 --- a/core/cautils/getter/kscloudapi.go +++ b/core/cautils/getter/kscloudapi.go @@ -306,7 +306,7 @@ func (api *KSCloudAPI) ListFrameworks() ([]string, error) { return frameworkList, nil } -func (api *KSCloudAPI) ListControls(l ListType) ([]string, error) { +func (api *KSCloudAPI) ListControls() ([]string, error) { return nil, fmt.Errorf("control api is not public") } diff --git a/core/cautils/getter/loadpolicy.go b/core/cautils/getter/loadpolicy.go index b4f068e5..c75d4d4a 100644 --- a/core/cautils/getter/loadpolicy.go +++ b/core/cautils/getter/loadpolicy.go @@ -109,7 +109,7 @@ func (lp *LoadPolicy) ListFrameworks() ([]string, error) { return fwNames, nil } -func (lp *LoadPolicy) ListControls(listType ListType) ([]string, error) { +func (lp *LoadPolicy) ListControls() ([]string, error) { // TODO - Support return []string{}, fmt.Errorf("loading controls list from file is not supported") } diff --git a/core/core/list.go b/core/core/list.go index 155be08e..e92fd5eb 100644 --- a/core/core/list.go +++ b/core/core/list.go @@ -6,7 +6,6 @@ import ( "sort" "strings" - "github.com/kubescape/kubescape/v2/core/cautils/getter" metav1 "github.com/kubescape/kubescape/v2/core/meta/datastructures/v1" ) @@ -54,11 +53,7 @@ func listControls(listPolicies *metav1.ListPolicies) ([]string, error) { tenant := getTenantConfig(&listPolicies.Credentials, "", "", getKubernetesApi()) // change k8sinterface g := getPolicyGetter(nil, tenant.GetTenantEmail(), false, nil) - l := getter.ListName - if listPolicies.ListIDs { - l = getter.ListID - } - return g.ListControls(l) + return g.ListControls() } func listExceptions(listPolicies *metav1.ListPolicies) ([]string, error) { diff --git a/core/meta/datastructures/v1/listpolicies.go b/core/meta/datastructures/v1/listpolicies.go index c1833278..4166b46f 100644 --- a/core/meta/datastructures/v1/listpolicies.go +++ b/core/meta/datastructures/v1/listpolicies.go @@ -4,7 +4,6 @@ import "github.com/kubescape/kubescape/v2/core/cautils" type ListPolicies struct { Target string - ListIDs bool Format string Credentials cautils.Credentials }