diff --git a/docs/reference/octl_kube_cluster.md b/docs/reference/octl_kube_cluster.md index 08b61361..2ba40c3f 100644 --- a/docs/reference/octl_kube_cluster.md +++ b/docs/reference/octl_kube_cluster.md @@ -35,9 +35,9 @@ cluster commands * [octl kube](octl_kube.md) - OUTSCALE Kubernetes as a Service (OKS) management * [octl kube cluster create](octl_kube_cluster_create.md) - alias for api CreateCluster -* [octl kube cluster delete](octl_kube_cluster_delete.md) - alias for api DeleteCluster id -* [octl kube cluster describe](octl_kube_cluster_describe.md) - alias for api GetCluster id -* [octl kube cluster kubeconfig](octl_kube_cluster_kubeconfig.md) - alias for api GetKubeconfig cluster_name_or_id +* [octl kube cluster delete](octl_kube_cluster_delete.md) - alias for api DeleteCluster id_or_name +* [octl kube cluster describe](octl_kube_cluster_describe.md) - alias for api GetCluster id_or_name +* [octl kube cluster kubeconfig](octl_kube_cluster_kubeconfig.md) - alias for api GetKubeconfig id_or_name * [octl kube cluster list](octl_kube_cluster_list.md) - alias for api ListAllClusters -* [octl kube cluster update](octl_kube_cluster_update.md) - alias for api UpdateCluster id +* [octl kube cluster update](octl_kube_cluster_update.md) - alias for api UpdateCluster id_or_name diff --git a/docs/reference/octl_kube_cluster_delete.md b/docs/reference/octl_kube_cluster_delete.md index 1a800f32..a00e69fb 100644 --- a/docs/reference/octl_kube_cluster_delete.md +++ b/docs/reference/octl_kube_cluster_delete.md @@ -1,15 +1,15 @@ ## octl kube cluster delete -alias for api DeleteCluster id +alias for api DeleteCluster id_or_name ### Synopsis -> *alias for api DeleteCluster id* +> *alias for api DeleteCluster id_or_name* Deletes a specific cluster by its ID. Returns confirmation of the deletion. ``` -octl kube cluster delete id [id]... [flags] +octl kube cluster delete id_or_name [id_or_name]... [flags] ``` ### Options diff --git a/docs/reference/octl_kube_cluster_describe.md b/docs/reference/octl_kube_cluster_describe.md index f999a0b2..77fd908d 100644 --- a/docs/reference/octl_kube_cluster_describe.md +++ b/docs/reference/octl_kube_cluster_describe.md @@ -1,15 +1,15 @@ ## octl kube cluster describe -alias for api GetCluster id +alias for api GetCluster id_or_name ### Synopsis -> *alias for api GetCluster id* +> *alias for api GetCluster id_or_name* ``` -octl kube cluster describe id [id]... [flags] +octl kube cluster describe id_or_name [id_or_name]... [flags] ``` ### Options diff --git a/docs/reference/octl_kube_cluster_kubeconfig.md b/docs/reference/octl_kube_cluster_kubeconfig.md index b71b9dc9..ae6787e8 100644 --- a/docs/reference/octl_kube_cluster_kubeconfig.md +++ b/docs/reference/octl_kube_cluster_kubeconfig.md @@ -1,21 +1,24 @@ ## octl kube cluster kubeconfig -alias for api GetKubeconfig cluster_name_or_id +alias for api GetKubeconfig id_or_name ### Synopsis -> *alias for api GetKubeconfig cluster_name_or_id* +> *alias for api GetKubeconfig id_or_name* ``` -octl kube cluster kubeconfig cluster_name_or_id [flags] +octl kube cluster kubeconfig id_or_name [flags] ``` ### Options ``` - -h, --help help for kubeconfig + --group string + -h, --help help for kubeconfig + --ttl string + --user string ``` ### Options inherited from parent commands diff --git a/docs/reference/octl_kube_cluster_update.md b/docs/reference/octl_kube_cluster_update.md index f0b0fe2f..3971f569 100644 --- a/docs/reference/octl_kube_cluster_update.md +++ b/docs/reference/octl_kube_cluster_update.md @@ -1,15 +1,15 @@ ## octl kube cluster update -alias for api UpdateCluster id +alias for api UpdateCluster id_or_name ### Synopsis -> *alias for api UpdateCluster id* +> *alias for api UpdateCluster id_or_name* Updates the configuration of an existing cluster by its ID. The request must include the updated cluster details in the request body. Returns the updated cluster information ``` -octl kube cluster update id [id]... [flags] +octl kube cluster update id_or_name [id_or_name]... [flags] ``` ### Options diff --git a/docs/reference/octl_kube_project.md b/docs/reference/octl_kube_project.md index 5f42c850..82ded485 100644 --- a/docs/reference/octl_kube_project.md +++ b/docs/reference/octl_kube_project.md @@ -35,13 +35,13 @@ project commands * [octl kube](octl_kube.md) - OUTSCALE Kubernetes as a Service (OKS) management * [octl kube project clusters](octl_kube_project_clusters.md) - alias for api ListClustersByProjectID * [octl kube project create](octl_kube_project_create.md) - alias for api CreateProject -* [octl kube project delete](octl_kube_project_delete.md) - alias for api DeleteProject id -* [octl kube project describe](octl_kube_project_describe.md) - alias for api GetProject id +* [octl kube project delete](octl_kube_project_delete.md) - alias for api DeleteProject id_or_name +* [octl kube project describe](octl_kube_project_describe.md) - alias for api GetProject id_or_name * [octl kube project list](octl_kube_project_list.md) - alias for api ListProjects -* [octl kube project nets](octl_kube_project_nets.md) - alias for api GetProjectNets id -* [octl kube project public-ips](octl_kube_project_public-ips.md) - alias for api GetProjectPublicIps id -* [octl kube project quotas](octl_kube_project_quotas.md) - alias for api GetProjectQuotas id -* [octl kube project snapshots](octl_kube_project_snapshots.md) - alias for api GetProjectSnapshots id -* [octl kube project update](octl_kube_project_update.md) - alias for api UpdateProject id +* [octl kube project nets](octl_kube_project_nets.md) - alias for api GetProjectNets id_or_name +* [octl kube project public-ips](octl_kube_project_public-ips.md) - alias for api GetProjectPublicIps id_or_name +* [octl kube project quotas](octl_kube_project_quotas.md) - alias for api GetProjectQuotas id_or_name +* [octl kube project snapshots](octl_kube_project_snapshots.md) - alias for api GetProjectSnapshots id_or_name +* [octl kube project update](octl_kube_project_update.md) - alias for api UpdateProject id_or_name * [octl kube project use](octl_kube_project_use.md) - Set a default project for cluster commands, reset it without args diff --git a/docs/reference/octl_kube_project_clusters.md b/docs/reference/octl_kube_project_clusters.md index be15d000..7c73e501 100644 --- a/docs/reference/octl_kube_project_clusters.md +++ b/docs/reference/octl_kube_project_clusters.md @@ -9,7 +9,7 @@ alias for api ListClustersByProjectID ``` -octl kube project clusters project_id [flags] +octl kube project clusters id_or_name [flags] ``` ### Options diff --git a/docs/reference/octl_kube_project_delete.md b/docs/reference/octl_kube_project_delete.md index 55e1ef45..dfc59f45 100644 --- a/docs/reference/octl_kube_project_delete.md +++ b/docs/reference/octl_kube_project_delete.md @@ -1,15 +1,15 @@ ## octl kube project delete -alias for api DeleteProject id +alias for api DeleteProject id_or_name ### Synopsis -> *alias for api DeleteProject id* +> *alias for api DeleteProject id_or_name* Deletes a specific project by its ID. Returns a confirmation of the project deletion. ``` -octl kube project delete id [id]... [flags] +octl kube project delete id_or_name [id_or_name]... [flags] ``` ### Options diff --git a/docs/reference/octl_kube_project_describe.md b/docs/reference/octl_kube_project_describe.md index 59ab2778..ff9eac16 100644 --- a/docs/reference/octl_kube_project_describe.md +++ b/docs/reference/octl_kube_project_describe.md @@ -1,15 +1,15 @@ ## octl kube project describe -alias for api GetProject id +alias for api GetProject id_or_name ### Synopsis -> *alias for api GetProject id* +> *alias for api GetProject id_or_name* ``` -octl kube project describe id [id]... [flags] +octl kube project describe id_or_name [id_or_name]... [flags] ``` ### Options diff --git a/docs/reference/octl_kube_project_nets.md b/docs/reference/octl_kube_project_nets.md index 6a2a5f4c..3dc5359d 100644 --- a/docs/reference/octl_kube_project_nets.md +++ b/docs/reference/octl_kube_project_nets.md @@ -1,15 +1,15 @@ ## octl kube project nets -alias for api GetProjectNets id +alias for api GetProjectNets id_or_name ### Synopsis -> *alias for api GetProjectNets id* +> *alias for api GetProjectNets id_or_name* ``` -octl kube project nets id [flags] +octl kube project nets id_or_name [flags] ``` ### Options diff --git a/docs/reference/octl_kube_project_public-ips.md b/docs/reference/octl_kube_project_public-ips.md index d4618cbd..a3d1d440 100644 --- a/docs/reference/octl_kube_project_public-ips.md +++ b/docs/reference/octl_kube_project_public-ips.md @@ -1,15 +1,15 @@ ## octl kube project public-ips -alias for api GetProjectPublicIps id +alias for api GetProjectPublicIps id_or_name ### Synopsis -> *alias for api GetProjectPublicIps id* +> *alias for api GetProjectPublicIps id_or_name* ``` -octl kube project public-ips id [flags] +octl kube project public-ips id_or_name [flags] ``` ### Options diff --git a/docs/reference/octl_kube_project_quotas.md b/docs/reference/octl_kube_project_quotas.md index 61e859fb..a1923403 100644 --- a/docs/reference/octl_kube_project_quotas.md +++ b/docs/reference/octl_kube_project_quotas.md @@ -1,15 +1,15 @@ ## octl kube project quotas -alias for api GetProjectQuotas id +alias for api GetProjectQuotas id_or_name ### Synopsis -> *alias for api GetProjectQuotas id* +> *alias for api GetProjectQuotas id_or_name* ``` -octl kube project quotas id [flags] +octl kube project quotas id_or_name [flags] ``` ### Options diff --git a/docs/reference/octl_kube_project_snapshots.md b/docs/reference/octl_kube_project_snapshots.md index ed05d5da..b87daf63 100644 --- a/docs/reference/octl_kube_project_snapshots.md +++ b/docs/reference/octl_kube_project_snapshots.md @@ -1,15 +1,15 @@ ## octl kube project snapshots -alias for api GetProjectSnapshots id +alias for api GetProjectSnapshots id_or_name ### Synopsis -> *alias for api GetProjectSnapshots id* +> *alias for api GetProjectSnapshots id_or_name* ``` -octl kube project snapshots id [flags] +octl kube project snapshots id_or_name [flags] ``` ### Options diff --git a/docs/reference/octl_kube_project_update.md b/docs/reference/octl_kube_project_update.md index c9304ed6..e2071649 100644 --- a/docs/reference/octl_kube_project_update.md +++ b/docs/reference/octl_kube_project_update.md @@ -1,15 +1,15 @@ ## octl kube project update -alias for api UpdateProject id +alias for api UpdateProject id_or_name ### Synopsis -> *alias for api UpdateProject id* +> *alias for api UpdateProject id_or_name* Updates the details of an existing project by its ID. The request must include the updated project data in the request body. Returns the updated project information. ``` -octl kube project update id [id]... [flags] +octl kube project update id_or_name [id_or_name]... [flags] ``` ### Options diff --git a/docs/reference/octl_kube_publicip.md b/docs/reference/octl_kube_publicip.md index 8bf9a04e..5988db08 100644 --- a/docs/reference/octl_kube_publicip.md +++ b/docs/reference/octl_kube_publicip.md @@ -33,5 +33,5 @@ publicip commands ### SEE ALSO * [octl kube](octl_kube.md) - OUTSCALE Kubernetes as a Service (OKS) management -* [octl kube publicip describe](octl_kube_publicip_describe.md) - alias for api GetProjectPublicIps public_ip_id +* [octl kube publicip describe](octl_kube_publicip_describe.md) - alias for api GetProjectPublicIps id_or_name diff --git a/docs/reference/octl_kube_publicip_describe.md b/docs/reference/octl_kube_publicip_describe.md index f1febc84..c9c3b098 100644 --- a/docs/reference/octl_kube_publicip_describe.md +++ b/docs/reference/octl_kube_publicip_describe.md @@ -1,15 +1,15 @@ ## octl kube publicip describe -alias for api GetProjectPublicIps public_ip_id +alias for api GetProjectPublicIps id_or_name ### Synopsis -> *alias for api GetProjectPublicIps public_ip_id* +> *alias for api GetProjectPublicIps id_or_name* ``` -octl kube publicip describe public_ip_id [public_ip_id]... [flags] +octl kube publicip describe id_or_name [id_or_name]... [flags] ``` ### Options diff --git a/pkg/config/defaults.zip b/pkg/config/defaults.zip index 26ac607f..e9997e26 100644 Binary files a/pkg/config/defaults.zip and b/pkg/config/defaults.zip differ diff --git a/pkg/config/defaults_kube.yaml b/pkg/config/defaults_kube.yaml index 809e6901..46467d11 100644 --- a/pkg/config/defaults_kube.yaml +++ b/pkg/config/defaults_kube.yaml @@ -167,7 +167,7 @@ entities: no_aliases: true aliases: - entity: project - use: clusters project_id + use: clusters id_or_name alias_to: ListClustersByProjectID short: alias for api ListClustersByProjectID command: @@ -225,11 +225,11 @@ aliases: - name: region alias_to: Region - entity: project - use: nets id + use: nets id_or_name alias_to: GetProjectNets aliases: - net - short: alias for api GetProjectNets id + short: alias for api GetProjectNets id_or_name command: - api - GetProjectNets @@ -237,8 +237,8 @@ aliases: - --output - yaml - entity: project - use: quotas id - short: alias for api GetProjectQuotas id + use: quotas id_or_name + short: alias for api GetProjectQuotas id_or_name command: - api - GetProjectQuotas @@ -246,11 +246,11 @@ aliases: - --output - yaml - entity: project - use: public-ips id + use: public-ips id_or_name alias_to: GetProjectPublicIps aliases: - ip - short: alias for api GetProjectPublicIps id + short: alias for api GetProjectPublicIps id_or_name command: - api - GetProjectPublicIps @@ -258,12 +258,12 @@ aliases: - --output - yaml - entity: project - use: snapshots id + use: snapshots id_or_name alias_to: GetProjectSnapshots aliases: - snap - snapshot - short: alias for api GetProjectSnapshots id + short: alias for api GetProjectSnapshots id_or_name command: - api - GetProjectSnapshots @@ -362,15 +362,22 @@ aliases: - name: version alias_to: Version - entity: cluster - use: kubeconfig cluster_name_or_id + use: kubeconfig id_or_name alias_to: GetKubeconfig - short: alias for api GetKubeconfig cluster_name_or_id + short: alias for api GetKubeconfig id_or_name command: - api - GetKubeconfig - '%0' - --output - text + flags: + - name: group + alias_to: Group + - name: user + alias_to: User + - name: ttl + alias_to: Ttl - entity: quota use: describe aliases: @@ -383,10 +390,10 @@ aliases: - yaml - --single - entity: cluster - use: describe id [id]... + use: describe id_or_name [id_or_name]... aliases: - desc - short: alias for api GetCluster id + short: alias for api GetCluster id_or_name command: - api - GetCluster @@ -395,10 +402,10 @@ aliases: - yaml - --single - entity: project - use: describe id [id]... + use: describe id_or_name [id_or_name]... aliases: - desc - short: alias for api GetProject id + short: alias for api GetProject id_or_name command: - api - GetProject @@ -407,10 +414,10 @@ aliases: - yaml - --single - entity: publicip - use: describe public_ip_id [public_ip_id]... + use: describe id_or_name [id_or_name]... aliases: - desc - short: alias for api GetProjectPublicIps public_ip_id + short: alias for api GetProjectPublicIps id_or_name command: - api - GetProjectPublicIps @@ -471,12 +478,12 @@ aliases: - name: limit alias_to: Limit - entity: cluster - use: delete id [id]... + use: delete id_or_name [id_or_name]... alias_to: DeleteCluster aliases: - del - rm - short: alias for api DeleteCluster id + short: alias for api DeleteCluster id_or_name command: - api - DeleteCluster @@ -493,12 +500,12 @@ aliases: - table - --single - entity: project - use: delete id [id]... + use: delete id_or_name [id_or_name]... alias_to: DeleteProject aliases: - del - rm - short: alias for api DeleteProject id + short: alias for api DeleteProject id_or_name command: - api - DeleteProject @@ -515,9 +522,9 @@ aliases: - table - --single - entity: cluster - use: update id [id]... + use: update id_or_name [id_or_name]... alias_to: UpdateCluster - short: alias for api UpdateCluster id + short: alias for api UpdateCluster id_or_name command: - api - UpdateCluster @@ -588,9 +595,9 @@ aliases: - name: version alias_to: Version - entity: project - use: update id [id]... + use: update id_or_name [id_or_name]... alias_to: UpdateProject - short: alias for api UpdateProject id + short: alias for api UpdateProject id_or_name command: - api - UpdateProject diff --git a/pkg/config/generate/builder/config.go b/pkg/config/generate/builder/config.go index 8ec2a061..6e9942fe 100644 --- a/pkg/config/generate/builder/config.go +++ b/pkg/config/generate/builder/config.go @@ -24,5 +24,7 @@ type Config struct { RequiredFromFieldPointer bool RequiredFromComment func(string) bool + IdFieldInUsage string + AliasRootPath []string } diff --git a/pkg/config/generate/builder/method.go b/pkg/config/generate/builder/method.go index 81309eec..377b989c 100644 --- a/pkg/config/generate/builder/method.go +++ b/pkg/config/generate/builder/method.go @@ -340,10 +340,7 @@ func (b *MethodBuilder) buildReadAliases() error { return nil } fmt.Println("describe", b.typeName, "idFilter", idFilter) - id := lo.SnakeCase(b.entity.Primary) - if id == "" { - id = "id" - } + id := b.idFieldInUsage() cmd := []string{ "api", b.m.Name, @@ -421,7 +418,7 @@ func (b *MethodBuilder) buildUpdateAlias(verb string) error { flags = b.buildFlags(req, b.cfg.UpdateFlagPrefixes, []string{idField}) } fmt.Println(verb, b.typeName, "idField", idField, "flags", flags.Names()) - id := lo.SnakeCase(b.entity.Primary) + id := b.idFieldInUsage() cmd := []string{ "api", b.m.Name, @@ -462,6 +459,13 @@ func (b *MethodBuilder) guessIDFilter() (string, error) { return fids.Name, nil } +func (b *MethodBuilder) idFieldInUsage() string { + if b.cfg.IdFieldInUsage != "" { + return b.cfg.IdFieldInUsage + } + return lo.SnakeCase(b.entity.Primary) +} + func (b *MethodBuilder) buildDeleteAlias() error { if b.entity.NoAliases { fmt.Println("-> no alias") @@ -503,7 +507,7 @@ func (b *MethodBuilder) buildDeleteAlias() error { }) } } - id := lo.SnakeCase(b.entity.Primary) + id := b.idFieldInUsage() cmd := []string{ "api", b.m.Name, diff --git a/pkg/config/generate/kube/defaults.yaml b/pkg/config/generate/kube/defaults.yaml index 64aa5320..a6921c73 100644 --- a/pkg/config/generate/kube/defaults.yaml +++ b/pkg/config/generate/kube/defaults.yaml @@ -75,7 +75,7 @@ contents: group: Clusters aliases: - entity: project - use: clusters project_id + use: clusters id_or_name alias_to: ListClustersByProjectID short: alias for api ListClustersByProjectID command: @@ -133,10 +133,10 @@ aliases: - name: region alias_to: Region - entity: project - use: nets id + use: nets id_or_name aliases: - net - short: alias for api GetProjectNets id + short: alias for api GetProjectNets id_or_name alias_to: GetProjectNets command: - api @@ -145,8 +145,8 @@ aliases: - --output - yaml - entity: project - use: quotas id - short: alias for api GetProjectQuotas id + use: quotas id_or_name + short: alias for api GetProjectQuotas id_or_name command: - api - GetProjectQuotas @@ -154,10 +154,10 @@ aliases: - --output - yaml - entity: project - use: public-ips id + use: public-ips id_or_name aliases: - ip - short: alias for api GetProjectPublicIps id + short: alias for api GetProjectPublicIps id_or_name alias_to: GetProjectPublicIps command: - api @@ -166,11 +166,11 @@ aliases: - --output - yaml - entity: project - use: snapshots id + use: snapshots id_or_name aliases: - snap - snapshot - short: alias for api GetProjectSnapshots id + short: alias for api GetProjectSnapshots id_or_name alias_to: GetProjectSnapshots command: - api @@ -270,8 +270,8 @@ aliases: - name: version alias_to: Version - entity: cluster - use: kubeconfig cluster_name_or_id - short: alias for api GetKubeconfig cluster_name_or_id + use: kubeconfig id_or_name + short: alias for api GetKubeconfig id_or_name alias_to: GetKubeconfig command: - api @@ -279,6 +279,13 @@ aliases: - '%0' - --output - text + flags: + - name: group + alias_to: Group + - name: user + alias_to: User + - name: ttl + alias_to: Ttl - entity: quota use: describe aliases: diff --git a/pkg/config/generate/kube/main.go b/pkg/config/generate/kube/main.go index 3bdcfafa..cdc7ce9d 100644 --- a/pkg/config/generate/kube/main.go +++ b/pkg/config/generate/kube/main.go @@ -50,6 +50,7 @@ func main() { Usage: "Tags (key=value,key=value)", }, }, + IdFieldInUsage: "id_or_name", } sb := builder.NewSpecBuilder(cfg) diff --git a/pkg/config/generate/kubeclient/main.go b/pkg/config/generate/kubeclient/main.go index 0c8b3767..bf0d15c8 100644 --- a/pkg/config/generate/kubeclient/main.go +++ b/pkg/config/generate/kubeclient/main.go @@ -41,6 +41,7 @@ func main() { cfg := builder.Config{ RequiredFromFieldPointer: true, + IdFieldInUsage: "id_or_name", } sb := builder.NewSpecBuilder(cfg)