refactor: cobra flag binding [compute]#679
Open
avirtopeanu-ionos wants to merge 6 commits into
Open
Conversation
There was a problem hiding this comment.
Pull request overview
Refactors compute subcommands to read flag values directly from Cobra/pflag (instead of Viper), including shell completion closures, while adding a lenient typed flag accessor to preserve Viper-like coercion behavior.
Changes:
- Added a
core.flagstyped wrapper around*pflag.FlagSetwith lenient getters (string/bool/int/etc.) and exposed it viac.Flags()/core.FlagsOf(...). - Updated many
computecommands and completion functions to read flags via Cobra/pflag (droppingcore.GetFlagName+ Viper lookups). - Updated/added tests to set flags via Cobra (
cfg.SetFlag(...)) and added a regression test for deprecated->canonical flag aliasing.
Reviewed changes
Copilot reviewed 183 out of 226 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| internal/core/flags.go | Introduces typed, lenient flag getters and Flags() accessors for commands/configs. |
| internal/core/command_builder.go | Refactors deprecated-flag aliasing to operate on Cobra flags directly. |
| internal/core/command_builder_test.go | Adds regression test ensuring deprecated flag aliasing is visible via c.Flags(). |
| commands/compute/volume/update.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/volume/get.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/volume/delete.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/user/s3key.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/user/run_s3key.go | Uses c.Flags() getters instead of Viper for runtime flag access. |
| commands/compute/template/template_test.go | Updates tests to set flags via Cobra (cfg.SetFlag). |
| commands/compute/template/run_template.go | Uses c.Flags() getters instead of Viper. |
| commands/compute/snapshot/restore.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/snapshot/create.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/share/update.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/share/get.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/share/delete.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/volume/run.go | Uses c.Flags() getters instead of Viper. |
| commands/compute/server/volume/list.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/volume/get.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/volume/detach.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/volume/attach.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/update.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/server/token/run_token.go | Uses c.Flags() getters instead of Viper. |
| commands/compute/server/token/get.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/suspend.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/stop.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/start.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/resume.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/reboot.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/gpu/run_gpu.go | Uses c.Flags() getters instead of Viper. |
| commands/compute/server/gpu/list.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/gpu/get.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/delete.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/create.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/console/run_console.go | Uses c.Flags() getters instead of Viper. |
| commands/compute/server/console/get.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/console/console_test.go | Updates tests to set flags via Cobra (cfg.SetFlag). |
| commands/compute/server/cdrom/list.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/cdrom/get.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/cdrom/detach.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/server/cdrom/attach.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/resource/run_resource.go | Uses c.Flags() getters instead of Viper (including Changed(...)). |
| commands/compute/resource/resource_test.go | Updates tests to set flags via Cobra (cfg.SetFlag). |
| commands/compute/request/run_request.go | Uses c.Flags() getters instead of Viper (incl. timeout read). |
| commands/compute/nic/update.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/nic/list.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/nic/get.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/nic/delete.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/networkloadbalancer/update.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/networkloadbalancer/rule/update.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/networkloadbalancer/rule/target/remove.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/networkloadbalancer/rule/target/list.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/networkloadbalancer/rule/target/add.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/networkloadbalancer/rule/list.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/networkloadbalancer/rule/get.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/networkloadbalancer/rule/delete.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/networkloadbalancer/rule/create.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/networkloadbalancer/get.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/networkloadbalancer/flowlog/update.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/networkloadbalancer/flowlog/list.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/networkloadbalancer/flowlog/get.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/networkloadbalancer/flowlog/delete.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/networkloadbalancer/flowlog/create.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/networkloadbalancer/delete.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/natgateway/update.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/natgateway/rule/update.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/natgateway/rule/list.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/natgateway/rule/get.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/natgateway/rule/delete.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/natgateway/rule/create.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/natgateway/lan/run_natgateway_lan.go | Uses c.Flags() getters instead of Viper (incl. Changed(...)). |
| commands/compute/natgateway/lan/remove.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/natgateway/lan/list.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/natgateway/lan/add.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/natgateway/get.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/natgateway/flowlog/update.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/natgateway/flowlog/run_natgateway_flowlog.go | Uses c.Flags() getters instead of Viper. |
| commands/compute/natgateway/flowlog/list.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/natgateway/flowlog/get.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/natgateway/flowlog/delete.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/natgateway/flowlog/create.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/natgateway/delete.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/location/run_location.go | Uses c.Flags() getters instead of Viper. |
| commands/compute/location/run_cpu.go | Uses c.Flags() getters instead of Viper. |
| commands/compute/location/location_test.go | Updates tests to set flags via Cobra (cfg.SetFlag). |
| commands/compute/location/cpu_test.go | Updates tests to set flags via Cobra (cfg.SetFlag). |
| commands/compute/loadbalancer/update.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/loadbalancer/nic/run.go | Uses c.Flags() getters instead of Viper. |
| commands/compute/loadbalancer/nic/list.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/loadbalancer/nic/get.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/loadbalancer/nic/detach.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/loadbalancer/nic/attach.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/loadbalancer/get.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/loadbalancer/delete.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/lan/update.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/lan/get.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/lan/delete.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/label/run_label.go | Uses c.Flags() getters instead of Viper (incl. predicates). |
| commands/compute/label/remove.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/label/list.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/label/get.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/label/add.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/k8s/nodepool/update.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/k8s/nodepool/lan/remove.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/k8s/nodepool/lan/list.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/k8s/nodepool/lan/add.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/k8s/nodepool/get.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/k8s/nodepool/delete.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/k8s/nodepool/create.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/k8s/node/run_k8s_node.go | Uses c.Flags() getters instead of Viper. |
| commands/compute/k8s/node/recreate.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/k8s/node/list.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/k8s/node/get.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/k8s/node/delete.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/k8s/kubeconfig/run_k8s_kubeconfig.go | Uses c.Flags() getters instead of Viper. |
| commands/compute/k8s/kubeconfig/k8s_kubeconfig_test.go | Updates tests to set flags via Cobra (cfg.SetFlag). |
| commands/compute/k8s/cluster/update.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/ipfailover/run_ipfailover.go | Uses c.Flags() getters instead of Viper. |
| commands/compute/ipfailover/remove.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/ipfailover/list.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/ipfailover/add.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/ipconsumer/run_ipconsumer.go | Uses c.Flags() getters instead of Viper. |
| commands/compute/ipconsumer/ipconsumer_test.go | Updates tests to set flags via Cobra (cfg.SetFlag). |
| commands/compute/ipblock/run_ipblock.go | Uses c.Flags() getters / Changed(...) instead of Viper. |
| commands/compute/image/run_image.go | Uses c.Flags() getters / Changed(...) instead of Viper. |
| commands/compute/helpers/flowlog.go | Uses c.Flags() getters / Changed(...) instead of Viper. |
| commands/compute/group/user.go | Uses Cobra-based flag reads in completion (drops Viper). |
| commands/compute/group/run.go | Uses c.Flags() getters instead of Viper. |
| commands/compute/flowlog/run_flowlog.go | Uses c.Flags() getters instead of Viper. |
| commands/compute/flowlog/list.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/flowlog/get.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/flowlog/delete.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/flowlog/create.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/firewallrule/update.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/firewallrule/list.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/firewallrule/get.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/firewallrule/delete.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/firewallrule/create.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/datacenter/run_datacenter.go | Uses c.Flags() getters / Changed(...) instead of Viper. |
| commands/compute/contract/run_contract.go | Uses c.Flags() getters / Changed(...) instead of Viper. |
| commands/compute/backupunit/run_backupunit.go | Uses c.Flags() getters / Changed(...) instead of Viper. |
| commands/compute/applicationloadbalancer/update.go | Uses core.FlagsOf(...) in completion closures (drops Viper). |
| commands/compute/applicationloadbalancer/rule/update.go | Uses core.FlagsOf(...) in completion closures (drops Viper). |
| commands/compute/applicationloadbalancer/rule/list.go | Uses core.FlagsOf(...) in completion closures (drops Viper). |
| commands/compute/applicationloadbalancer/rule/httprule/remove.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/applicationloadbalancer/rule/httprule/list.go | Uses core.FlagsOf(...) in completion closures (drops Viper). |
| commands/compute/applicationloadbalancer/rule/httprule/add.go | Uses core.FlagsOf(...) in completion closures (drops Viper). |
| commands/compute/applicationloadbalancer/rule/get.go | Uses core.FlagsOf(...) in completion closures (drops Viper). |
| commands/compute/applicationloadbalancer/rule/delete.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/applicationloadbalancer/rule/create.go | Uses core.FlagsOf(...) in completion closures (drops Viper). |
| commands/compute/applicationloadbalancer/get.go | Uses core.FlagsOf(...) in completion closures (drops Viper). |
| commands/compute/applicationloadbalancer/flowlog/update.go | Uses core.FlagsOf(...) in completion closures (drops Viper). |
| commands/compute/applicationloadbalancer/flowlog/list.go | Uses core.FlagsOf(...) in completion closures (drops Viper). |
| commands/compute/applicationloadbalancer/flowlog/get.go | Uses core.FlagsOf(...) in completion closures (drops Viper). |
| commands/compute/applicationloadbalancer/flowlog/delete.go | Uses Cobra-based flag reads in completions (drops Viper). |
| commands/compute/applicationloadbalancer/flowlog/create.go | Uses core.FlagsOf(...) in completion closures (drops Viper). |
| commands/compute/applicationloadbalancer/delete.go | Uses Cobra-based flag reads in completion (drops Viper). |
| CHANGELOG.md | Documents the compute flag-binding refactor in the changelog. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
d746cd0 to
c12b387
Compare
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




Refactored
computecommand flag access to read flag values directly from cobra/pflag instead of through viper. Removes the namespaced-key workaround (core.GetFlagName) for all compute commands. Behaviour is unchanged: flag reads coerce types exactly as before, and global flags (--force,--wait, etc.) are unaffected.