`terraspace state mv` doesn't work
vsinha opened this issue · 0 comments
Checklist
- Upgrade Terraspace: Are you using the latest version of Terraspace? This allows Terraspace to fix issues fast. There's an Upgrading Guide: https://terraspace.cloud/docs/misc/upgrading/
- Reproducibility: Are you reporting a bug others will be able to reproduce and not asking a question. If you're unsure or want to ask a question, do so on https://community.boltops.com
- Code sample: Have you put together a code sample to reproduce the issue and make it available? Code samples help speed up fixes dramatically. If it's an easily reproducible issue, then code samples are not needed. If you're unsure, please include a code sample.
My Environment
Software | Version |
---|---|
Operating System | M1 MacOS darwin_arm64 |
Terraform | 1.3.7 |
Terraspace | 2.2.3 |
Ruby | 3.2.0 |
When renaming an existing stack foo
, I've tried to use the terraspace wrapper of the terraform state mv
command. I believe terraspace is not properly parsing arguments for this command, especially since state mv
in particular requires both SOURCE
and DESTINATION
parameters.
You can see in the example below that the command terraspace ultimately invokes is terraform state mv bar
, which has dropped the foo
parameter.
I also think the docs here for terraspace state mv
are wrong, as they also presume mv
takes only a single argument ("demo", in the example).
❯ terraspace state mv foo bar
Building .terraspace-cache/us-gov-west-1/dev/stacks/foo
Loading dev providers
Current directory: .terraspace-cache/us-gov-west-1/dev/stacks/foo
=> terraform state mv bar
Usage: terraform [global options] state mv [options] SOURCE DESTINATION
This command will move an item matched by the address given to the
destination address. This command can also move to a destination address
in a completely different state file.
This can be used for simple resource renaming, moving items to and from
a module, moving entire modules, and more. And because this command can also
move data to a completely new state, it can also be used for refactoring
one configuration into multiple separately managed Terraform configurations.
This command will output a backup copy of the state prior to saving any
changes. The backup cannot be disabled. Due to the destructive nature
of this command, backups are required.
If you're moving an item to a different state file, a backup will be created
for each state file.
Options:
-dry-run If set, prints out what would've been moved but doesn't
actually move anything.
-lock=false Don't hold a state lock during the operation. This is
dangerous if others might concurrently run commands
against the same workspace.
-lock-timeout=0s Duration to retry a state lock.
-ignore-remote-version A rare option used for the remote backend only. See
the remote backend documentation for more information.
-state, state-out, and -backup are legacy options supported for the local
backend only. For more information, see the local backend's documentation.
Exactly two arguments expected.
My guess is that there's a bug in the argument parsing for this command, and it's infrequently used enough that it hasn't been encountered and reported yet.