99designs/iamy

Terminology: dump and load are unclear

pda opened this issue · 9 comments

pda commented

It's very unclear what dump and load mean. I gather dump fetches the current data from upstream and writes it to local files, and load reads data from local files and figures out the commands to push that to upstream.

Instead of dump, how about pull, fetch or download.
Instead of load, how about push, publish or upload.

(I noticed load generates aws commands but doesn't run them. That might just mean the name should be generate-push-commands.)

I do agree this could be a lot clearer.

dump-to-yaml and generate-sync-cmds were the subcommands that were being used up to a few weeks ago, I'd still be for using those sub commands as they're pretty unambiguous

Thoughts @lox ?

lox commented

I like pull and push personally. I'd have push actually execute the commands unless you had --dry-run.

pda commented

👍

I'm hesitant to allow iamy push to simply run and overwrite whatever you have on AWS. Seems too dangerous, especially because it's very easy for your local yaml to be out of sync with AWS.

It could result in users, and groups getting deleted unintentionally

What about iamy sync-cmds and iamy sync-cmds --exec ?

pda commented

Ideal would be a diff and confirmation; iamy push fetches upstream state into memory, calculates the differences, presents it as a concise diff, prompts to apply the diff.

I'm against calling a one-way process “sync”.

Yep ok - I'll make push interactive and maybe have push -f or push -y for non-interactive

I'm against calling a one-way process “sync”

Why? sync operations are normally one way e.g. rsync. You're syncing the destination with your source by applying a diff

pda commented

I guess rsync is one way at a time, although it can sync in either direction. iamy sync iam://something localdir/ vs iamy sync localdir/ iam://something would be equivalent. But when the direction of the operation is fixed, a word describing that direction (push vs pull) is much clearer.

You're syncing the destination with your source by applying a diff

But iamy sync doesn't specify which is the source and which is the destination.

Fixed in #9