awslabs / seed-farmer

Seed-Farmer is an orchestration tool that works with AWS CodeSeeder and acts as an orchestration tool modeled after GitOps deployments. It has a CommandLine Interface based in Python, leverages modular code deployments defined by declarative manifests, and includes change detection and deployment optimization.
https://seed-farmer.readthedocs.io/en/latest/
Apache License 2.0
43 stars 15 forks source link

feat: Single Module Deploy/Destroy Testing Implementation #623

Closed malachi-constant closed 1 month ago

malachi-constant commented 1 month ago

Plan for Feature

This is targeted towards a work-in-progress branch. After review of the PR it can live in a testing release (e.g. beta) until we determine it's viable to roll into seed-farmer as an official feature.

Usage

The seedfarmer test commands or intended to be used in testing individual modules during development outside of the scope of a typical seedfarmer deployment

Commands

Usage: seedfarmer test [OPTIONS] COMMAND [ARGS]...

  Commands for testing individual module deployments

Options:
  --help  Show this message and exit.

Commands:
  module-deploy   Test single deployment of a module.
  module-destroy  Test single destroy of a module.

Subcommands

module-deploy will deploy a single module to a target account & region. The definition will be pulled from an existing manifest and the module is specified by the --group and --module options. Because this module deployment is not linked with a standard seedfarmer deployment the deployment name will be prefixed with test- by default. This can be modified with the --deployment-name-prefix option.

Usage: seedfarmer test module-deploy [OPTIONS]

  Test single deployment of a module.

Options:
  --debug / --no-debug            Enable detail logging  [default: no-debug]
  -p, --manifest-path TEXT        Path to manifest  [required]
  -g, --group TEXT                The Group Name  [required]
  -m, --module TEXT               The Module Name  [required]
  -d, --deployment-name-prefix TEXT
                                  Prefix to prepend to test deployment name.
                                  Defaults to 'test'
  --profile TEXT                  The AWS profile used to create a session to
                                  assume the toolchain role
  --region TEXT                   The AWS region used to create a session to
                                  assume the toolchain role
Usage: seedfarmer test module-destroy [OPTIONS]

  Test single destroy of a module.

Options:
  --debug / --no-debug           Enable detail logging  [default: no-debug]
  -p, --manifest-path TEXT       Path to manifest  [required]
  -g, --group TEXT               The Group Name  [required]
  -m, --module TEXT              The Module Name  [required]
  --deployment-name-prefix TEXT  Prefix to prepend to test deployment name.
                                 Defaults to 'test'
  --profile TEXT                 The AWS profile used to create a session to
                                 assume the toolchain role
  --region TEXT                  The AWS region used to create a session to
                                 assume the toolchain role

Note: I am open for suggestions on any better name for the top-level command than test By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.