Skip to content

Commit

Permalink
feat(config): add file path option for reading values (#47)
Browse files Browse the repository at this point in the history
* feat(config): add file path option for reading values

* fix: update params pathing

* fix: add plugin name to params path

* fix: remove code cov
  • Loading branch information
Neal authored Jul 31, 2020
1 parent 432be22 commit b9ad5ad
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 57 deletions.
2 changes: 2 additions & 0 deletions DOCS.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ Registry: https://hub.docker.com/r/target/vela-kubernetes

## Usage

_The plugin supports reading all parameters via environment variables or files. Values set as a file take precedence over default values set from the environment._

Sample of applying Kubernetes files:

```yaml
Expand Down
132 changes: 75 additions & 57 deletions cmd/vela-kubernetes/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,109 +40,127 @@ func main() {
app.Flags = []cli.Flag{

&cli.StringFlag{
EnvVars: []string{"PARAMETER_LOG_LEVEL", "VELA_LOG_LEVEL", "KUBERNETES_LOG_LEVEL"},
Name: "log.level",
Usage: "set log level - options: (trace|debug|info|warn|error|fatal|panic)",
Value: "info",
EnvVars: []string{"PARAMETER_LOG_LEVEL", "VELA_LOG_LEVEL", "KUBERNETES_LOG_LEVEL"},
FilePath: string("/vela/parameters/kubernetes/log_level,/vela/secrets/kubernetes/log_level"),
Name: "log.level",
Usage: "set log level - options: (trace|debug|info|warn|error|fatal|panic)",
Value: "info",
},
&cli.StringFlag{
EnvVars: []string{"PARAMETER_VERSION", "VELA_KUBECTL_VERSION", "KUBECTL_VERSION"},
Name: "kubectl.version",
Usage: "set kubectl version for plugin",
EnvVars: []string{"PARAMETER_VERSION", "VELA_KUBECTL_VERSION", "KUBECTL_VERSION"},
FilePath: string("/vela/parameters/kubernetes/kubectl/version,/vela/secrets/kubernetes/kubectl/version"),
Name: "kubectl.version",
Usage: "set kubectl version for plugin",
},

// Apply Flags

&cli.BoolFlag{
EnvVars: []string{"PARAMETER_DRY_RUN", "APPLY_DRY_RUN"},
Name: "apply.dry_run",
Usage: "enables pretending to apply the files",
EnvVars: []string{"PARAMETER_DRY_RUN", "APPLY_DRY_RUN"},
FilePath: string("/vela/parameters/kubernetes/apply/dry_run,/vela/secrets/kubernetes/apply/dry_run"),
Name: "apply.dry_run",
Usage: "enables pretending to apply the files",
},
&cli.StringSliceFlag{
EnvVars: []string{"PARAMETER_FILES", "APPLY_FILES"},
Name: "apply.files",
Usage: "kubernetes files or directories to apply",
EnvVars: []string{"PARAMETER_FILES", "APPLY_FILES"},
FilePath: string("/vela/parameters/kubernetes/apply/files,/vela/secrets/kubernetes/apply/files"),
Name: "apply.files",
Usage: "kubernetes files or directories to apply",
},
&cli.StringFlag{
EnvVars: []string{"PARAMETER_OUTPUT", "APPLY_OUTPUT"},
Name: "apply.output",
Usage: "set output for apply - options: (json|yaml|wide)",
EnvVars: []string{"PARAMETER_OUTPUT", "APPLY_OUTPUT"},
FilePath: string("/vela/parameters/kubernetes/apply/output,/vela/secrets/kubernetes/apply/output"),
Name: "apply.output",
Usage: "set output for apply - options: (json|yaml|wide)",
},

// Config Flags

&cli.StringFlag{
EnvVars: []string{"PARAMETER_ACTION", "CONFIG_ACTION", "KUBE_ACTION"},
Name: "config.action",
Usage: "action to perform against Kubernetes",
EnvVars: []string{"PARAMETER_ACTION", "CONFIG_ACTION", "KUBE_ACTION"},
FilePath: string("/vela/parameters/kubernetes/config/output,/vela/secrets/kubernetes/config/output"),
Name: "config.action",
Usage: "action to perform against Kubernetes",
},
&cli.StringFlag{
EnvVars: []string{"PARAMETER_CLUSTER", "CONFIG_CLUSTER", "KUBE_CLUSTER"},
Name: "config.cluster",
Usage: "kubectl cluster for interacting with Kubernetes",
EnvVars: []string{"PARAMETER_CLUSTER", "CONFIG_CLUSTER", "KUBE_CLUSTER"},
FilePath: string("/vela/parameters/kubernetes/config/cluster,/vela/secrets/kubernetes/config/cluster"),
Name: "config.cluster",
Usage: "kubectl cluster for interacting with Kubernetes",
},
&cli.StringFlag{
EnvVars: []string{"PARAMETER_CONTEXT", "CONFIG_CONTEXT", "KUBE_CONTEXT"},
Name: "config.context",
Usage: "kubectl context for interacting with Kubernetes",
EnvVars: []string{"PARAMETER_CONTEXT", "CONFIG_CONTEXT", "KUBE_CONTEXT"},
FilePath: string("/vela/parameters/kubernetes/config/context,/vela/secrets/kubernetes/config/context"),
Name: "config.context",
Usage: "kubectl context for interacting with Kubernetes",
},
&cli.StringFlag{
EnvVars: []string{"PARAMETER_CONFIG", "CONFIG_FILE", "KUBE_CONFIG"},
Name: "config.file",
Usage: "kubectl configuration for interacting with Kubernetes",
EnvVars: []string{"PARAMETER_CONFIG", "CONFIG_FILE", "KUBE_CONFIG"},
FilePath: string("/vela/parameters/kubernetes/config/file,/vela/secrets/kubernetes/config/file"),
Name: "config.file",
Usage: "kubectl configuration for interacting with Kubernetes",
},
&cli.StringFlag{
EnvVars: []string{"PARAMETER_NAMESPACE", "CONFIG_NAMESPACE", "KUBE_NAMESPACE"},
Name: "config.namespace",
Usage: "kubectl namespace for interacting with Kubernetes",
EnvVars: []string{"PARAMETER_NAMESPACE", "CONFIG_NAMESPACE", "KUBE_NAMESPACE"},
FilePath: string("/vela/parameters/kubernetes/config/namespace,/vela/secrets/kubernetes/config/namespace"),
Name: "config.namespace",
Usage: "kubectl namespace for interacting with Kubernetes",
},
&cli.StringFlag{
EnvVars: []string{"PARAMETER_CONFIG_PATH", "CONFIG_PATH", "KUBE_CONFIG_PATH"},
Name: "config.path",
Usage: "path to kubectl configuration file",
EnvVars: []string{"PARAMETER_CONFIG_PATH", "CONFIG_PATH", "KUBE_CONFIG_PATH"},
FilePath: string("/vela/parameters/kubernetes/config/path,/vela/secrets/kubernetes/config/path"),
Name: "config.path",
Usage: "path to kubectl configuration file",
},

// Patch Flags

&cli.StringFlag{
EnvVars: []string{"PARAMETER_CONTAINERS", "PATCH_CONTAINERS"},
Name: "patch.containers",
Usage: "containers from files to patch",
EnvVars: []string{"PARAMETER_CONTAINERS", "PATCH_CONTAINERS"},
FilePath: string("/vela/parameters/kubernetes/patch/containers,/vela/secrets/kubernetes/patch/containers"),
Name: "patch.containers",
Usage: "containers from files to patch",
},
&cli.BoolFlag{
EnvVars: []string{"PARAMETER_DRY_RUN", "PATCH_DRY_RUN"},
Name: "patch.dry_run",
Usage: "enables pretending to patch the containers",
EnvVars: []string{"PARAMETER_DRY_RUN", "PATCH_DRY_RUN"},
FilePath: string("/vela/parameters/kubernetes/patch/dry_run,/vela/secrets/kubernetes/patch/dry_run"),
Name: "patch.dry_run",
Usage: "enables pretending to patch the containers",
},
&cli.StringSliceFlag{
EnvVars: []string{"PARAMETER_FILES", "PATCH_FILES"},
Name: "patch.files",
Usage: "kubernetes files or directories to patch",
EnvVars: []string{"PARAMETER_FILES", "PATCH_FILES"},
FilePath: string("/vela/parameters/kubernetes/patch/files,/vela/secrets/kubernetes/patch/files"),
Name: "patch.files",
Usage: "kubernetes files or directories to patch",
},
&cli.StringFlag{
EnvVars: []string{"PARAMETER_OUTPUT", "PATCH_OUTPUT"},
Name: "patch.output",
Usage: "set output for patch - options: (json|yaml|wide)",
EnvVars: []string{"PARAMETER_OUTPUT", "PATCH_OUTPUT"},
FilePath: string("/vela/parameters/kubernetes/patch/output,/vela/secrets/kubernetes/patch/output"),
Name: "patch.output",
Usage: "set output for patch - options: (json|yaml|wide)",
},

// Status Flags

&cli.StringSliceFlag{
EnvVars: []string{"PARAMETER_STATUSES", "STATUS_RESOURCES"},
Name: "status.resources",
Usage: "kubernetes resources to watch status on",
EnvVars: []string{"PARAMETER_STATUSES", "STATUS_RESOURCES"},
FilePath: string("/vela/parameters/kubernetes/status/resources,/vela/secrets/kubernetes/status/resources"),
Name: "status.resources",
Usage: "kubernetes resources to watch status on",
},
&cli.DurationFlag{
EnvVars: []string{"PARAMETER_TIMEOUT", "STATUS_TIMEOUT"},
Name: "status.timeout",
Usage: "maximum duration to watch status on kubernetes resources",
Value: 5 * time.Minute,
EnvVars: []string{"PARAMETER_TIMEOUT", "STATUS_TIMEOUT"},
FilePath: string("/vela/parameters/kubernetes/status/timeout,/vela/secrets/kubernetes/status/timeout"),
Name: "status.timeout",
Usage: "maximum duration to watch status on kubernetes resources",
Value: 5 * time.Minute,
},
&cli.BoolFlag{
EnvVars: []string{"PARAMETER_WATCH", "STATUS_WATCH"},
Name: "status.watch",
Usage: "enables watching the status until the rollout completes",
Value: true,
EnvVars: []string{"PARAMETER_WATCH", "STATUS_WATCH"},
FilePath: string("/vela/parameters/kubernetes/status/watch,/vela/secrets/kubernetes/status/watch"),
Name: "status.watch",
Usage: "enables watching the status until the rollout completes",
Value: true,
},
}

Expand Down

0 comments on commit b9ad5ad

Please sign in to comment.