From 7e8606e9a480152308875ab78a6fa7aa24524a29 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Sun, 11 Sep 2022 17:19:32 +0300 Subject: [PATCH 01/44] Fix automation. --- .github/PULL_REQUEST_TEMPLATE.md | 5 +++ .github/labeler.yaml | 20 +++++++++++ .github/release-drafter.yaml | 35 +++++++++++++++++++ .github/workflows/changelog-from-release.yaml | 14 ++++++++ .github/workflows/draft-release.yaml | 19 ++++++++++ .github/workflows/update-labels.yaml | 14 ++++++++ .goreleaser.yml | 8 ----- scripts/changelog-links.sh | 31 ---------------- 8 files changed, 107 insertions(+), 39 deletions(-) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/labeler.yaml create mode 100644 .github/release-drafter.yaml create mode 100644 .github/workflows/changelog-from-release.yaml create mode 100644 .github/workflows/draft-release.yaml create mode 100644 .github/workflows/update-labels.yaml delete mode 100755 scripts/changelog-links.sh diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..40fcca8d --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,5 @@ +## What + +## Why + +## Notes diff --git a/.github/labeler.yaml b/.github/labeler.yaml new file mode 100644 index 00000000..43dbfc41 --- /dev/null +++ b/.github/labeler.yaml @@ -0,0 +1,20 @@ +source: +- 'client/**/*' +- 'codefresh/**/*' +- '*.go' +- '*.mod' +- '*.sum' + +docs: +- README.md +- docs/**/* +- examples/**/* +- tf_modules/**/* +- CHANGELOG.md + +automation: +- scripts/**/* +- .github/**/* +- codefresh.yml +- .goreleaser.yml +- GNUmakefile \ No newline at end of file diff --git a/.github/release-drafter.yaml b/.github/release-drafter.yaml new file mode 100644 index 00000000..2db37dc3 --- /dev/null +++ b/.github/release-drafter.yaml @@ -0,0 +1,35 @@ +name-template: "v$RESOLVED_VERSION" +tag-template: "v$RESOLVED_VERSION" +categories: + - title: "🚀 Features" + labels: + - "feature" + - "enhancement" + - title: "🐛 Bug Fixes" + labels: + - "fix" + - "bugfix" + - "bug" + - title: "🧰 Maintenance" + label: "chore" +change-template: "- $TITLE @$AUTHOR (#$NUMBER)" +change-title-escapes: '\<*_&' +version-resolver: + major: + labels: + - "major" + minor: + labels: + - "minor" + - "feature" + - "enhancement" + patch: + labels: + - "patch" + - "fix" + - "bugfix" + - "bug" + default: patch +template: | + ## Changes + $CHANGES \ No newline at end of file diff --git a/.github/workflows/changelog-from-release.yaml b/.github/workflows/changelog-from-release.yaml new file mode 100644 index 00000000..1e2d1f95 --- /dev/null +++ b/.github/workflows/changelog-from-release.yaml @@ -0,0 +1,14 @@ +name: "Changelog from Release" + +on: + release: + types: [published] + +jobs: + update_changelog: + runs-on: ubuntu-latest + steps: + - uses: rhysd/changelog-from-release/action@v3 + with: + file: CHANGELOG.md + github_token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/draft-release.yaml b/.github/workflows/draft-release.yaml new file mode 100644 index 00000000..6ebb359a --- /dev/null +++ b/.github/workflows/draft-release.yaml @@ -0,0 +1,19 @@ +name: Draft Release + +on: + push: + branches: + - main + pull_request: + types: [opened, reopened, synchronize] + +jobs: + update_release_draft: + runs-on: ubuntu-latest + steps: + - uses: release-drafter/release-drafter@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + publish: false + config-name: release-drafter.yaml \ No newline at end of file diff --git a/.github/workflows/update-labels.yaml b/.github/workflows/update-labels.yaml new file mode 100644 index 00000000..680f9d18 --- /dev/null +++ b/.github/workflows/update-labels.yaml @@ -0,0 +1,14 @@ +name: "Pull Request Labeler" +on: +- pull_request_target + +jobs: + triage: + permissions: + contents: read + pull-requests: write + runs-on: ubuntu-latest + steps: + - uses: actions/labeler@v4 + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" \ No newline at end of file diff --git a/.goreleaser.yml b/.goreleaser.yml index d3531382..a6d8bd2f 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -32,12 +32,4 @@ signs: - "${signature}" - "--detach-sign" - "${artifact}" -release: - # draft: true -changelog: - sort: asc - filters: - exclude: - - '^docs:' - - '^test:' diff --git a/scripts/changelog-links.sh b/scripts/changelog-links.sh deleted file mode 100755 index 8cd81b43..00000000 --- a/scripts/changelog-links.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -# This script rewrites [GH-nnnn]-style references in the CHANGELOG.md file to -# be Markdown links to the given github issues. -# -# This is run during releases so that the issue references in all of the -# released items are presented as clickable links, but we can just use the -# easy [GH-nnnn] shorthand for quickly adding items to the "Unrelease" section -# while merging things between releases. - -set -e - -if [[ ! -f CHANGELOG.md ]]; then - echo "ERROR: CHANGELOG.md not found in pwd." - echo "Please run this from the root of the terraform provider repository" - exit 1 -fi - -if [[ `uname` == "Darwin" ]]; then - echo "Using BSD sed" - SED="sed -i.bak -E -e" -else - echo "Using GNU sed" - SED="sed -i.bak -r -e" -fi - -PROVIDER_URL="https:\/\/github.com\/terraform-providers\/terraform-provider-aws\/issues" - -$SED "s/GH-([0-9]+)/\[#\1\]\($PROVIDER_URL\/\1\)/g" -e 's/\[\[#(.+)([0-9])\)]$/(\[#\1\2))/g' CHANGELOG.md - -rm CHANGELOG.md.bak From 0d8dca27f912e00ebe09a1ff7b1157d55dd3047e Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Mon, 12 Sep 2022 13:43:17 +0300 Subject: [PATCH 02/44] Deprecate trigger block. --- codefresh/resource_pipeline.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/codefresh/resource_pipeline.go b/codefresh/resource_pipeline.go index 1c39253d..bb7d7150 100644 --- a/codefresh/resource_pipeline.go +++ b/codefresh/resource_pipeline.go @@ -117,8 +117,9 @@ func resourcePipeline() *schema.Resource { }, }, "trigger": { - Type: schema.TypeList, - Optional: true, + Type: schema.TypeList, + Deprecated: "Use the codefresh_git_trigger resource instead", + Optional: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "name": { From 79235738bd2b44a3a28819e9ce26a2779e1ea095 Mon Sep 17 00:00:00 2001 From: Yonatan Koren Date: Mon, 12 Sep 2022 13:48:20 +0300 Subject: [PATCH 03/44] Rename labeler.yaml to labeler.yml --- .github/{labeler.yaml => labeler.yml} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .github/{labeler.yaml => labeler.yml} (94%) diff --git a/.github/labeler.yaml b/.github/labeler.yml similarity index 94% rename from .github/labeler.yaml rename to .github/labeler.yml index 43dbfc41..58320d58 100644 --- a/.github/labeler.yaml +++ b/.github/labeler.yml @@ -17,4 +17,4 @@ automation: - .github/**/* - codefresh.yml - .goreleaser.yml -- GNUmakefile \ No newline at end of file +- GNUmakefile From 78a1a9c1a4d01f8e45f2f0a42b54dc1a5e2c1ef4 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Mon, 12 Sep 2022 13:47:24 +0300 Subject: [PATCH 04/44] Fix labeler config file extension. --- .github/{labeler.yaml => labeler.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/{labeler.yaml => labeler.yml} (100%) diff --git a/.github/labeler.yaml b/.github/labeler.yml similarity index 100% rename from .github/labeler.yaml rename to .github/labeler.yml From 2cf98fbfabe72f85f804e2de22fa3890f92a6aa1 Mon Sep 17 00:00:00 2001 From: Yonatan Koren Date: Mon, 12 Sep 2022 13:52:57 +0300 Subject: [PATCH 05/44] Update draft-release.yaml --- .github/workflows/draft-release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/draft-release.yaml b/.github/workflows/draft-release.yaml index 6ebb359a..7cb841a9 100644 --- a/.github/workflows/draft-release.yaml +++ b/.github/workflows/draft-release.yaml @@ -3,7 +3,7 @@ name: Draft Release on: push: branches: - - main + - master pull_request: types: [opened, reopened, synchronize] @@ -16,4 +16,4 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: publish: false - config-name: release-drafter.yaml \ No newline at end of file + config-name: release-drafter.yaml From fee74b66e2cfa52eb651c27874d93ee348ce7c30 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Mon, 12 Sep 2022 15:22:24 +0300 Subject: [PATCH 06/44] Fix changelog automation. --- .github/workflows/changelog-from-release.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/changelog-from-release.yaml b/.github/workflows/changelog-from-release.yaml index 1e2d1f95..44dba5bc 100644 --- a/.github/workflows/changelog-from-release.yaml +++ b/.github/workflows/changelog-from-release.yaml @@ -2,13 +2,17 @@ name: "Changelog from Release" on: release: - types: [published] + types: [published, released] jobs: update_changelog: runs-on: ubuntu-latest steps: + - uses: actions/checkout@v3 + with: + ref: master - uses: rhysd/changelog-from-release/action@v3 with: file: CHANGELOG.md - github_token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + github_token: ${{ secrets.GITHUB_TOKEN }} + commit_summary_template: 'Update CHANGELOG.md for %s' \ No newline at end of file From e85d76034cad70f7e9bb8d02eee36bccc32704e7 Mon Sep 17 00:00:00 2001 From: korenyoni Date: Mon, 12 Sep 2022 12:26:09 +0000 Subject: [PATCH 07/44] Update CHANGELOG.md for "v0.1.1" This commit was created by changelog-from-release in 'Changelog from Release' CI workflow --- CHANGELOG.md | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 91230a3b..e124adbc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,25 @@ -# Changelog + +# [v0.1.1](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.1) - 12 Sep 2022 -## [1.0.0 (Unreleased)](https://github.com/codefresh-io/terraform-provider-codefresh/tree/HEAD) +## Changes +- Fix: changelog automation [@korenyoni](https://github.com/korenyoni) ([#3](https://github.com/korenyoni/terraform-provider-codefresh/issues/3)) -[Full Changelog](https://github.com/codefresh-io/terraform-provider-codefresh/compare/17fe7e1b0003bda492682d06ba1917cae91d6faf...HEAD) + +[Changes][v0.1.1] + + + +# [v0.1.0](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.0) - 12 Sep 2022 + +## Changes +- Fix: Deprecate Trigger Block [@korenyoni](https://github.com/korenyoni) ([#2](https://github.com/korenyoni/terraform-provider-codefresh/issues/2)) +- Fix: Misc Automation Fixes [@korenyoni](https://github.com/korenyoni) ([#1](https://github.com/korenyoni/terraform-provider-codefresh/issues/1)) + + +[Changes][v0.1.0] + + +[v0.1.1]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.0...v0.1.1 +[v0.1.0]: https://github.com/korenyoni/terraform-provider-codefresh/tree/v0.1.0 + + From e1a681a59b9b90c35e05d5cc1e028c96d8ff60c1 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Wed, 14 Sep 2022 14:45:52 +0300 Subject: [PATCH 08/44] WIP: initial commit. --- README.md | 4 +- client/hermes_trigger.go | 82 +++++++++++++++++ client/user.go | 18 ++-- codefresh/provider.go | 25 +++--- codefresh/resource_pipeline_cron_trigger.go | 99 +++++++++++++++++++++ docs/resources/pipeline.md | 2 +- examples/pipelines/outputs.tf | 3 + examples/pipelines/versions.tf | 8 ++ examples/triggers/main.tf | 15 ++++ examples/triggers/terraform.tfvars | 2 + examples/triggers/vars.tf | 8 ++ examples/triggers/versions.tf | 8 ++ go.mod | 2 +- go.sum | 26 ++++++ 14 files changed, 277 insertions(+), 25 deletions(-) create mode 100644 client/hermes_trigger.go create mode 100644 codefresh/resource_pipeline_cron_trigger.go create mode 100644 examples/pipelines/outputs.tf create mode 100644 examples/pipelines/versions.tf create mode 100644 examples/triggers/main.tf create mode 100644 examples/triggers/terraform.tfvars create mode 100644 examples/triggers/vars.tf create mode 100644 examples/triggers/versions.tf diff --git a/README.md b/README.md index be3d676c..0d2993ca 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ terraform { ``` -## [Documentations](./docs) +## [Documentation](./docs) ## [Examples](./examples) @@ -79,7 +79,7 @@ export CODEFRESH_API_KEY='xyz' ## License -Copyright 2020 Codefresh. +Copyright 2022 Codefresh. The Codefresh Provider is available under [MPL2.0 license](./LICENSE). diff --git a/client/hermes_trigger.go b/client/hermes_trigger.go new file mode 100644 index 00000000..ad7ee094 --- /dev/null +++ b/client/hermes_trigger.go @@ -0,0 +1,82 @@ +package client + +import ( + "fmt" +) + +type HermesTrigger struct { + Event string `json:"event,omitempty"` + Pipeline string `json:"pipeline,omitempty"` + EventData string `json:"event-data,omitempty"` +} + +type EventData struct { + Uri string `json:"uri"` + Type string `json:"type"` + Kind string `json:"kind"` + Account string `json:"account"` + Secret string `json:"secret"` +} + +func (client *Client) GetHermesTriggerByEvent(event string) (*HermesTrigger, error) { + + fullPath := fmt.Sprintf("/hermes/triggers/%s", event) + opts := RequestOptions{ + Path: fullPath, + Method: "GET", + } + + resp, err := client.RequestAPI(&opts) + + if err != nil { + return nil, err + } + + var hermesTrigger HermesTrigger + + err = DecodeResponseInto(resp, &hermesTrigger) + if err != nil { + return nil, err + } + + return &hermesTrigger, nil +} + +func (client *Client) CreateHermesTriggerByEventAndPipeline(event string, pipeline string) (*HermesTrigger, error) { + + fullPath := fmt.Sprintf("/hermes/triggers/%s/%s", event, pipeline) + opts := RequestOptions{ + Path: fullPath, + Method: "POST", + } + + resp, err := client.RequestAPI(&opts) + + if err != nil { + return nil, err + } + + var respHermesTrigger HermesTrigger + err = DecodeResponseInto(resp, &respHermesTrigger) + if err != nil { + return nil, err + } + + return &respHermesTrigger, nil +} + +func (client *Client) DeleteHermesTriggerByEventAndPipeline(event string, pipeline string) error { + fullPath := fmt.Sprintf("/hermes/triggers/%s/%s", event, pipeline) + opts := RequestOptions{ + Path: fullPath, + Method: "DELETE", + } + + _, err := client.RequestAPI(&opts) + + if err != nil { + return err + } + + return nil +} diff --git a/client/user.go b/client/user.go index d6b262f7..ba1c6435 100644 --- a/client/user.go +++ b/client/user.go @@ -264,15 +264,15 @@ func (client *Client) DeleteUser(userName string) error { Method: "DELETE", } - // The API will return a 500 error if the user cannot be found - // In this case the DeleteUser function should not return an error. - // Return error only if the body of the return message does not contain "User does not exist" - res, err := client.RequestAPI(&opts) - if err != nil { - if !strings.Contains(string(res), "User does not exist") { - return err - } - } + // The API will return a 500 error if the user cannot be found + // In this case the DeleteUser function should not return an error. + // Return error only if the body of the return message does not contain "User does not exist" + res, err := client.RequestAPI(&opts) + if err != nil { + if !strings.Contains(string(res), "User does not exist") { + return err + } + } return nil } diff --git a/codefresh/provider.go b/codefresh/provider.go index 4e2b8c0e..f388e816 100644 --- a/codefresh/provider.go +++ b/codefresh/provider.go @@ -38,18 +38,19 @@ func Provider() *schema.Provider { "codefresh_registry": dataSourceRegistry(), }, ResourcesMap: map[string]*schema.Resource{ - "codefresh_account": resourceAccount(), - "codefresh_account_admins": resourceAccountAdmins(), - "codefresh_api_key": resourceApiKey(), - "codefresh_context": resourceContext(), - "codefresh_registry": resourceRegistry(), - "codefresh_idp_accounts": resourceIDPAccounts(), - "codefresh_permission": resourcePermission(), - "codefresh_pipeline": resourcePipeline(), - "codefresh_project": resourceProject(), - "codefresh_step_types": resourceStepTypes(), - "codefresh_user": resourceUser(), - "codefresh_team": resourceTeam(), + "codefresh_account": resourceAccount(), + "codefresh_account_admins": resourceAccountAdmins(), + "codefresh_api_key": resourceApiKey(), + "codefresh_context": resourceContext(), + "codefresh_registry": resourceRegistry(), + "codefresh_idp_accounts": resourceIDPAccounts(), + "codefresh_permission": resourcePermission(), + "codefresh_pipeline": resourcePipeline(), + "codefresh_pipeline_cron_trigger": resourcePipelineCronTrigger(), + "codefresh_project": resourceProject(), + "codefresh_step_types": resourceStepTypes(), + "codefresh_user": resourceUser(), + "codefresh_team": resourceTeam(), }, ConfigureFunc: configureProvider, } diff --git a/codefresh/resource_pipeline_cron_trigger.go b/codefresh/resource_pipeline_cron_trigger.go new file mode 100644 index 00000000..b72481a8 --- /dev/null +++ b/codefresh/resource_pipeline_cron_trigger.go @@ -0,0 +1,99 @@ +package codefresh + +import ( + "log" + + cfClient "github.com/codefresh-io/terraform-provider-codefresh/client" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func resourcePipelineCronTrigger() *schema.Resource { + return &schema.Resource{ + Create: resourcePipelineCronTriggerCreate, + Read: resourcePipelineCronTriggerRead, + Update: resourcePipelineCronTriggerUpdate, + Delete: resourcePipelineCronTriggerDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "event": { + Type: schema.TypeString, + Required: true, + }, + "pipeline": { + Type: schema.TypeString, + Required: true, + }, + }, + } +} + +func resourcePipelineCronTriggerCreate(d *schema.ResourceData, meta interface{}) error { + client := meta.(*cfClient.Client) + + hermesTrigger := *mapResourceToPipelineCronTrigger(d) + + _, err := client.CreateHermesTriggerByEventAndPipeline(hermesTrigger.Event, hermesTrigger.Pipeline) + if err != nil { + return err + } + + return nil +} + +func resourcePipelineCronTriggerRead(d *schema.ResourceData, meta interface{}) error { + + client := meta.(*cfClient.Client) + + event := d.Id() + if event == "" { + d.SetId("") + return nil + } + + hermesTrigger, err := client.GetHermesTriggerByEvent(event) + if err != nil { + return err + } + + err = mapPipelineCronTriggerToResource(hermesTrigger, d) + if err != nil { + return err + } + + return nil +} + +func resourcePipelineCronTriggerUpdate(d *schema.ResourceData, meta interface{}) error { + return resourcePipelineCronTriggerCreate(d, meta) +} + +func resourcePipelineCronTriggerDelete(d *schema.ResourceData, meta interface{}) error { + client := meta.(*cfClient.Client) + + hermesTrigger := *mapResourceToPipelineCronTrigger(d) + + err := client.DeleteHermesTriggerByEventAndPipeline(hermesTrigger.Event, hermesTrigger.Pipeline) + if err != nil { + log.Printf("Failed to delete hermes trigger: %s", err) + } + + return nil +} + +func mapPipelineCronTriggerToResource(hermesTrigger *cfClient.HermesTrigger, d *schema.ResourceData) error { + + d.SetId(hermesTrigger.Event) + return nil +} + +func mapResourceToPipelineCronTrigger(d *schema.ResourceData) *cfClient.HermesTrigger { + + hermesTrigger := &cfClient.HermesTrigger{ + Event: d.Get("event").(string), + Pipeline: d.Get("pipeline").(string), + } + + return hermesTrigger +} diff --git a/docs/resources/pipeline.md b/docs/resources/pipeline.md index de674bdf..20af54dc 100644 --- a/docs/resources/pipeline.md +++ b/docs/resources/pipeline.md @@ -139,7 +139,7 @@ resource "codefresh_pipeline" "test" { - `context` - (Optional) Codefresh Git context. - `commit_status_title` - (Optional) The commit status title pushed to the GIT version control system. - `variables` - (Optional) Trigger variables. -- `disabled` - (Optional) Boolean. If false, trigger will never be activated. +- `disabled` - (Optional) Boolean. If true, trigger will never be activated. - `pull_request_allow_fork_events` - (Optional) Boolean. If this trigger is also applicable to Git forks. - `contexts` - (Optional) A list of strings representing the contexts ([shared_configuration](https://codefresh.io/docs/docs/configure-ci-cd-pipeline/shared-configuration/)) to be loaded when the trigger is executed - `runtime_environment` - (Optional) A collection of `runtime_environment` blocks as documented below. diff --git a/examples/pipelines/outputs.tf b/examples/pipelines/outputs.tf new file mode 100644 index 00000000..ba236a45 --- /dev/null +++ b/examples/pipelines/outputs.tf @@ -0,0 +1,3 @@ +output "id" { + value = codefresh_pipeline.test.id +} \ No newline at end of file diff --git a/examples/pipelines/versions.tf b/examples/pipelines/versions.tf new file mode 100644 index 00000000..2e247b4c --- /dev/null +++ b/examples/pipelines/versions.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + codefresh = { + source = "codefresh-io/codefresh" + version = "~> 0.0" + } + } +} \ No newline at end of file diff --git a/examples/triggers/main.tf b/examples/triggers/main.tf new file mode 100644 index 00000000..4add488f --- /dev/null +++ b/examples/triggers/main.tf @@ -0,0 +1,15 @@ +provider "codefresh" { + api_url = var.api_url + token = var.token +} + +module "pipeline" { + source = "../pipelines" + api_url = var.api_url + token = var.token +} + +resource "codefresh_pipeline_cron_trigger" default { + event = "registry:dockerhub:korenyoni:codefresh-web-app:push:47e5d8141593" + pipeline = module.pipeline.id +} \ No newline at end of file diff --git a/examples/triggers/terraform.tfvars b/examples/triggers/terraform.tfvars new file mode 100644 index 00000000..2923e544 --- /dev/null +++ b/examples/triggers/terraform.tfvars @@ -0,0 +1,2 @@ +api_url = "http://g.codefresh.io/api" +token = "" diff --git a/examples/triggers/vars.tf b/examples/triggers/vars.tf new file mode 100644 index 00000000..90f2b988 --- /dev/null +++ b/examples/triggers/vars.tf @@ -0,0 +1,8 @@ +variable api_url { + type = string +} + +variable token { + type = string + default = "" +} \ No newline at end of file diff --git a/examples/triggers/versions.tf b/examples/triggers/versions.tf new file mode 100644 index 00000000..2e247b4c --- /dev/null +++ b/examples/triggers/versions.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + codefresh = { + source = "codefresh-io/codefresh" + version = "~> 0.0" + } + } +} \ No newline at end of file diff --git a/go.mod b/go.mod index 06392ee5..a1fb299e 100644 --- a/go.mod +++ b/go.mod @@ -12,12 +12,12 @@ require ( github.com/ghodss/yaml v1.0.0 github.com/golangci/golangci-lint v1.27.0 github.com/hashicorp/terraform-config-inspect v0.0.0-20191212124732-c6ae6269b9d7 // indirect + github.com/hashicorp/terraform-plugin-log v0.7.0 github.com/hashicorp/terraform-plugin-sdk v1.7.0 github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.0-rc.2.0.20200717132200-7435e2abc9d1 github.com/iancoleman/orderedmap v0.2.0 github.com/imdario/mergo v0.3.9 github.com/stretchr/objx v0.1.1 - github.com/stretchr/testify v1.6.1 // indirect golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 // indirect gopkg.in/yaml.v2 v2.2.8 ) diff --git a/go.sum b/go.sum index 5e18af4d..5cbf650d 100644 --- a/go.sum +++ b/go.sum @@ -85,6 +85,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= @@ -182,6 +184,8 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -218,6 +222,8 @@ github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9 github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.10.0 h1:b86HUuA126IcSHyC55WjPo7KtCOVeTCKIjr+3lBhPxI= github.com/hashicorp/go-hclog v0.10.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v1.2.1 h1:YQsLlGDJgwhXFpucSPyVbCBviQtjlHv3jLTlp8YmtEw= +github.com/hashicorp/go-hclog v1.2.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= @@ -250,6 +256,8 @@ github.com/hashicorp/terraform-exec v0.1.1/go.mod h1:yKWvMPtkTaHpeAmllw+1qdHZ7E5 github.com/hashicorp/terraform-json v0.4.0/go.mod h1:eAbqb4w0pSlRmdvl8fOyHAi/+8jnkVYN28gJkSJrLhU= github.com/hashicorp/terraform-json v0.5.0 h1:7TV3/F3y7QVSuN4r9BEXqnWqrAyeOtON8f0wvREtyzs= github.com/hashicorp/terraform-json v0.5.0/go.mod h1:eAbqb4w0pSlRmdvl8fOyHAi/+8jnkVYN28gJkSJrLhU= +github.com/hashicorp/terraform-plugin-log v0.7.0 h1:SDxJUyT8TwN4l5b5/VkiTIaQgY6R+Y2BQ0sRZftGKQs= +github.com/hashicorp/terraform-plugin-log v0.7.0/go.mod h1:p4R1jWBXRTvL4odmEkFfDdhUjHf9zcs/BCoNHAc7IK4= github.com/hashicorp/terraform-plugin-sdk v1.7.0 h1:B//oq0ZORG+EkVrIJy0uPGSonvmXqxSzXe8+GhknoW0= github.com/hashicorp/terraform-plugin-sdk v1.7.0/go.mod h1:OjgQmey5VxnPej/buEhe+YqKm0KNvV3QqU4hkqHqPCY= github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.0-rc.2.0.20200717132200-7435e2abc9d1 h1:h8TtYDlIACXQ6LNJesvSHuxskaPUAX/nltvqp0Kp1vk= @@ -319,12 +327,18 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.10 h1:qxFzApOv4WsAL965uUPIsXzAKCZxN2p9UqdhFS4ZW10= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= @@ -343,6 +357,8 @@ github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go. github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.0.4 h1:ZU1VNC02qyufSZsjjs7+khruk2fKvbQ3TwRV/IBCeFA= github.com/mitchellh/go-testing-interface v1.0.4/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= @@ -444,6 +460,8 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tdakkota/asciicheck v0.0.0-20200416190851-d7f85be797a2 h1:Xr9gkxfOP0KQWXKNqmwe8vEeSUiUj4Rlee9CMVX2ZUQ= @@ -566,8 +584,14 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6 h1:nonptSpoQ4vQjyraW20DXPAglgQfVnM9ZC6MmNLMR60= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= @@ -665,6 +689,8 @@ gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From 05533307507c29739347324d9a1df202f0e9132f Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Wed, 14 Sep 2022 14:45:52 +0300 Subject: [PATCH 09/44] WIP: initial commit. --- README.md | 4 +- client/hermes_trigger.go | 78 ++++++++++++++ client/user.go | 18 ++-- codefresh/provider.go | 25 ++--- codefresh/resource_pipeline_cron_trigger.go | 111 ++++++++++++++++++++ docs/resources/pipeline.md | 2 +- examples/pipelines/outputs.tf | 3 + examples/pipelines/versions.tf | 8 ++ examples/triggers/main.tf | 16 +++ examples/triggers/terraform.tfvars | 2 + examples/triggers/vars.tf | 8 ++ examples/triggers/versions.tf | 8 ++ go.mod | 5 +- go.sum | 38 ++++--- 14 files changed, 286 insertions(+), 40 deletions(-) create mode 100644 client/hermes_trigger.go create mode 100644 codefresh/resource_pipeline_cron_trigger.go create mode 100644 examples/pipelines/outputs.tf create mode 100644 examples/pipelines/versions.tf create mode 100644 examples/triggers/main.tf create mode 100644 examples/triggers/terraform.tfvars create mode 100644 examples/triggers/vars.tf create mode 100644 examples/triggers/versions.tf diff --git a/README.md b/README.md index be3d676c..0d2993ca 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ terraform { ``` -## [Documentations](./docs) +## [Documentation](./docs) ## [Examples](./examples) @@ -79,7 +79,7 @@ export CODEFRESH_API_KEY='xyz' ## License -Copyright 2020 Codefresh. +Copyright 2022 Codefresh. The Codefresh Provider is available under [MPL2.0 license](./LICENSE). diff --git a/client/hermes_trigger.go b/client/hermes_trigger.go new file mode 100644 index 00000000..4f52c576 --- /dev/null +++ b/client/hermes_trigger.go @@ -0,0 +1,78 @@ +package client + +import ( + "fmt" +) + +type HermesTrigger struct { + Event string `json:"event,omitempty"` + Pipeline string `json:"pipeline,omitempty"` + EventData EventData `json:"event-data,omitempty"` +} + +type EventData struct { + Uri string `json:"uri"` + Type string `json:"type"` + Kind string `json:"kind"` + Account string `json:"account"` + Secret string `json:"secret"` +} + +func (client *Client) GetHermesTriggerByEventAndPipeline(event string, pipeline string) (*HermesTrigger, error) { + + fullPath := fmt.Sprintf("/hermes/triggers/%s", event) + opts := RequestOptions{ + Path: fullPath, + Method: "GET", + } + + resp, err := client.RequestAPI(&opts) + + if err != nil { + return nil, err + } + + var hermesTriggerList []HermesTrigger + + err = DecodeResponseInto(resp, &hermesTriggerList) + if err != nil { + return nil, err + } + + var hermesTrigger HermesTrigger + for _, trigger := range hermesTriggerList { + if trigger.Pipeline == pipeline { + hermesTrigger = trigger + } + } + + return &hermesTrigger, nil +} + +func (client *Client) CreateHermesTriggerByEventAndPipeline(event string, pipeline string) error { + + fullPath := fmt.Sprintf("/hermes/triggers/%s/%s", event, pipeline) + opts := RequestOptions{ + Path: fullPath, + Method: "POST", + } + + _, err := client.RequestAPI(&opts) + return err +} + +func (client *Client) DeleteHermesTriggerByEventAndPipeline(event string, pipeline string) error { + fullPath := fmt.Sprintf("/hermes/triggers/%s/%s", event, pipeline) + opts := RequestOptions{ + Path: fullPath, + Method: "DELETE", + } + + _, err := client.RequestAPI(&opts) + + if err != nil { + return err + } + + return nil +} diff --git a/client/user.go b/client/user.go index d6b262f7..ba1c6435 100644 --- a/client/user.go +++ b/client/user.go @@ -264,15 +264,15 @@ func (client *Client) DeleteUser(userName string) error { Method: "DELETE", } - // The API will return a 500 error if the user cannot be found - // In this case the DeleteUser function should not return an error. - // Return error only if the body of the return message does not contain "User does not exist" - res, err := client.RequestAPI(&opts) - if err != nil { - if !strings.Contains(string(res), "User does not exist") { - return err - } - } + // The API will return a 500 error if the user cannot be found + // In this case the DeleteUser function should not return an error. + // Return error only if the body of the return message does not contain "User does not exist" + res, err := client.RequestAPI(&opts) + if err != nil { + if !strings.Contains(string(res), "User does not exist") { + return err + } + } return nil } diff --git a/codefresh/provider.go b/codefresh/provider.go index 4e2b8c0e..f388e816 100644 --- a/codefresh/provider.go +++ b/codefresh/provider.go @@ -38,18 +38,19 @@ func Provider() *schema.Provider { "codefresh_registry": dataSourceRegistry(), }, ResourcesMap: map[string]*schema.Resource{ - "codefresh_account": resourceAccount(), - "codefresh_account_admins": resourceAccountAdmins(), - "codefresh_api_key": resourceApiKey(), - "codefresh_context": resourceContext(), - "codefresh_registry": resourceRegistry(), - "codefresh_idp_accounts": resourceIDPAccounts(), - "codefresh_permission": resourcePermission(), - "codefresh_pipeline": resourcePipeline(), - "codefresh_project": resourceProject(), - "codefresh_step_types": resourceStepTypes(), - "codefresh_user": resourceUser(), - "codefresh_team": resourceTeam(), + "codefresh_account": resourceAccount(), + "codefresh_account_admins": resourceAccountAdmins(), + "codefresh_api_key": resourceApiKey(), + "codefresh_context": resourceContext(), + "codefresh_registry": resourceRegistry(), + "codefresh_idp_accounts": resourceIDPAccounts(), + "codefresh_permission": resourcePermission(), + "codefresh_pipeline": resourcePipeline(), + "codefresh_pipeline_cron_trigger": resourcePipelineCronTrigger(), + "codefresh_project": resourceProject(), + "codefresh_step_types": resourceStepTypes(), + "codefresh_user": resourceUser(), + "codefresh_team": resourceTeam(), }, ConfigureFunc: configureProvider, } diff --git a/codefresh/resource_pipeline_cron_trigger.go b/codefresh/resource_pipeline_cron_trigger.go new file mode 100644 index 00000000..b4ceefb8 --- /dev/null +++ b/codefresh/resource_pipeline_cron_trigger.go @@ -0,0 +1,111 @@ +package codefresh + +import ( + "fmt" + "log" + + cfClient "github.com/codefresh-io/terraform-provider-codefresh/client" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func resourcePipelineCronTrigger() *schema.Resource { + return &schema.Resource{ + Create: resourcePipelineCronTriggerCreate, + Read: resourcePipelineCronTriggerRead, + Update: resourcePipelineCronTriggerUpdate, + Delete: resourcePipelineCronTriggerDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "schedule": { + Type: schema.TypeString, + Required: true, + }, + "message": { + Type: schema.TypeString, + Required: true, + }, + "pipeline": { + Type: schema.TypeString, + Required: true, + }, + }, + } +} + +func resourcePipelineCronTriggerCreate(d *schema.ResourceData, meta interface{}) error { + client := meta.(*cfClient.Client) + + hermesTrigger := *mapResourceToPipelineCronTrigger(d) + + err := client.CreateHermesTriggerByEventAndPipeline(hermesTrigger.Event, hermesTrigger.Pipeline) + if err != nil { + return err + } + + d.SetId(hermesTrigger.Event) + + return nil +} + +func resourcePipelineCronTriggerRead(d *schema.ResourceData, meta interface{}) error { + + client := meta.(*cfClient.Client) + + event := d.Id() + pipeline := d.Get("pipeline").(string) + + hermesTrigger, err := client.GetHermesTriggerByEventAndPipeline(event, pipeline) + if err != nil { + return err + } + + err = mapPipelineCronTriggerToResource(hermesTrigger, d) + if err != nil { + return err + } + + return nil +} + +func resourcePipelineCronTriggerUpdate(d *schema.ResourceData, meta interface{}) error { + return resourcePipelineCronTriggerCreate(d, meta) +} + +func resourcePipelineCronTriggerDelete(d *schema.ResourceData, meta interface{}) error { + client := meta.(*cfClient.Client) + + hermesTrigger := *mapResourceToPipelineCronTrigger(d) + + err := client.DeleteHermesTriggerByEventAndPipeline(hermesTrigger.Event, hermesTrigger.Pipeline) + if err != nil { + log.Printf("Failed to delete hermes trigger: %s", err) + } + + return nil +} + +func mapPipelineCronTriggerToResource(hermesTrigger *cfClient.HermesTrigger, d *schema.ResourceData) error { + + d.SetId(hermesTrigger.Event) + return nil +} + +func mapResourceToPipelineCronTrigger(d *schema.ResourceData) *cfClient.HermesTrigger { + + triggerId := d.Id() + if triggerId == "" { + triggerId = generateTriggerString(d) + } + hermesTrigger := &cfClient.HermesTrigger{ + Event: triggerId, + Pipeline: d.Get("pipeline").(string), + } + + return hermesTrigger +} + +func generateTriggerString(d *schema.ResourceData) string { + return fmt.Sprintf("cron:codefresh:%s:%s", d.Get("schedule").(string), d.Get("message").(string)) +} diff --git a/docs/resources/pipeline.md b/docs/resources/pipeline.md index de674bdf..20af54dc 100644 --- a/docs/resources/pipeline.md +++ b/docs/resources/pipeline.md @@ -139,7 +139,7 @@ resource "codefresh_pipeline" "test" { - `context` - (Optional) Codefresh Git context. - `commit_status_title` - (Optional) The commit status title pushed to the GIT version control system. - `variables` - (Optional) Trigger variables. -- `disabled` - (Optional) Boolean. If false, trigger will never be activated. +- `disabled` - (Optional) Boolean. If true, trigger will never be activated. - `pull_request_allow_fork_events` - (Optional) Boolean. If this trigger is also applicable to Git forks. - `contexts` - (Optional) A list of strings representing the contexts ([shared_configuration](https://codefresh.io/docs/docs/configure-ci-cd-pipeline/shared-configuration/)) to be loaded when the trigger is executed - `runtime_environment` - (Optional) A collection of `runtime_environment` blocks as documented below. diff --git a/examples/pipelines/outputs.tf b/examples/pipelines/outputs.tf new file mode 100644 index 00000000..ba236a45 --- /dev/null +++ b/examples/pipelines/outputs.tf @@ -0,0 +1,3 @@ +output "id" { + value = codefresh_pipeline.test.id +} \ No newline at end of file diff --git a/examples/pipelines/versions.tf b/examples/pipelines/versions.tf new file mode 100644 index 00000000..2e247b4c --- /dev/null +++ b/examples/pipelines/versions.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + codefresh = { + source = "codefresh-io/codefresh" + version = "~> 0.0" + } + } +} \ No newline at end of file diff --git a/examples/triggers/main.tf b/examples/triggers/main.tf new file mode 100644 index 00000000..f27b7bf4 --- /dev/null +++ b/examples/triggers/main.tf @@ -0,0 +1,16 @@ +provider "codefresh" { + api_url = var.api_url + token = var.token +} + +module "pipeline" { + source = "../pipelines" + api_url = var.api_url + token = var.token +} + +resource "codefresh_pipeline_cron_trigger" default { + pipeline = module.pipeline.id + schedule = "0 0 2 ? * MON-FRI" + message = "Triggered by cron" +} \ No newline at end of file diff --git a/examples/triggers/terraform.tfvars b/examples/triggers/terraform.tfvars new file mode 100644 index 00000000..2923e544 --- /dev/null +++ b/examples/triggers/terraform.tfvars @@ -0,0 +1,2 @@ +api_url = "http://g.codefresh.io/api" +token = "" diff --git a/examples/triggers/vars.tf b/examples/triggers/vars.tf new file mode 100644 index 00000000..90f2b988 --- /dev/null +++ b/examples/triggers/vars.tf @@ -0,0 +1,8 @@ +variable api_url { + type = string +} + +variable token { + type = string + default = "" +} \ No newline at end of file diff --git a/examples/triggers/versions.tf b/examples/triggers/versions.tf new file mode 100644 index 00000000..2e247b4c --- /dev/null +++ b/examples/triggers/versions.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + codefresh = { + source = "codefresh-io/codefresh" + version = "~> 0.0" + } + } +} \ No newline at end of file diff --git a/go.mod b/go.mod index 06392ee5..1c22e2a0 100644 --- a/go.mod +++ b/go.mod @@ -6,18 +6,19 @@ require ( github.com/bflad/tfproviderdocs v0.6.0 github.com/bflad/tfproviderlint v0.14.0 github.com/cenkalti/backoff v2.2.1+incompatible - github.com/cenkalti/backoff/v4 v4.1.0 github.com/client9/misspell v0.3.4 github.com/dlclark/regexp2 v1.4.0 github.com/ghodss/yaml v1.0.0 github.com/golangci/golangci-lint v1.27.0 + github.com/google/go-cmp v0.5.8 // indirect + github.com/hashicorp/go-hclog v1.2.1 // indirect github.com/hashicorp/terraform-config-inspect v0.0.0-20191212124732-c6ae6269b9d7 // indirect github.com/hashicorp/terraform-plugin-sdk v1.7.0 github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.0-rc.2.0.20200717132200-7435e2abc9d1 github.com/iancoleman/orderedmap v0.2.0 github.com/imdario/mergo v0.3.9 + github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/stretchr/objx v0.1.1 - github.com/stretchr/testify v1.6.1 // indirect golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 // indirect gopkg.in/yaml.v2 v2.2.8 ) diff --git a/go.sum b/go.sum index 5e18af4d..7f368380 100644 --- a/go.sum +++ b/go.sum @@ -56,11 +56,8 @@ github.com/bmatcuk/doublestar v1.2.1 h1:eetYiv8DDYOZcBADY+pRvRytf3Dlz1FhnpvL2FsC github.com/bmatcuk/doublestar v1.2.1/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= github.com/bombsimon/wsl/v3 v3.0.0 h1:w9f49xQatuaeTJFaNP4SpiWSR5vfT6IstPtM62JjcqA= github.com/bombsimon/wsl/v3 v3.0.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= -github.com/cenkalti/backoff v1.1.0 h1:QnvVp8ikKCDWOsFheytRCoYWYPO/ObCTBGxT19Hc+yE= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.1.0 h1:c8LkOFQTzuO0WBM/ae5HdGQuZPfPxp7lqBRwQRm4fSc= -github.com/cenkalti/backoff/v4 v4.1.0/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= @@ -83,8 +80,9 @@ github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= @@ -180,8 +178,9 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -216,8 +215,9 @@ github.com/hashicorp/go-getter v1.4.2-0.20200106182914-9813cbd4eb02 h1:l1KB3bHVd github.com/hashicorp/go-getter v1.4.2-0.20200106182914-9813cbd4eb02/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY= github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v0.10.0 h1:b86HUuA126IcSHyC55WjPo7KtCOVeTCKIjr+3lBhPxI= github.com/hashicorp/go-hclog v0.10.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v1.2.1 h1:YQsLlGDJgwhXFpucSPyVbCBviQtjlHv3jLTlp8YmtEw= +github.com/hashicorp/go-hclog v1.2.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= @@ -317,14 +317,18 @@ github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb h1:RHba4YImhrUVQDHUC github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10 h1:qxFzApOv4WsAL965uUPIsXzAKCZxN2p9UqdhFS4ZW10= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= @@ -341,8 +345,9 @@ github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b/go.mod h1:r1VsdOzOPt1ZSrGZWFoNhsAedKnEd6r9Np1+5blZCWk= github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.0.4 h1:ZU1VNC02qyufSZsjjs7+khruk2fKvbQ3TwRV/IBCeFA= github.com/mitchellh/go-testing-interface v1.0.4/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= @@ -442,8 +447,8 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tdakkota/asciicheck v0.0.0-20200416190851-d7f85be797a2 h1:Xr9gkxfOP0KQWXKNqmwe8vEeSUiUj4Rlee9CMVX2ZUQ= @@ -566,8 +571,13 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6 h1:nonptSpoQ4vQjyraW20DXPAglgQfVnM9ZC6MmNLMR60= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= @@ -663,8 +673,8 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From 9cf96b5858addf30e7314d28aa2e30715b4fdd7b Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Wed, 21 Sep 2022 12:17:26 +0300 Subject: [PATCH 10/44] Add support for cron triggers. --- client/hermes_trigger.go | 7 ++- client/hermes_trigger_event.go | 60 +++++++++++++++++++++ client/utils.go | 16 ++++++ codefresh/resource_pipeline_cron_trigger.go | 29 ++++++---- examples/triggers/main.tf | 2 +- 5 files changed, 98 insertions(+), 16 deletions(-) create mode 100644 client/hermes_trigger_event.go diff --git a/client/hermes_trigger.go b/client/hermes_trigger.go index 4f52c576..8e3cf636 100644 --- a/client/hermes_trigger.go +++ b/client/hermes_trigger.go @@ -20,14 +20,13 @@ type EventData struct { func (client *Client) GetHermesTriggerByEventAndPipeline(event string, pipeline string) (*HermesTrigger, error) { - fullPath := fmt.Sprintf("/hermes/triggers/%s", event) + fullPath := fmt.Sprintf("/hermes/triggers/event/%s", UriEncodeEvent(event)) opts := RequestOptions{ Path: fullPath, Method: "GET", } resp, err := client.RequestAPI(&opts) - if err != nil { return nil, err } @@ -51,7 +50,7 @@ func (client *Client) GetHermesTriggerByEventAndPipeline(event string, pipeline func (client *Client) CreateHermesTriggerByEventAndPipeline(event string, pipeline string) error { - fullPath := fmt.Sprintf("/hermes/triggers/%s/%s", event, pipeline) + fullPath := fmt.Sprintf("/hermes/triggers/%s/%s", UriEncodeEvent(event), pipeline) opts := RequestOptions{ Path: fullPath, Method: "POST", @@ -62,7 +61,7 @@ func (client *Client) CreateHermesTriggerByEventAndPipeline(event string, pipeli } func (client *Client) DeleteHermesTriggerByEventAndPipeline(event string, pipeline string) error { - fullPath := fmt.Sprintf("/hermes/triggers/%s/%s", event, pipeline) + fullPath := fmt.Sprintf("/hermes/triggers/%s/%s", UriEncodeEvent(event), pipeline) opts := RequestOptions{ Path: fullPath, Method: "DELETE", diff --git a/client/hermes_trigger_event.go b/client/hermes_trigger_event.go new file mode 100644 index 00000000..8a017808 --- /dev/null +++ b/client/hermes_trigger_event.go @@ -0,0 +1,60 @@ +package client + +import ( + "fmt" +) + +type HermesTriggerEvent struct { + Type string `json:"type,omitempty"` + Kind string `json:"kind,omitempty"` + Filter string `json:"filter,omitempty"` + Secret string `json:"secret,omitempty"` + Values map[string]string `json:"values,omitempty"` +} + +func (client *Client) GetHermesTriggerEvent(event string) (*HermesTriggerEvent, error) { + fullPath := fmt.Sprintf("/hermes/triggers/%s", UriEncodeEvent(event)) + + opts := RequestOptions{ + Path: fullPath, + Method: "GET", + } + + resp, err := client.RequestAPI(&opts) + if err != nil { + return nil, err + } + + var hermesTriggerEvent HermesTriggerEvent + err = DecodeResponseInto(resp, &hermesTriggerEvent) + if err != nil { + return nil, err + } + + return &hermesTriggerEvent, nil +} + +func (client *Client) CreateHermesTriggerEvent(event *HermesTriggerEvent) (string, error) { + + body, err := EncodeToJSON(event) + if err != nil { + return "", err + } + + fullPath := "/hermes/events/" + opts := RequestOptions{ + Path: fullPath, + Method: "POST", + Body: body, + } + + resp, err := client.RequestAPI(&opts) + + var eventString string + err = DecodeResponseInto(resp, &eventString) + if err != nil { + return "", err + } + + return eventString, err +} diff --git a/client/utils.go b/client/utils.go index 60a97c60..734c1ba0 100644 --- a/client/utils.go +++ b/client/utils.go @@ -1,5 +1,10 @@ package client +import ( + "net/url" + "strings" +) + // Variable spec type Variable struct { Key string `json:"key"` @@ -19,3 +24,14 @@ func FindInSlice(slice []string, val string) bool { } return false } + +func uriEncode(path string) string { + replacer := strings.NewReplacer("+", "%20", "%2A", "*") // match Javascript's encodeURIComponent() + return replacer.Replace(url.QueryEscape(path)) +} + +func UriEncodeEvent(event string) string { + // The following is odd, but it's intentional. The event is URI encoded twice because + // the Codefresh API expects it to be encoded twice. + return uriEncode(uriEncode(event)) +} diff --git a/codefresh/resource_pipeline_cron_trigger.go b/codefresh/resource_pipeline_cron_trigger.go index b4ceefb8..3017fb54 100644 --- a/codefresh/resource_pipeline_cron_trigger.go +++ b/codefresh/resource_pipeline_cron_trigger.go @@ -1,7 +1,6 @@ package codefresh import ( - "fmt" "log" cfClient "github.com/codefresh-io/terraform-provider-codefresh/client" @@ -18,7 +17,7 @@ func resourcePipelineCronTrigger() *schema.Resource { State: schema.ImportStatePassthrough, }, Schema: map[string]*schema.Schema{ - "schedule": { + "expression": { Type: schema.TypeString, Required: true, }, @@ -37,14 +36,27 @@ func resourcePipelineCronTrigger() *schema.Resource { func resourcePipelineCronTriggerCreate(d *schema.ResourceData, meta interface{}) error { client := meta.(*cfClient.Client) + eventString, err := client.CreateHermesTriggerEvent(&cfClient.HermesTriggerEvent{ + Type: "cron", + Kind: "codefresh", + Secret: "!generate", + Values: map[string]string{ + "expression": d.Get("expression").(string), + "message": d.Get("message").(string), + }, + }) + if err != nil { + return err + } + hermesTrigger := *mapResourceToPipelineCronTrigger(d) - err := client.CreateHermesTriggerByEventAndPipeline(hermesTrigger.Event, hermesTrigger.Pipeline) + err = client.CreateHermesTriggerByEventAndPipeline(eventString, hermesTrigger.Pipeline) if err != nil { return err } - d.SetId(hermesTrigger.Event) + d.SetId(eventString) return nil } @@ -89,15 +101,14 @@ func resourcePipelineCronTriggerDelete(d *schema.ResourceData, meta interface{}) func mapPipelineCronTriggerToResource(hermesTrigger *cfClient.HermesTrigger, d *schema.ResourceData) error { d.SetId(hermesTrigger.Event) + d.Set("pipeline", hermesTrigger.Pipeline) + return nil } func mapResourceToPipelineCronTrigger(d *schema.ResourceData) *cfClient.HermesTrigger { triggerId := d.Id() - if triggerId == "" { - triggerId = generateTriggerString(d) - } hermesTrigger := &cfClient.HermesTrigger{ Event: triggerId, Pipeline: d.Get("pipeline").(string), @@ -105,7 +116,3 @@ func mapResourceToPipelineCronTrigger(d *schema.ResourceData) *cfClient.HermesTr return hermesTrigger } - -func generateTriggerString(d *schema.ResourceData) string { - return fmt.Sprintf("cron:codefresh:%s:%s", d.Get("schedule").(string), d.Get("message").(string)) -} diff --git a/examples/triggers/main.tf b/examples/triggers/main.tf index f27b7bf4..4a8dce4d 100644 --- a/examples/triggers/main.tf +++ b/examples/triggers/main.tf @@ -11,6 +11,6 @@ module "pipeline" { resource "codefresh_pipeline_cron_trigger" default { pipeline = module.pipeline.id - schedule = "0 0 2 ? * MON-FRI" + expression = "0 0 2 ? * MON-FRI" message = "Triggered by cron" } \ No newline at end of file From d431bfb8bc99f80a1a3a9dc379fca47b88a02c9a Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Thu, 22 Sep 2022 10:30:23 +0300 Subject: [PATCH 11/44] Fix (most) tests. --- codefresh/resource_context_test.go | 2 +- codefresh/resource_pipeline_test.go | 12 +- go.mod | 10 +- go.sum | 188 ++++++++++++++++++++++++++++ 4 files changed, 201 insertions(+), 11 deletions(-) diff --git a/codefresh/resource_context_test.go b/codefresh/resource_context_test.go index 3eb016fe..9693745e 100644 --- a/codefresh/resource_context_test.go +++ b/codefresh/resource_context_test.go @@ -183,7 +183,7 @@ func testAccCheckCodefreshContextDestroy(s *terraform.State) error { return fmt.Errorf("Alert still exists") } - notFoundErr := "CONTEXT_NOT_FOUND_ERROR" + notFoundErr := "Context .* not found" expectedErr := regexp.MustCompile(notFoundErr) if !expectedErr.Match([]byte(err.Error())) { return fmt.Errorf("expected %s, got %s", notFoundErr, err) diff --git a/codefresh/resource_pipeline_test.go b/codefresh/resource_pipeline_test.go index 7cb9423b..0ae0e6eb 100644 --- a/codefresh/resource_pipeline_test.go +++ b/codefresh/resource_pipeline_test.go @@ -207,7 +207,7 @@ steps: expectedSpecAttributes := &cfClient.Spec{ Steps: &cfClient.Steps{ - Steps: `{"zz_firstStep":{"commands":["echo Hello World First Step"],"image":"alpine","stage":"test"},"aa_secondStep":{"commands":["echo Hello World Second Step"],"image":"alpine","stage":"test"}}`, + Steps: `{"zz_firstStep":{"stage":"test","image":"alpine","commands":["echo Hello World First Step"]},"aa_secondStep":{"stage":"test","image":"alpine","commands":["echo Hello World Second Step"]}}`, }, Stages: &cfClient.Stages{ Stages: `["test"]`, @@ -458,8 +458,10 @@ func TestAccCodefreshPipelineOptions(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckCodefreshPipelineExists(resourceName), resource.TestCheckResourceAttr(resourceName, "name", name), - resource.TestCheckResourceAttr(resourceName, "spec.0.options.0.keep_pvcs_for_pending_approval", "true"), - resource.TestCheckResourceAttr(resourceName, "spec.0.options.0.pending_approval_concurrency_applied", "false"), + resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.options.*", map[string]string{ + "keep_pvcs_for_pending_approval": "true", + "pending_approval_concurrency_applied": "false", + }), ), }, { @@ -472,7 +474,7 @@ func TestAccCodefreshPipelineOptions(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckCodefreshPipelineExists(resourceName), resource.TestCheckResourceAttr(resourceName, "name", name), - resource.TestCheckNoResourceAttr(resourceName, "spec.0.options"), + resource.TestCheckNoResourceAttr(resourceName, "spec.0.options.#"), ), }, }, @@ -780,7 +782,7 @@ resource "codefresh_pipeline" "test" { ] description = "" disabled = false - options = { + options { no_cache = %t no_cf_cache = %t reset_volume = %t diff --git a/go.mod b/go.mod index 1c22e2a0..b751b43d 100644 --- a/go.mod +++ b/go.mod @@ -10,17 +10,17 @@ require ( github.com/dlclark/regexp2 v1.4.0 github.com/ghodss/yaml v1.0.0 github.com/golangci/golangci-lint v1.27.0 - github.com/google/go-cmp v0.5.8 // indirect + github.com/hashicorp/go-getter v1.4.2-0.20200106182914-9813cbd4eb02 // indirect github.com/hashicorp/go-hclog v1.2.1 // indirect github.com/hashicorp/terraform-config-inspect v0.0.0-20191212124732-c6ae6269b9d7 // indirect github.com/hashicorp/terraform-plugin-sdk v1.7.0 - github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.0-rc.2.0.20200717132200-7435e2abc9d1 + github.com/hashicorp/terraform-plugin-sdk/v2 v2.23.0 + github.com/hashicorp/terraform-plugin-test v1.4.4 // indirect github.com/iancoleman/orderedmap v0.2.0 - github.com/imdario/mergo v0.3.9 + github.com/imdario/mergo v0.3.12 github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/stretchr/objx v0.1.1 - golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 // indirect - gopkg.in/yaml.v2 v2.2.8 + gopkg.in/yaml.v2 v2.3.0 ) go 1.13 diff --git a/go.sum b/go.sum index 7f368380..14270f80 100644 --- a/go.sum +++ b/go.sum @@ -14,28 +14,39 @@ github.com/Djarvur/go-err113 v0.0.0-20200410182137-af658d038157 h1:hY39LwQHh+1ka github.com/Djarvur/go-err113 v0.0.0-20200410182137-af658d038157/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenPeeDeeP/depguard v1.0.1 h1:VlW4R6jmBIv3/u1JNlawEvJMM4J+dPORPaZasQee8Us= github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM= +github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apparentlymart/go-cidr v1.0.1 h1:NmIwLZ/KdsjIUlhf+/Np40atNXm/+lZ5txfTJ/SpF+U= github.com/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= +github.com/apparentlymart/go-cidr v1.1.0 h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU= +github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I= github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= +github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= +github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= github.com/aws/aws-sdk-go v1.25.3/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.30.12 h1:KrjyosZvkpJjcwMk0RNxMZewQ47v7+ZkbQDXjWsJMs8= @@ -60,9 +71,16 @@ github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEe github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= @@ -78,17 +96,29 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E= github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-critic/go-critic v0.4.1 h1:4DTQfT1wWwLg/hzxwD9bkdhDQrdJtxe6DUTadPlrIeE= github.com/go-critic/go-critic v0.4.1/go.mod h1:7/14rZGnZbY6E38VEGk2kVhoq6itzc1E68facVDK23g= +github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= +github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= +github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-lintpack/lintpack v0.5.2 h1:DI5mA3+eKdWeJ40nU4d6Wc26qmdG8RCi/btYq0TuRN0= github.com/go-lintpack/lintpack v0.5.2/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM= @@ -143,6 +173,17 @@ github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4 h1:87PNWwrRvUSnqS4dlcBU/ftvOIBep4sYuBLlh6rX2wk= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5DB4XJkc6BU31uODLD1o1gKvZmD0= github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= @@ -179,8 +220,14 @@ github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -189,6 +236,8 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= @@ -201,6 +250,7 @@ github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.m github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU= @@ -208,6 +258,8 @@ github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuD github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI= github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs= github.com/hashicorp/go-getter v1.4.0/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY= @@ -216,30 +268,44 @@ github.com/hashicorp/go-getter v1.4.2-0.20200106182914-9813cbd4eb02/go.mod h1:7q github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.10.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.2.1 h1:YQsLlGDJgwhXFpucSPyVbCBviQtjlHv3jLTlp8YmtEw= github.com/hashicorp/go-hclog v1.2.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= github.com/hashicorp/go-plugin v1.3.0 h1:4d/wJojzvHV1I4i/rrjVaeuyxWrLzDE1mDCyDy8fXS8= github.com/hashicorp/go-plugin v1.3.0/go.mod h1:F9eH4LrE/ZsRdbwhfjs9k9HoDUwAHnYtXdgmf1AVNs0= +github.com/hashicorp/go-plugin v1.4.4 h1:NVdrSdFRt3SkZtNckJ6tog7gbpRrcbOjQi/rgF7JYWQ= +github.com/hashicorp/go-plugin v1.4.4/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0 h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+dIzX/E= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hc-install v0.4.0 h1:cZkRFr1WVa0Ty6x5fTvL1TuO1flul231rWkGH92oYYk= +github.com/hashicorp/hc-install v0.4.0/go.mod h1:5d155H8EC5ewegao9A4PUTMNPZaq+TbOzkJJZ4vrXeI= github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.0.0/go.mod h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90= github.com/hashicorp/hcl/v2 v2.3.0 h1:iRly8YaMwTBAKhn1Ybk7VSdzbnopghktCD031P8ggUE= github.com/hashicorp/hcl/v2 v2.3.0/go.mod h1:d+FwDBbOLvpAM3Z6J7gPj/VoAGkNe/gm352ZhjJ/Zv8= +github.com/hashicorp/hcl/v2 v2.14.0 h1:jX6+Q38Ly9zaAJlAjnFVyeNSNCKKW8D0wvyg7vij5Wc= +github.com/hashicorp/hcl/v2 v2.14.0/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/terraform-config-inspect v0.0.0-20191115094559-17f92b0546e8/go.mod h1:p+ivJws3dpqbp1iP84+npOyAmTTOLMgCzrXd3GSdn/A= @@ -247,18 +313,32 @@ github.com/hashicorp/terraform-config-inspect v0.0.0-20191212124732-c6ae6269b9d7 github.com/hashicorp/terraform-config-inspect v0.0.0-20191212124732-c6ae6269b9d7/go.mod h1:p+ivJws3dpqbp1iP84+npOyAmTTOLMgCzrXd3GSdn/A= github.com/hashicorp/terraform-exec v0.1.1 h1:soHqDz5365aZVt9pyTT7ArOXSpMqaHGMYq4VhI+HNkE= github.com/hashicorp/terraform-exec v0.1.1/go.mod h1:yKWvMPtkTaHpeAmllw+1qdHZ7E5u+pAZ+x8e2jQF6gM= +github.com/hashicorp/terraform-exec v0.17.3 h1:MX14Kvnka/oWGmIkyuyvL6POx25ZmKrjlaclkx3eErU= +github.com/hashicorp/terraform-exec v0.17.3/go.mod h1:+NELG0EqQekJzhvikkeQsOAZpsw0cv/03rbeQJqscAI= github.com/hashicorp/terraform-json v0.4.0/go.mod h1:eAbqb4w0pSlRmdvl8fOyHAi/+8jnkVYN28gJkSJrLhU= github.com/hashicorp/terraform-json v0.5.0 h1:7TV3/F3y7QVSuN4r9BEXqnWqrAyeOtON8f0wvREtyzs= github.com/hashicorp/terraform-json v0.5.0/go.mod h1:eAbqb4w0pSlRmdvl8fOyHAi/+8jnkVYN28gJkSJrLhU= +github.com/hashicorp/terraform-json v0.14.0 h1:sh9iZ1Y8IFJLx+xQiKHGud6/TSUCM0N8e17dKDpqV7s= +github.com/hashicorp/terraform-json v0.14.0/go.mod h1:5A9HIWPkk4e5aeeXIBbkcOvaZbIYnAIkEyqP2pNSckM= +github.com/hashicorp/terraform-plugin-go v0.14.0 h1:ttnSlS8bz3ZPYbMb84DpcPhY4F5DsQtcAS7cHo8uvP4= +github.com/hashicorp/terraform-plugin-go v0.14.0/go.mod h1:2nNCBeRLaenyQEi78xrGrs9hMbulveqG/zDMQSvVJTE= +github.com/hashicorp/terraform-plugin-log v0.7.0 h1:SDxJUyT8TwN4l5b5/VkiTIaQgY6R+Y2BQ0sRZftGKQs= +github.com/hashicorp/terraform-plugin-log v0.7.0/go.mod h1:p4R1jWBXRTvL4odmEkFfDdhUjHf9zcs/BCoNHAc7IK4= github.com/hashicorp/terraform-plugin-sdk v1.7.0 h1:B//oq0ZORG+EkVrIJy0uPGSonvmXqxSzXe8+GhknoW0= github.com/hashicorp/terraform-plugin-sdk v1.7.0/go.mod h1:OjgQmey5VxnPej/buEhe+YqKm0KNvV3QqU4hkqHqPCY= github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.0-rc.2.0.20200717132200-7435e2abc9d1 h1:h8TtYDlIACXQ6LNJesvSHuxskaPUAX/nltvqp0Kp1vk= github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.0-rc.2.0.20200717132200-7435e2abc9d1/go.mod h1:aWg/hVISyjdpUOt89SSrplxffuq8HPEnIWGyKDpDzCo= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.23.0 h1:D4EeQm0piYXIHp6ZH3zjyP2Elq6voC64x3GZptaiefA= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.23.0/go.mod h1:xkJGavPvP9kYS/VbiW8o7JuTNgPwm7Tiw/Ie/b46r4c= github.com/hashicorp/terraform-plugin-test v1.2.0/go.mod h1:QIJHYz8j+xJtdtLrFTlzQVC0ocr3rf/OjIpgZLK56Hs= github.com/hashicorp/terraform-plugin-test v1.4.4 h1:5Pvg9nESNFDnf6bafUYX5Qk15WaZtv0alxwOKiZo7vQ= github.com/hashicorp/terraform-plugin-test v1.4.4/go.mod h1:UA7z/02pgqsRLut4DJIPm0Hjnj27uOvhi19c8kTqIfM= +github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c h1:D8aRO6+mTqHfLsK/BC3j5OAoogv1WLRWzY1AaTo3rBg= +github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c/go.mod h1:Wn3Na71knbXc1G8Lh+yu/dQWWJeFQEpDeJMtWMtlmNI= github.com/hashicorp/terraform-svchost v0.0.0-20191011084731-65d371908596 h1:hjyO2JsNZUKT1ym+FAdlBEkGPevazYsmVgIMw7dVELg= github.com/hashicorp/terraform-svchost v0.0.0-20191011084731-65d371908596/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= +github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 h1:HKLsbzeOsfXmKNpr3GiT18XAblV0BjCbzL8KQAMZGa0= +github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= @@ -268,8 +348,12 @@ github.com/iancoleman/orderedmap v0.2.0 h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6 github.com/iancoleman/orderedmap v0.2.0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= github.com/imdario/mergo v0.3.9 h1:UauaLniWCFHWd+Jp9oCEkTBj8VO/9DKg3PV3VCNMDIg= github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE= github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a h1:GmsqmapfzSJkm28dhRoHz2tLRbJmqhU86IPgBtN3mmk= @@ -286,6 +370,7 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1 github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= @@ -299,6 +384,7 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxv github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -315,6 +401,7 @@ github.com/maratori/testpackage v1.0.1 h1:QtJ5ZjqapShm0w5DosRjg0PRlSdAdlx+W6cCKo github.com/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpApTE5fXSKAqwDU= github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb h1:RHba4YImhrUVQDHUCe2BNSOz4tVy2yGyXhvYDvxGgeE= github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= +github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= @@ -339,6 +426,8 @@ github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2Em github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -353,9 +442,13 @@ github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9 github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mozilla/tls-observatory v0.0.0-20200317151703-4fa42e1c2dee/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nakabonne/nestif v0.3.0 h1:+yOViDGhg8ygGrmII72nV9B/zGxY188TYpfolntsaPw= @@ -364,6 +457,7 @@ github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d h1:AREM5mwr4u1 github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nsf/jsondiff v0.0.0-20200515183724-f29ed568f4ce/go.mod h1:uFMI8w+ref4v2r9jz+c9i1IfIttS/OkmLfrk1jne5hs= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= @@ -399,14 +493,18 @@ github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7z github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/ryancurrah/gomodguard v1.0.4 h1:oCreMAt9GuFXDe9jW4HBpc3GjdX3R/sUEcLAGh1zPx8= github.com/ryancurrah/gomodguard v1.0.4/go.mod h1:9T/Cfuxs5StfsocWr4WzDL36HqnX0fVb9d5fSEaLhoE= +github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= github.com/securego/gosec/v2 v2.3.0 h1:y/9mCF2WPDbSDpL3QDWZD3HHGrSYw0QSHnCqTfs4JPE= github.com/securego/gosec/v2 v2.3.0/go.mod h1:UzeVyUXbxukhLeHKV3VVqo7HdoQR9MrRfFmZYotn8ME= github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lzhCH5h/3YBfyVA3VbLYjlMZZAQcW9ojMexNc= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= @@ -414,6 +512,7 @@ github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxr github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= @@ -447,6 +546,7 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= @@ -477,26 +577,41 @@ github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack v4.0.1+incompatible h1:RMF1enSPeKTlXrXdOcqjFUElywVZjjC6pqse21bKbEU= github.com/vmihailenco/msgpack v4.0.1+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= +github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U= +github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= +github.com/vmihailenco/tagparser v0.1.1 h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37wVyIuWY= +github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= +github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zclconf/go-cty v1.0.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.2.1 h1:vGMsygfmeCl4Xb6OA5U5XVAaQZ69FvoG7X2jUtQujb8= github.com/zclconf/go-cty v1.2.1/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= +github.com/zclconf/go-cty v1.8.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty v1.11.0 h1:726SxLdi2SDnjY+BStqB9J1hNp4+2WlzyXLuimibIe0= +github.com/zclconf/go-cty v1.11.0/go.mod h1:s9IfD1LK5ccNMSWCVFCE2rJfHiZgi7JijgeWIMfhLvA= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= github.com/zclconf/go-cty-yaml v1.0.1 h1:up11wlgAaDvlAGENcFDnZgkn0qUJurso7k6EpURKNF8= github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -505,6 +620,12 @@ golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 h1:cg5LA/zNPRzIXIWSCxQW10Rvpy94aQh3LT/ShoCpkHw= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167 h1:O8uGbHCqlTp2P6QJSLmCojM4mN6UemYv8K+dCnmHmu0= +golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= @@ -518,6 +639,8 @@ golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKG golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -540,16 +663,27 @@ golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -569,19 +703,35 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6 h1:nonptSpoQ4vQjyraW20DXPAglgQfVnM9ZC6MmNLMR60= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -617,10 +767,14 @@ golang.org/x/tools v0.0.0-20200414032229-332987a829c3/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200422022333-3d57cf2e726e/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200502202811-ed308ab3e770 h1:M9Fif0OxNji8w+HvmhVQ8KJtiZOsjU9RgslJGhn95XE= golang.org/x/tools v0.0.0-20200502202811-ed308ab3e770/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200713011307-fd294ab11aed h1:+qzWo37K31KxduIYaBeMqJ8MUOyTayOQKpH9aDPLMSY= +golang.org/x/tools v0.0.0-20200713011307-fd294ab11aed/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -631,6 +785,9 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -641,6 +798,10 @@ google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200310143817-43be25429f5a h1:lRlI5zu6AFy3iU/F8YWyNrAmn/tPCnhiTxfwhWb76eU= google.golang.org/genproto v0.0.0-20200310143817-43be25429f5a/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200711021454-869866162049 h1:YFTFpQhgvrLrmxtiIncJxFXeCyq84ixuKWVCaCAi9Oc= +google.golang.org/genproto v0.0.0-20200711021454-869866162049/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -648,15 +809,37 @@ google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiq google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1 h1:zvIju4sqAGvwKspUQOhwnpcqSbzi7/H6QomNNjTL4sk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.48.0 h1:rQOsyJ/8+ufEDJd/Gdsz7HG220Mh9HAhFHRGnIjda0w= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.2.0/go.mod h1:DNq5QpG7LJqD2AamLZ7zvKE0DEpVl2BSEVjFycAAjRY= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= @@ -666,13 +849,18 @@ gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From 7067c7040ca8e39348ac554c82205c0e1bb645e7 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Thu, 22 Sep 2022 19:21:33 +0300 Subject: [PATCH 12/44] Fix TestAccCodefreshPipeline_RuntimeEnvironment. --- codefresh/resource_pipeline_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codefresh/resource_pipeline_test.go b/codefresh/resource_pipeline_test.go index 95f6c3b3..0d5fe451 100644 --- a/codefresh/resource_pipeline_test.go +++ b/codefresh/resource_pipeline_test.go @@ -140,7 +140,7 @@ func TestAccCodefreshPipeline_Variables(t *testing.T) { func TestAccCodefreshPipeline_RuntimeEnvironment(t *testing.T) { name := pipelineNamePrefix + acctest.RandString(10) resourceName := "codefresh_pipeline.test" - runtimeName := "system/default" + runtimeName := "system/default-plan" resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, From 25230684a38d5870be6c506cf233a39173fdfe50 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Fri, 23 Sep 2022 01:21:47 +0300 Subject: [PATCH 13/44] (WIP): overhaul tests and add tests for cron triggers. --- codefresh/resource_pipeline_cron_trigger.go | 8 +- .../resource_pipeline_cron_trigger_test.go | 111 ++++++++++++++++++ codefresh/resource_pipeline_test.go | 60 ++++++---- 3 files changed, 153 insertions(+), 26 deletions(-) create mode 100644 codefresh/resource_pipeline_cron_trigger_test.go diff --git a/codefresh/resource_pipeline_cron_trigger.go b/codefresh/resource_pipeline_cron_trigger.go index 3017fb54..0e8aa724 100644 --- a/codefresh/resource_pipeline_cron_trigger.go +++ b/codefresh/resource_pipeline_cron_trigger.go @@ -25,7 +25,7 @@ func resourcePipelineCronTrigger() *schema.Resource { Type: schema.TypeString, Required: true, }, - "pipeline": { + "pipeline_id": { Type: schema.TypeString, Required: true, }, @@ -66,7 +66,7 @@ func resourcePipelineCronTriggerRead(d *schema.ResourceData, meta interface{}) e client := meta.(*cfClient.Client) event := d.Id() - pipeline := d.Get("pipeline").(string) + pipeline := d.Get("pipeline_id").(string) hermesTrigger, err := client.GetHermesTriggerByEventAndPipeline(event, pipeline) if err != nil { @@ -92,7 +92,7 @@ func resourcePipelineCronTriggerDelete(d *schema.ResourceData, meta interface{}) err := client.DeleteHermesTriggerByEventAndPipeline(hermesTrigger.Event, hermesTrigger.Pipeline) if err != nil { - log.Printf("Failed to delete hermes trigger: %s", err) + log.Printf("Failed to delete cron trigger: %s", err) } return nil @@ -111,7 +111,7 @@ func mapResourceToPipelineCronTrigger(d *schema.ResourceData) *cfClient.HermesTr triggerId := d.Id() hermesTrigger := &cfClient.HermesTrigger{ Event: triggerId, - Pipeline: d.Get("pipeline").(string), + Pipeline: d.Get("pipeline_id").(string), } return hermesTrigger diff --git a/codefresh/resource_pipeline_cron_trigger_test.go b/codefresh/resource_pipeline_cron_trigger_test.go new file mode 100644 index 00000000..492492db --- /dev/null +++ b/codefresh/resource_pipeline_cron_trigger_test.go @@ -0,0 +1,111 @@ +package codefresh + +import ( + "fmt" + "regexp" + "testing" + + cfClient "github.com/codefresh-io/terraform-provider-codefresh/client" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" +) + +func TestAccCodefreshPipelineCronTrigger_basic(t *testing.T) { + pipelineName := pipelineNamePrefix + acctest.RandString(10) + pipelineResourceName := "codefresh_pipeline.test" + cronTriggerResourceName := "codefresh_pipeline_cron_trigger.test" + var pipeline cfClient.Pipeline + var pipelineCronTrigger cfClient.HermesTrigger + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckCodefreshPipelineCronTriggerDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCodefreshPipelineBasicConfig(pipelineName, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git"), + Check: resource.ComposeTestCheckFunc( + testAccCheckCodefreshPipelineExists(pipelineResourceName, &pipeline), + resource.TestCheckResourceAttr(pipelineResourceName, "id", pipeline.GetID()), + resource.TestCheckResourceAttr(pipelineResourceName, "name", pipelineName), + ), + }, + { + Config: testAccCodefreshPipelineCronTriggerBasicConfig(pipelineName, "*/1 * * * *", "test message"), + Check: resource.ComposeTestCheckFunc( + testAccCheckCodefreshPipelineCronTriggerExists(cronTriggerResourceName, &pipelineCronTrigger), + resource.TestCheckResourceAttr(cronTriggerResourceName, "pipeline_id", pipeline.GetID()), + resource.TestCheckResourceAttr(cronTriggerResourceName, "expression", "*/1 * * * *"), + resource.TestCheckResourceAttr(cronTriggerResourceName, "message", "test message"), + ), + }, + { + ResourceName: cronTriggerResourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func testAccCodefreshPipelineCronTriggerBasicConfig(pipeline, expression, message string) string { + return fmt.Sprintf(` +resource "codefresh_pipeline_cron_trigger" "test" { + pipeline_id = "%s" + expression = "%s" + message = "%s" + } +`, pipeline, expression, message) +} + +func testAccCheckCodefreshPipelineCronTriggerDestroy(s *terraform.State) error { + apiClient := testAccProvider.Meta().(*cfClient.Client) + + for _, rs := range s.RootModule().Resources { + + if rs.Type != "codefresh_pipline_cron_trigger" { + continue + } + + _, err := apiClient.GetHermesTriggerByEventAndPipeline(rs.Primary.ID, rs.Primary.Attributes["pipeline"]) + + if err == nil { + return fmt.Errorf("Pipeline Cron Trigger still exists") + } + + notFoundErr := "PIPELINE_NOT_FOUND_ERROR" + expectedErr := regexp.MustCompile(notFoundErr) + if !expectedErr.Match([]byte(err.Error())) { + return fmt.Errorf("expected %s, got %s", notFoundErr, err) + } + + } + + return nil +} + +func testAccCheckCodefreshPipelineCronTriggerExists(resource string, pipelineCronTrigger *cfClient.HermesTrigger) resource.TestCheckFunc { + return func(state *terraform.State) error { + + rs, ok := state.RootModule().Resources[resource] + if !ok { + return fmt.Errorf("Not found: %s", resource) + } + if rs.Primary.ID == "" { + return fmt.Errorf("No Record ID is set") + } + + apiClient := testAccProvider.Meta().(*cfClient.Client) + retrievedHermesTrigger, err := apiClient.GetHermesTriggerByEventAndPipeline(rs.Primary.ID, rs.Primary.Attributes["pipeline"]) + + if err != nil { + return fmt.Errorf("error fetching pipeline cron trigger with resource %s. %s", resource, err) + } + + *pipelineCronTrigger = *retrievedHermesTrigger + + return nil + } +} diff --git a/codefresh/resource_pipeline_test.go b/codefresh/resource_pipeline_test.go index 0d5fe451..0f0e1515 100644 --- a/codefresh/resource_pipeline_test.go +++ b/codefresh/resource_pipeline_test.go @@ -17,6 +17,7 @@ var pipelineNamePrefix = "TerraformAccTest_" func TestAccCodefreshPipeline_basic(t *testing.T) { name := pipelineNamePrefix + acctest.RandString(10) resourceName := "codefresh_pipeline.test" + var pipeline cfClient.Pipeline resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -26,7 +27,7 @@ func TestAccCodefreshPipeline_basic(t *testing.T) { { Config: testAccCodefreshPipelineBasicConfig(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git"), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "name", name), resource.TestCheckResourceAttr(resourceName, "spec.0.spec_template.0.revision", "master"), resource.TestCheckResourceAttr(resourceName, "spec.0.spec_template.0.context", "git"), @@ -44,6 +45,7 @@ func TestAccCodefreshPipeline_basic(t *testing.T) { func TestAccCodefreshPipeline_Concurrency(t *testing.T) { name := pipelineNamePrefix + acctest.RandString(10) resourceName := "codefresh_pipeline.test" + var pipeline cfClient.Pipeline resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -53,7 +55,7 @@ func TestAccCodefreshPipeline_Concurrency(t *testing.T) { { Config: testAccCodefreshPipelineBasicConfigConcurrency(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git", "1", "2", "3"), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "spec.0.concurrency", "1"), resource.TestCheckResourceAttr(resourceName, "spec.0.branch_concurrency", "2"), resource.TestCheckResourceAttr(resourceName, "spec.0.trigger_concurrency", "3"), @@ -67,7 +69,7 @@ func TestAccCodefreshPipeline_Concurrency(t *testing.T) { { Config: testAccCodefreshPipelineBasicConfigConcurrency(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git", "4", "5", "6"), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "spec.0.concurrency", "4"), resource.TestCheckResourceAttr(resourceName, "spec.0.branch_concurrency", "5"), resource.TestCheckResourceAttr(resourceName, "spec.0.trigger_concurrency", "6"), @@ -80,6 +82,7 @@ func TestAccCodefreshPipeline_Concurrency(t *testing.T) { func TestAccCodefreshPipeline_Tags(t *testing.T) { name := pipelineNamePrefix + acctest.RandString(10) resourceName := "codefresh_pipeline.test" + var pipeline cfClient.Pipeline resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -89,7 +92,7 @@ func TestAccCodefreshPipeline_Tags(t *testing.T) { { Config: testAccCodefreshPipelineBasicConfigTags(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git", "testTag1", "testTag2"), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "tags.1", "testTag2"), resource.TestCheckResourceAttr(resourceName, "tags.0", "testTag1"), ), @@ -106,6 +109,7 @@ func TestAccCodefreshPipeline_Tags(t *testing.T) { func TestAccCodefreshPipeline_Variables(t *testing.T) { name := pipelineNamePrefix + acctest.RandString(10) resourceName := "codefresh_pipeline.test" + var pipeline cfClient.Pipeline resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -115,7 +119,7 @@ func TestAccCodefreshPipeline_Variables(t *testing.T) { { Config: testAccCodefreshPipelineBasicConfigVariables(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git", "var1", "val1", "var2", "val2"), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "spec.0.variables.var1", "val1"), resource.TestCheckResourceAttr(resourceName, "spec.0.variables.var2", "val2"), ), @@ -128,7 +132,7 @@ func TestAccCodefreshPipeline_Variables(t *testing.T) { { Config: testAccCodefreshPipelineBasicConfigVariables(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git", "var1", "val1_updated", "var2", "val2_updated"), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "spec.0.variables.var1", "val1_updated"), resource.TestCheckResourceAttr(resourceName, "spec.0.variables.var2", "val2_updated"), ), @@ -141,6 +145,7 @@ func TestAccCodefreshPipeline_RuntimeEnvironment(t *testing.T) { name := pipelineNamePrefix + acctest.RandString(10) resourceName := "codefresh_pipeline.test" runtimeName := "system/default-plan" + var pipeline cfClient.Pipeline resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -150,7 +155,7 @@ func TestAccCodefreshPipeline_RuntimeEnvironment(t *testing.T) { { Config: testAccCodefreshPipelineBasicConfigRuntimeEnvironment(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git", runtimeName), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "spec.0.runtime_environment.0.name", runtimeName), ), }, @@ -217,6 +222,8 @@ steps: }, } + var pipeline cfClient.Pipeline + resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Providers: testAccProviders, @@ -226,7 +233,7 @@ steps: Config: testAccCodefreshPipelineBasicConfigOriginalYamlString(name, originalYamlString), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "original_yaml_string", originalYamlString), testAccCheckCodefreshPipelineOriginalYamlStringAttributePropagation(resourceName, expectedSpecAttributes), ), @@ -243,6 +250,7 @@ steps: func TestAccCodefreshPipeline_Triggers(t *testing.T) { name := pipelineNamePrefix + acctest.RandString(10) resourceName := "codefresh_pipeline.test" + var pipeline cfClient.Pipeline resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -279,7 +287,7 @@ func TestAccCodefreshPipeline_Triggers(t *testing.T) { "commitstatustitle", ), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "spec.0.trigger.#", "2"), resource.TestCheckResourceAttr(resourceName, "spec.0.trigger.0.branch_regex", "/^(?!(master)$).*/gi"), resource.TestCheckResourceAttr(resourceName, "spec.0.trigger.0.branch_regex_input", "multiselect"), @@ -329,7 +337,7 @@ func TestAccCodefreshPipeline_Triggers(t *testing.T) { "commitstatustitle", ), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "spec.0.trigger.0.branch_regex", "/release/gi"), resource.TestCheckResourceAttr(resourceName, "spec.0.trigger.0.branch_regex_input", "multiselect-exclude"), resource.TestCheckResourceAttr(resourceName, "spec.0.trigger.0.pull_request_target_branch_regex", "/release/gi"), @@ -349,6 +357,7 @@ func TestAccCodefreshPipeline_Triggers(t *testing.T) { func TestAccCodefreshPipeline_Revision(t *testing.T) { name := pipelineNamePrefix + acctest.RandString(10) resourceName := "codefresh_pipeline.test" + var pipeline cfClient.Pipeline resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -358,7 +367,7 @@ func TestAccCodefreshPipeline_Revision(t *testing.T) { { Config: testAccCodefreshPipelineBasicConfig(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git"), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "revision", "0"), ), }, @@ -370,7 +379,7 @@ func TestAccCodefreshPipeline_Revision(t *testing.T) { { Config: testAccCodefreshPipelineBasicConfig(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "development", "git"), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "revision", "1"), ), }, @@ -381,6 +390,7 @@ func TestAccCodefreshPipeline_Revision(t *testing.T) { func TestAccCodefreshPipeline_IsPublic(t *testing.T) { name := pipelineNamePrefix + acctest.RandString(10) resourceName := "codefresh_pipeline.test" + var pipeline cfClient.Pipeline resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -390,7 +400,7 @@ func TestAccCodefreshPipeline_IsPublic(t *testing.T) { { Config: testAccCodefreshPipelineBasicConfig(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git"), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "is_public", "false"), ), }, @@ -402,7 +412,7 @@ func TestAccCodefreshPipeline_IsPublic(t *testing.T) { { Config: testAccCodefreshPipelineIsPublic(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "development", "git", true), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "is_public", "true"), ), }, @@ -413,6 +423,7 @@ func TestAccCodefreshPipeline_IsPublic(t *testing.T) { func TestAccCodefreshPipelineOnCreateBranchIgnoreTrigger(t *testing.T) { name := pipelineNamePrefix + acctest.RandString(10) resourceName := "codefresh_pipeline.test" + var pipeline cfClient.Pipeline resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -422,7 +433,7 @@ func TestAccCodefreshPipelineOnCreateBranchIgnoreTrigger(t *testing.T) { { Config: testAccCodefreshPipelineOnCreateBranchIgnoreTrigger(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git", true), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "name", name), resource.TestCheckResourceAttr(resourceName, "spec.0.termination_policy.0.on_create_branch.0.ignore_trigger", "true"), ), @@ -435,7 +446,7 @@ func TestAccCodefreshPipelineOnCreateBranchIgnoreTrigger(t *testing.T) { { Config: testAccCodefreshPipelineBasicConfig(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git"), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "name", name), resource.TestCheckNoResourceAttr(resourceName, "spec.0.termination_policy.0.on_create_branch"), ), @@ -447,6 +458,7 @@ func TestAccCodefreshPipelineOnCreateBranchIgnoreTrigger(t *testing.T) { func TestAccCodefreshPipelineOptions(t *testing.T) { name := pipelineNamePrefix + acctest.RandString(10) resourceName := "codefresh_pipeline.test" + var pipeline cfClient.Pipeline resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -456,7 +468,7 @@ func TestAccCodefreshPipelineOptions(t *testing.T) { { Config: testAccCodefreshPipelineOptions(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git", true, false), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "name", name), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "spec.0.options.*", map[string]string{ "keep_pvcs_for_pending_approval": "true", @@ -472,7 +484,7 @@ func TestAccCodefreshPipelineOptions(t *testing.T) { { Config: testAccCodefreshPipelineBasicConfig(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git"), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "name", name), resource.TestCheckNoResourceAttr(resourceName, "spec.0.options.#"), ), @@ -481,7 +493,7 @@ func TestAccCodefreshPipelineOptions(t *testing.T) { }) } -func testAccCheckCodefreshPipelineExists(resource string) resource.TestCheckFunc { +func testAccCheckCodefreshPipelineExists(resource string, pipeline *cfClient.Pipeline) resource.TestCheckFunc { return func(state *terraform.State) error { rs, ok := state.RootModule().Resources[resource] @@ -495,11 +507,14 @@ func testAccCheckCodefreshPipelineExists(resource string) resource.TestCheckFunc pipelineID := rs.Primary.ID apiClient := testAccProvider.Meta().(*cfClient.Client) - _, err := apiClient.GetPipeline(pipelineID) + retrievedPipeline, err := apiClient.GetPipeline(pipelineID) if err != nil { return fmt.Errorf("error fetching pipeline with resource %s. %s", resource, err) } + + *pipeline = *retrievedPipeline + return nil } } @@ -885,6 +900,7 @@ resource "codefresh_pipeline" "test" { func TestAccCodefreshPipeline_Contexts(t *testing.T) { name := pipelineNamePrefix + acctest.RandString(10) resourceName := "codefresh_pipeline.test" + var pipeline cfClient.Pipeline resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -894,7 +910,7 @@ func TestAccCodefreshPipeline_Contexts(t *testing.T) { { Config: testAccCodefreshPipelineBasicConfigContexts(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git", "context1", "context2"), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "spec.0.contexts.0", "context1"), resource.TestCheckResourceAttr(resourceName, "spec.0.contexts.1", "context2"), ), @@ -907,7 +923,7 @@ func TestAccCodefreshPipeline_Contexts(t *testing.T) { { Config: testAccCodefreshPipelineBasicConfigContexts(name, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git", "context1_updated", "context2_updated"), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(resourceName), + testAccCheckCodefreshPipelineExists(resourceName, &pipeline), resource.TestCheckResourceAttr(resourceName, "spec.0.contexts.0", "context1_updated"), resource.TestCheckResourceAttr(resourceName, "spec.0.contexts.1", "context2_updated"), ), From ebf4583a1d0ef35327e91f2408f865bc647742cb Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Sun, 25 Sep 2022 16:48:04 +0300 Subject: [PATCH 14/44] (WIP): fix cron trigger tests. --- client/hermes_trigger.go | 4 ++-- codefresh/resource_pipeline_cron_trigger.go | 8 ++++---- codefresh/resource_pipeline_cron_trigger_test.go | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/client/hermes_trigger.go b/client/hermes_trigger.go index 8e3cf636..8a0e4ac3 100644 --- a/client/hermes_trigger.go +++ b/client/hermes_trigger.go @@ -6,7 +6,7 @@ import ( type HermesTrigger struct { Event string `json:"event,omitempty"` - Pipeline string `json:"pipeline,omitempty"` + PipelineID string `json:"pipeline,omitempty"` EventData EventData `json:"event-data,omitempty"` } @@ -40,7 +40,7 @@ func (client *Client) GetHermesTriggerByEventAndPipeline(event string, pipeline var hermesTrigger HermesTrigger for _, trigger := range hermesTriggerList { - if trigger.Pipeline == pipeline { + if trigger.PipelineID == pipeline { hermesTrigger = trigger } } diff --git a/codefresh/resource_pipeline_cron_trigger.go b/codefresh/resource_pipeline_cron_trigger.go index 0e8aa724..4701553f 100644 --- a/codefresh/resource_pipeline_cron_trigger.go +++ b/codefresh/resource_pipeline_cron_trigger.go @@ -51,7 +51,7 @@ func resourcePipelineCronTriggerCreate(d *schema.ResourceData, meta interface{}) hermesTrigger := *mapResourceToPipelineCronTrigger(d) - err = client.CreateHermesTriggerByEventAndPipeline(eventString, hermesTrigger.Pipeline) + err = client.CreateHermesTriggerByEventAndPipeline(eventString, hermesTrigger.PipelineID) if err != nil { return err } @@ -90,7 +90,7 @@ func resourcePipelineCronTriggerDelete(d *schema.ResourceData, meta interface{}) hermesTrigger := *mapResourceToPipelineCronTrigger(d) - err := client.DeleteHermesTriggerByEventAndPipeline(hermesTrigger.Event, hermesTrigger.Pipeline) + err := client.DeleteHermesTriggerByEventAndPipeline(hermesTrigger.Event, hermesTrigger.PipelineID) if err != nil { log.Printf("Failed to delete cron trigger: %s", err) } @@ -101,7 +101,7 @@ func resourcePipelineCronTriggerDelete(d *schema.ResourceData, meta interface{}) func mapPipelineCronTriggerToResource(hermesTrigger *cfClient.HermesTrigger, d *schema.ResourceData) error { d.SetId(hermesTrigger.Event) - d.Set("pipeline", hermesTrigger.Pipeline) + d.Set("pipeline_id", hermesTrigger.PipelineID) return nil } @@ -111,7 +111,7 @@ func mapResourceToPipelineCronTrigger(d *schema.ResourceData) *cfClient.HermesTr triggerId := d.Id() hermesTrigger := &cfClient.HermesTrigger{ Event: triggerId, - Pipeline: d.Get("pipeline_id").(string), + PipelineID: d.Get("pipeline_id").(string), } return hermesTrigger diff --git a/codefresh/resource_pipeline_cron_trigger_test.go b/codefresh/resource_pipeline_cron_trigger_test.go index 492492db..e88fd729 100644 --- a/codefresh/resource_pipeline_cron_trigger_test.go +++ b/codefresh/resource_pipeline_cron_trigger_test.go @@ -19,7 +19,7 @@ func TestAccCodefreshPipelineCronTrigger_basic(t *testing.T) { var pipeline cfClient.Pipeline var pipelineCronTrigger cfClient.HermesTrigger - resource.ParallelTest(t, resource.TestCase{ + resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Providers: testAccProviders, CheckDestroy: testAccCheckCodefreshPipelineCronTriggerDestroy, @@ -33,7 +33,7 @@ func TestAccCodefreshPipelineCronTrigger_basic(t *testing.T) { ), }, { - Config: testAccCodefreshPipelineCronTriggerBasicConfig(pipelineName, "*/1 * * * *", "test message"), + Config: testAccCodefreshPipelineCronTriggerBasicConfig(pipeline.GetID(), "*/1 * * * *", "test message"), Check: resource.ComposeTestCheckFunc( testAccCheckCodefreshPipelineCronTriggerExists(cronTriggerResourceName, &pipelineCronTrigger), resource.TestCheckResourceAttr(cronTriggerResourceName, "pipeline_id", pipeline.GetID()), @@ -50,14 +50,14 @@ func TestAccCodefreshPipelineCronTrigger_basic(t *testing.T) { }) } -func testAccCodefreshPipelineCronTriggerBasicConfig(pipeline, expression, message string) string { +func testAccCodefreshPipelineCronTriggerBasicConfig(pipelineID, expression, message string) string { return fmt.Sprintf(` resource "codefresh_pipeline_cron_trigger" "test" { pipeline_id = "%s" expression = "%s" message = "%s" } -`, pipeline, expression, message) +`, pipelineID, expression, message) } func testAccCheckCodefreshPipelineCronTriggerDestroy(s *terraform.State) error { From e56a6a50b679a9a9c85188da04032e572e9a6468 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Wed, 28 Sep 2022 16:02:00 +0300 Subject: [PATCH 15/44] Fix imports. --- client/hermes_trigger.go | 3 ++ codefresh/resource_pipeline_cron_trigger.go | 43 ++++++++++++++--- .../resource_pipeline_cron_trigger_test.go | 48 +++++++++---------- 3 files changed, 63 insertions(+), 31 deletions(-) diff --git a/client/hermes_trigger.go b/client/hermes_trigger.go index 8a0e4ac3..43b34007 100644 --- a/client/hermes_trigger.go +++ b/client/hermes_trigger.go @@ -44,6 +44,9 @@ func (client *Client) GetHermesTriggerByEventAndPipeline(event string, pipeline hermesTrigger = trigger } } + if hermesTrigger.Event == "" { + return nil, fmt.Errorf("No trigger found for event %s and pipeline %s", event, pipeline) + } return &hermesTrigger, nil } diff --git a/codefresh/resource_pipeline_cron_trigger.go b/codefresh/resource_pipeline_cron_trigger.go index 4701553f..18490033 100644 --- a/codefresh/resource_pipeline_cron_trigger.go +++ b/codefresh/resource_pipeline_cron_trigger.go @@ -1,7 +1,9 @@ package codefresh import ( - "log" + "fmt" + "strings" + "regexp" cfClient "github.com/codefresh-io/terraform-provider-codefresh/client" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -14,18 +16,31 @@ func resourcePipelineCronTrigger() *schema.Resource { Update: resourcePipelineCronTriggerUpdate, Delete: resourcePipelineCronTriggerDelete, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, - }, + State: func(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) { + idParts := strings.Split(d.Id(), ",") + + if len(idParts) != 2 || idParts[0] == "" || idParts[1] == "" { + return nil, fmt.Errorf("Unexpected format of ID (%q), expected EVENT,PIPELINE_ID", d.Id()) + } + + event := idParts[0] + pipelineID := idParts[1] + d.SetId(event) + d.Set("pipeline_id", pipelineID) + + return []*schema.ResourceData{d}, nil + }, + }, Schema: map[string]*schema.Schema{ - "expression": { + "pipeline_id": { Type: schema.TypeString, Required: true, }, - "message": { + "expression": { Type: schema.TypeString, Required: true, }, - "pipeline_id": { + "message": { Type: schema.TypeString, Required: true, }, @@ -65,6 +80,10 @@ func resourcePipelineCronTriggerRead(d *schema.ResourceData, meta interface{}) e client := meta.(*cfClient.Client) + // TODO: remove + if d.Get("pipeline_id").(string) == "" { + return fmt.Errorf("ID: %s, pipeline_id: %s", d.Id(), d.Get("pipeline_id").(string)) + } event := d.Id() pipeline := d.Get("pipeline_id").(string) @@ -92,7 +111,7 @@ func resourcePipelineCronTriggerDelete(d *schema.ResourceData, meta interface{}) err := client.DeleteHermesTriggerByEventAndPipeline(hermesTrigger.Event, hermesTrigger.PipelineID) if err != nil { - log.Printf("Failed to delete cron trigger: %s", err) + return fmt.Errorf("Failed to delete cron trigger: %s", err) } return nil @@ -103,6 +122,16 @@ func mapPipelineCronTriggerToResource(hermesTrigger *cfClient.HermesTrigger, d * d.SetId(hermesTrigger.Event) d.Set("pipeline_id", hermesTrigger.PipelineID) + if hermesTrigger.Event != ""{ + r := regexp.MustCompile(".+:.+:.+:.+") + eventStringAttributes := strings.Split(hermesTrigger.Event, ":") + if !r.MatchString(hermesTrigger.Event) { + return fmt.Errorf("Event string must be in format 'cron:codefresh:[expression]:[message]:[uid]': %s", hermesTrigger.Event) + } + d.Set("expression", eventStringAttributes[2]) + d.Set("message", eventStringAttributes[3]) + } + return nil } diff --git a/codefresh/resource_pipeline_cron_trigger_test.go b/codefresh/resource_pipeline_cron_trigger_test.go index e88fd729..1acc9083 100644 --- a/codefresh/resource_pipeline_cron_trigger_test.go +++ b/codefresh/resource_pipeline_cron_trigger_test.go @@ -14,50 +14,40 @@ import ( func TestAccCodefreshPipelineCronTrigger_basic(t *testing.T) { pipelineName := pipelineNamePrefix + acctest.RandString(10) - pipelineResourceName := "codefresh_pipeline.test" - cronTriggerResourceName := "codefresh_pipeline_cron_trigger.test" - var pipeline cfClient.Pipeline + resourceName := "codefresh_pipeline_cron_trigger.test" var pipelineCronTrigger cfClient.HermesTrigger - resource.Test(t, resource.TestCase{ + resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Providers: testAccProviders, CheckDestroy: testAccCheckCodefreshPipelineCronTriggerDestroy, Steps: []resource.TestStep{ { - Config: testAccCodefreshPipelineBasicConfig(pipelineName, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git"), + Config: testAccCodefreshPipelineCronTriggerBasicConfig(pipelineName, "codefresh-contrib/react-sample-app", "./codefresh.yml", "master", "git", "*/1 * * * *", "test message"), Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineExists(pipelineResourceName, &pipeline), - resource.TestCheckResourceAttr(pipelineResourceName, "id", pipeline.GetID()), - resource.TestCheckResourceAttr(pipelineResourceName, "name", pipelineName), + testAccCheckCodefreshPipelineCronTriggerExists(resourceName, &pipelineCronTrigger), + resource.TestCheckResourceAttr(resourceName, "expression", "*/1 * * * *"), + resource.TestCheckResourceAttr(resourceName, "message", "test message"), ), }, { - Config: testAccCodefreshPipelineCronTriggerBasicConfig(pipeline.GetID(), "*/1 * * * *", "test message"), - Check: resource.ComposeTestCheckFunc( - testAccCheckCodefreshPipelineCronTriggerExists(cronTriggerResourceName, &pipelineCronTrigger), - resource.TestCheckResourceAttr(cronTriggerResourceName, "pipeline_id", pipeline.GetID()), - resource.TestCheckResourceAttr(cronTriggerResourceName, "expression", "*/1 * * * *"), - resource.TestCheckResourceAttr(cronTriggerResourceName, "message", "test message"), - ), - }, - { - ResourceName: cronTriggerResourceName, + ResourceName: resourceName, ImportState: true, + ImportStateIdFunc: testAccCodefreshPipelineCronTriggerImportStateIDFunc(resourceName), ImportStateVerify: true, }, }, }) } -func testAccCodefreshPipelineCronTriggerBasicConfig(pipelineID, expression, message string) string { - return fmt.Sprintf(` +func testAccCodefreshPipelineCronTriggerBasicConfig(rName, repo, path, revision, context, expression, message string) string { + return testAccCodefreshPipelineBasicConfig(rName, repo, path, revision, context) + fmt.Sprintf(` resource "codefresh_pipeline_cron_trigger" "test" { - pipeline_id = "%s" + pipeline_id = codefresh_pipeline.test.id expression = "%s" message = "%s" } -`, pipelineID, expression, message) +`, expression, message) } func testAccCheckCodefreshPipelineCronTriggerDestroy(s *terraform.State) error { @@ -69,7 +59,7 @@ func testAccCheckCodefreshPipelineCronTriggerDestroy(s *terraform.State) error { continue } - _, err := apiClient.GetHermesTriggerByEventAndPipeline(rs.Primary.ID, rs.Primary.Attributes["pipeline"]) + _, err := apiClient.GetHermesTriggerByEventAndPipeline(rs.Primary.ID, rs.Primary.Attributes["pipeline_id"]) if err == nil { return fmt.Errorf("Pipeline Cron Trigger still exists") @@ -98,7 +88,7 @@ func testAccCheckCodefreshPipelineCronTriggerExists(resource string, pipelineCro } apiClient := testAccProvider.Meta().(*cfClient.Client) - retrievedHermesTrigger, err := apiClient.GetHermesTriggerByEventAndPipeline(rs.Primary.ID, rs.Primary.Attributes["pipeline"]) + retrievedHermesTrigger, err := apiClient.GetHermesTriggerByEventAndPipeline(rs.Primary.ID, rs.Primary.Attributes["pipeline_id"]) if err != nil { return fmt.Errorf("error fetching pipeline cron trigger with resource %s. %s", resource, err) @@ -109,3 +99,13 @@ func testAccCheckCodefreshPipelineCronTriggerExists(resource string, pipelineCro return nil } } + +func testAccCodefreshPipelineCronTriggerImportStateIDFunc(resourceName string) resource.ImportStateIdFunc { + return func(s *terraform.State) (string, error) { + rs, ok := s.RootModule().Resources[resourceName] + if !ok { + return "", fmt.Errorf("Not found: %s", resourceName) + } + return fmt.Sprintf("%s,%s", rs.Primary.ID, rs.Primary.Attributes["pipeline_id"]), nil + } +} \ No newline at end of file From 67a7bcca9cd70477a0b7867fffae3154785151d2 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Wed, 28 Sep 2022 16:06:39 +0300 Subject: [PATCH 16/44] Remove deprecation. --- codefresh/resource_pipeline.go | 1 - 1 file changed, 1 deletion(-) diff --git a/codefresh/resource_pipeline.go b/codefresh/resource_pipeline.go index bb7d7150..2514b925 100644 --- a/codefresh/resource_pipeline.go +++ b/codefresh/resource_pipeline.go @@ -118,7 +118,6 @@ func resourcePipeline() *schema.Resource { }, "trigger": { Type: schema.TypeList, - Deprecated: "Use the codefresh_git_trigger resource instead", Optional: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ From 81735d75e1c2dff6aaac12d6fd1fb006ec893385 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Wed, 28 Sep 2022 16:21:04 +0300 Subject: [PATCH 17/44] Add documentation. --- docs/resources/pipeline_cron_trigger.md | 37 +++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 docs/resources/pipeline_cron_trigger.md diff --git a/docs/resources/pipeline_cron_trigger.md b/docs/resources/pipeline_cron_trigger.md new file mode 100644 index 00000000..602a7a7c --- /dev/null +++ b/docs/resources/pipeline_cron_trigger.md @@ -0,0 +1,37 @@ +# Pipeline Cron Trigger resource + +Pipeline Cron Trigger is used to create cron-based triggers for pipeilnes. +See the [documentation](https://codefresh.io/docs/docs/configure-ci-cd-pipeline/triggers/cron-triggers/). + +## Example usage + +```hcl +resource "codefresh_project" "test" { + name = "myproject" +} + +resource "codefresh_pipeline" "test" { + + name = "${codefresh_project.test.name}/react-sample-app" + + ... +} + +resource "codefresh_pipeline_cron_trigger" "test" { + pipeline_id = codefresh_pipeline.test.id + expression = "*/1 * * * *" + message = "Example Cron Trigger" +} +``` + +## Argument Reference + +- `pipeline_id` - (Required) The pipeline to which this trigger belongs. +- `expression` - (Required) The cron expression. Visit [this page](https://github.com/codefresh-io/cronus/blob/master/docs/expression.md) to learn about the supported cron expression format and aliases. +- `message` - (Required) The message which will be passed to the pipeline upon each trigger. + +## Attributes Reference + +Along with all arguments above, the following attributes are exported: + +- `event` - The Event ID assigned to this trigger. \ No newline at end of file From 1366d42b6829762cf535bf1ad5e85c07ee1012be Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Wed, 28 Sep 2022 16:25:44 +0300 Subject: [PATCH 18/44] Empty commit. From 5a18fb948c6bf8bd738524b152e6f0cea91c2a81 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Wed, 28 Sep 2022 16:36:41 +0300 Subject: [PATCH 19/44] Add tests. --- codefresh.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/codefresh.yml b/codefresh.yml index 3c4080c9..74848629 100644 --- a/codefresh.yml +++ b/codefresh.yml @@ -19,6 +19,15 @@ steps: image: goreleaser/goreleaser:v1.6.3 commands: - go fmt + + go_test: + title: 'Run tests' + stage: test + image: goreleaser/goreleaser:v1.6.3 + environment: + - TF_ACC="test" + commands: + - go test -v ./... prepare_env_vars: title: 'Preparing environment variables...' From f2f8c756a39aae115c0da3afee17a1392081bf6b Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Wed, 28 Sep 2022 16:41:41 +0300 Subject: [PATCH 20/44] Empty commit. From bc76830d01bf794c7da40c213f4e7a8ebfac18f2 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Wed, 28 Sep 2022 16:43:33 +0300 Subject: [PATCH 21/44] Change git integration name. --- codefresh.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codefresh.yml b/codefresh.yml index 74848629..2dd93597 100644 --- a/codefresh.yml +++ b/codefresh.yml @@ -11,7 +11,7 @@ steps: type: git-clone repo: "${{CF_REPO_OWNER}}/${{CF_REPO_NAME}}" revision: "${{CF_REVISION}}" - git: cf_github + git: github go_fmt: title: 'Formatting' From 358374b09f836e71707b5bf4ea6339fc57d709b5 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Wed, 28 Sep 2022 16:47:37 +0300 Subject: [PATCH 22/44] Bump goreleaser. --- codefresh.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/codefresh.yml b/codefresh.yml index 2dd93597..a2f32a21 100644 --- a/codefresh.yml +++ b/codefresh.yml @@ -16,14 +16,14 @@ steps: go_fmt: title: 'Formatting' stage: test - image: goreleaser/goreleaser:v1.6.3 + image: goreleaser/goreleaser:v1.11.3 commands: - go fmt go_test: title: 'Run tests' stage: test - image: goreleaser/goreleaser:v1.6.3 + image: goreleaser/goreleaser:v1.11.3 environment: - TF_ACC="test" commands: From 47c7a48b0af7e7a804081ead3a366f2a27c18063 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Wed, 28 Sep 2022 16:52:58 +0300 Subject: [PATCH 23/44] Add retries. --- codefresh.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/codefresh.yml b/codefresh.yml index a2f32a21..65ae739b 100644 --- a/codefresh.yml +++ b/codefresh.yml @@ -28,6 +28,10 @@ steps: - TF_ACC="test" commands: - go test -v ./... + retry: + maxAttempts: 3 + delay: 5 + exponentialFactor: 2 prepare_env_vars: title: 'Preparing environment variables...' From f3aef0583f4fc8b2137e0f38e3dd90f605206f0e Mon Sep 17 00:00:00 2001 From: korenyoni Date: Wed, 28 Sep 2022 14:12:46 +0000 Subject: [PATCH 24/44] Update CHANGELOG.md for "v0.1.2" This commit was created by changelog-from-release in 'Changelog from Release' CI workflow --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e124adbc..de13b195 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ + +# [v0.1.2](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.2) - 28 Sep 2022 + +## Changes +- Feat: Add Tests to CI [@korenyoni](https://github.com/korenyoni) ([#5](https://github.com/korenyoni/terraform-provider-codefresh/issues/5)) +- Feat: Pipeline Cron Trigger [@korenyoni](https://github.com/korenyoni) ([#4](https://github.com/korenyoni/terraform-provider-codefresh/issues/4)) + + +[Changes][v0.1.2] + + # [v0.1.1](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.1) - 12 Sep 2022 @@ -19,6 +30,7 @@ [Changes][v0.1.0] +[v0.1.2]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.1...v0.1.2 [v0.1.1]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.0...v0.1.1 [v0.1.0]: https://github.com/korenyoni/terraform-provider-codefresh/tree/v0.1.0 From dd7c9ef77ecc2a19d5eaef39eb692f10fa51d623 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Wed, 28 Sep 2022 17:15:56 +0300 Subject: [PATCH 25/44] Superflous change to test release. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 0d2993ca..7f29309f 100644 --- a/README.md +++ b/README.md @@ -82,4 +82,3 @@ export CODEFRESH_API_KEY='xyz' Copyright 2022 Codefresh. The Codefresh Provider is available under [MPL2.0 license](./LICENSE). - From 29ab310ddcc04e96abef9abac5274a301e8c4c9b Mon Sep 17 00:00:00 2001 From: korenyoni Date: Wed, 28 Sep 2022 14:18:59 +0000 Subject: [PATCH 26/44] Update CHANGELOG.md for "v0.1.3" This commit was created by changelog-from-release in 'Changelog from Release' CI workflow --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index de13b195..eb44791d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ + +# [v0.1.3](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.3) - 28 Sep 2022 + +## Changes +- Test: Test Release [@korenyoni](https://github.com/korenyoni) ([#6](https://github.com/korenyoni/terraform-provider-codefresh/issues/6)) + + +[Changes][v0.1.3] + + # [v0.1.2](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.2) - 28 Sep 2022 @@ -30,6 +40,7 @@ [Changes][v0.1.0] +[v0.1.3]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.2...v0.1.3 [v0.1.2]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.1...v0.1.2 [v0.1.1]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.0...v0.1.1 [v0.1.0]: https://github.com/korenyoni/terraform-provider-codefresh/tree/v0.1.0 From d073675b31e538a0fdedd3895685919719a9e206 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Wed, 28 Sep 2022 17:24:28 +0300 Subject: [PATCH 27/44] Add section in README on running acceptance tests. --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 7f29309f..78e4806b 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,12 @@ export CODEFRESH_API_KEY='xyz' ## Testing the Provider +```bash +export TF_ACC="test" +export CODEFRESH_API_KEY=[YOUR API TOKEN] +go test -v ./... +``` + ## License Copyright 2022 Codefresh. From e9d94e3b411ef15e666d7c9e36a3835d5b6c5e36 Mon Sep 17 00:00:00 2001 From: korenyoni Date: Wed, 28 Sep 2022 14:28:45 +0000 Subject: [PATCH 28/44] Update CHANGELOG.md for "v0.1.4" This commit was created by changelog-from-release in 'Changelog from Release' CI workflow --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb44791d..93fd3068 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ + +# [v0.1.4](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.4) - 28 Sep 2022 + +## Changes +- Docs: Add Terraform Acceptance Tests Section to README [@korenyoni](https://github.com/korenyoni) ([#7](https://github.com/korenyoni/terraform-provider-codefresh/issues/7)) + + +[Changes][v0.1.4] + + # [v0.1.3](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.3) - 28 Sep 2022 @@ -40,6 +50,7 @@ [Changes][v0.1.0] +[v0.1.4]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.3...v0.1.4 [v0.1.3]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.2...v0.1.3 [v0.1.2]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.1...v0.1.2 [v0.1.1]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.0...v0.1.1 From ab5b6c3e332326ae3ad998c7054b06a5f2bc735c Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Wed, 28 Sep 2022 20:03:08 +0300 Subject: [PATCH 29/44] Clear CHANGELOG and fix CF pipeline. --- CHANGELOG.md | 48 ------------------------------------------------ codefresh.yml | 2 +- 2 files changed, 1 insertion(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb44791d..e69de29b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,48 +0,0 @@ - -# [v0.1.3](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.3) - 28 Sep 2022 - -## Changes -- Test: Test Release [@korenyoni](https://github.com/korenyoni) ([#6](https://github.com/korenyoni/terraform-provider-codefresh/issues/6)) - - -[Changes][v0.1.3] - - - -# [v0.1.2](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.2) - 28 Sep 2022 - -## Changes -- Feat: Add Tests to CI [@korenyoni](https://github.com/korenyoni) ([#5](https://github.com/korenyoni/terraform-provider-codefresh/issues/5)) -- Feat: Pipeline Cron Trigger [@korenyoni](https://github.com/korenyoni) ([#4](https://github.com/korenyoni/terraform-provider-codefresh/issues/4)) - - -[Changes][v0.1.2] - - - -# [v0.1.1](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.1) - 12 Sep 2022 - -## Changes -- Fix: changelog automation [@korenyoni](https://github.com/korenyoni) ([#3](https://github.com/korenyoni/terraform-provider-codefresh/issues/3)) - - -[Changes][v0.1.1] - - - -# [v0.1.0](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.0) - 12 Sep 2022 - -## Changes -- Fix: Deprecate Trigger Block [@korenyoni](https://github.com/korenyoni) ([#2](https://github.com/korenyoni/terraform-provider-codefresh/issues/2)) -- Fix: Misc Automation Fixes [@korenyoni](https://github.com/korenyoni) ([#1](https://github.com/korenyoni/terraform-provider-codefresh/issues/1)) - - -[Changes][v0.1.0] - - -[v0.1.3]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.2...v0.1.3 -[v0.1.2]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.1...v0.1.2 -[v0.1.1]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.0...v0.1.1 -[v0.1.0]: https://github.com/korenyoni/terraform-provider-codefresh/tree/v0.1.0 - - diff --git a/codefresh.yml b/codefresh.yml index 65ae739b..8713684e 100644 --- a/codefresh.yml +++ b/codefresh.yml @@ -11,7 +11,7 @@ steps: type: git-clone repo: "${{CF_REPO_OWNER}}/${{CF_REPO_NAME}}" revision: "${{CF_REVISION}}" - git: github + git: cf_github go_fmt: title: 'Formatting' From 4b1a5853acb5a2e25c6d3d86a03e17278c158bf4 Mon Sep 17 00:00:00 2001 From: korenyoni Date: Sun, 2 Oct 2022 07:31:41 +0000 Subject: [PATCH 30/44] Update CHANGELOG.md for "v0.1.5" This commit was created by changelog-from-release in 'Changelog from Release' CI workflow --- CHANGELOG.md | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e69de29b..03b6d4fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -0,0 +1,70 @@ + +# [v0.1.5](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.5) - 02 Oct 2022 + +## Changes +* No changes + + +[Changes][v0.1.5] + + + +# [v0.1.4](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.4) - 28 Sep 2022 + +## Changes +- Docs: Add Terraform Acceptance Tests Section to README [@korenyoni](https://github.com/korenyoni) ([#7](https://github.com/korenyoni/terraform-provider-codefresh/issues/7)) + + +[Changes][v0.1.4] + + + +# [v0.1.3](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.3) - 28 Sep 2022 + +## Changes +- Test: Test Release [@korenyoni](https://github.com/korenyoni) ([#6](https://github.com/korenyoni/terraform-provider-codefresh/issues/6)) + + +[Changes][v0.1.3] + + + +# [v0.1.2](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.2) - 28 Sep 2022 + +## Changes +- Feat: Add Tests to CI [@korenyoni](https://github.com/korenyoni) ([#5](https://github.com/korenyoni/terraform-provider-codefresh/issues/5)) +- Feat: Pipeline Cron Trigger [@korenyoni](https://github.com/korenyoni) ([#4](https://github.com/korenyoni/terraform-provider-codefresh/issues/4)) + + +[Changes][v0.1.2] + + + +# [v0.1.1](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.1) - 12 Sep 2022 + +## Changes +- Fix: changelog automation [@korenyoni](https://github.com/korenyoni) ([#3](https://github.com/korenyoni/terraform-provider-codefresh/issues/3)) + + +[Changes][v0.1.1] + + + +# [v0.1.0](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.0) - 12 Sep 2022 + +## Changes +- Fix: Deprecate Trigger Block [@korenyoni](https://github.com/korenyoni) ([#2](https://github.com/korenyoni/terraform-provider-codefresh/issues/2)) +- Fix: Misc Automation Fixes [@korenyoni](https://github.com/korenyoni) ([#1](https://github.com/korenyoni/terraform-provider-codefresh/issues/1)) + + +[Changes][v0.1.0] + + +[v0.1.5]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.4...v0.1.5 +[v0.1.4]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.3...v0.1.4 +[v0.1.3]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.2...v0.1.3 +[v0.1.2]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.1...v0.1.2 +[v0.1.1]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.0...v0.1.1 +[v0.1.0]: https://github.com/korenyoni/terraform-provider-codefresh/tree/v0.1.0 + + From e0db70fbb1f04c2dbbf7d67280e455759871bb12 Mon Sep 17 00:00:00 2001 From: korenyoni Date: Sun, 2 Oct 2022 08:30:56 +0000 Subject: [PATCH 31/44] Update CHANGELOG.md for "v0.1.5" This commit was created by changelog-from-release in 'Changelog from Release' CI workflow --- CHANGELOG.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 03b6d4fe..bd3b6bd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,7 @@ # [v0.1.5](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.5) - 02 Oct 2022 -## Changes -* No changes - +No changes [Changes][v0.1.5] From 4c2477c78b6e4dc499a0b3b176ae63d3eee93c24 Mon Sep 17 00:00:00 2001 From: Yonatan Koren Date: Sun, 2 Oct 2022 11:43:57 +0300 Subject: [PATCH 32/44] Update codefresh.yml --- codefresh.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codefresh.yml b/codefresh.yml index 8713684e..e66b9b89 100644 --- a/codefresh.yml +++ b/codefresh.yml @@ -53,7 +53,7 @@ steps: release_binaries: title: Create release in Github - image: goreleaser/goreleaser:v1.6.3 + image: goreleaser/goreleaser:v1.11.3 stage: release environment: - GPG_FINGERPRINT=${{GPG_FINGERPRINT}} From ee620ea210a757f29878d7b28ba15b902c19f1df Mon Sep 17 00:00:00 2001 From: korenyoni Date: Sun, 2 Oct 2022 08:45:11 +0000 Subject: [PATCH 33/44] Update CHANGELOG.md for "v0.1.5" This commit was created by changelog-from-release in 'Changelog from Release' CI workflow --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd3b6bd0..03b6d4fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,9 @@ # [v0.1.5](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.5) - 02 Oct 2022 -No changes +## Changes +* No changes + [Changes][v0.1.5] From e8e14ee8fd35c1fa05d7e87fe199dd07521e67a4 Mon Sep 17 00:00:00 2001 From: Yonatan Koren Date: Mon, 3 Oct 2022 10:33:36 +0300 Subject: [PATCH 34/44] Update CHANGELOG.md --- CHANGELOG.md | 69 ---------------------------------------------------- 1 file changed, 69 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 03b6d4fe..8b137891 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,70 +1 @@ - -# [v0.1.5](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.5) - 02 Oct 2022 -## Changes -* No changes - - -[Changes][v0.1.5] - - - -# [v0.1.4](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.4) - 28 Sep 2022 - -## Changes -- Docs: Add Terraform Acceptance Tests Section to README [@korenyoni](https://github.com/korenyoni) ([#7](https://github.com/korenyoni/terraform-provider-codefresh/issues/7)) - - -[Changes][v0.1.4] - - - -# [v0.1.3](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.3) - 28 Sep 2022 - -## Changes -- Test: Test Release [@korenyoni](https://github.com/korenyoni) ([#6](https://github.com/korenyoni/terraform-provider-codefresh/issues/6)) - - -[Changes][v0.1.3] - - - -# [v0.1.2](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.2) - 28 Sep 2022 - -## Changes -- Feat: Add Tests to CI [@korenyoni](https://github.com/korenyoni) ([#5](https://github.com/korenyoni/terraform-provider-codefresh/issues/5)) -- Feat: Pipeline Cron Trigger [@korenyoni](https://github.com/korenyoni) ([#4](https://github.com/korenyoni/terraform-provider-codefresh/issues/4)) - - -[Changes][v0.1.2] - - - -# [v0.1.1](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.1) - 12 Sep 2022 - -## Changes -- Fix: changelog automation [@korenyoni](https://github.com/korenyoni) ([#3](https://github.com/korenyoni/terraform-provider-codefresh/issues/3)) - - -[Changes][v0.1.1] - - - -# [v0.1.0](https://github.com/korenyoni/terraform-provider-codefresh/releases/tag/v0.1.0) - 12 Sep 2022 - -## Changes -- Fix: Deprecate Trigger Block [@korenyoni](https://github.com/korenyoni) ([#2](https://github.com/korenyoni/terraform-provider-codefresh/issues/2)) -- Fix: Misc Automation Fixes [@korenyoni](https://github.com/korenyoni) ([#1](https://github.com/korenyoni/terraform-provider-codefresh/issues/1)) - - -[Changes][v0.1.0] - - -[v0.1.5]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.4...v0.1.5 -[v0.1.4]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.3...v0.1.4 -[v0.1.3]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.2...v0.1.3 -[v0.1.2]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.1...v0.1.2 -[v0.1.1]: https://github.com/korenyoni/terraform-provider-codefresh/compare/v0.1.0...v0.1.1 -[v0.1.0]: https://github.com/korenyoni/terraform-provider-codefresh/tree/v0.1.0 - - From 93e7ad88be1e820f5912a155c8684064c026f42d Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Mon, 3 Oct 2022 10:35:29 +0300 Subject: [PATCH 35/44] Empty commit From 8b8108e4793da834c503b76fec00171d516bbde7 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Mon, 3 Oct 2022 10:47:25 +0300 Subject: [PATCH 36/44] Empty Commit From a1f3c6e3abe1d6f8c91030a4ea6f2bc8678ba99e Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Mon, 3 Oct 2022 10:48:50 +0300 Subject: [PATCH 37/44] Empty Commit From 4eb8e72e7b1384852c9aa6e55109eca7a6cbc993 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Mon, 3 Oct 2022 10:51:06 +0300 Subject: [PATCH 38/44] Empty Commit From c228c3996738dc9f938c176871f8b5a2e45fd899 Mon Sep 17 00:00:00 2001 From: Yonatan Koren Date: Mon, 3 Oct 2022 10:59:26 +0300 Subject: [PATCH 39/44] Create CODEOWNERS --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000..7d90d173 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @codefresh-io/devops From 29afb982304b1aad9444ed0c24328a41bb147c81 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Mon, 3 Oct 2022 11:09:05 +0300 Subject: [PATCH 40/44] Update / add missing versions.tf files. --- examples/account_tokens/versions.tf | 8 ++++++++ examples/accounts_users/versions.tf | 8 ++++++++ examples/permissions/versions.tf | 8 ++++++++ examples/pipelines/versions.tf | 2 +- examples/registries/versions.tf | 8 ++++++++ examples/storate_integration/versions.tf | 8 ++++++++ examples/teams/versions.tf | 8 ++++++++ examples/triggers/versions.tf | 2 +- 8 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 examples/account_tokens/versions.tf create mode 100644 examples/accounts_users/versions.tf create mode 100644 examples/permissions/versions.tf create mode 100644 examples/registries/versions.tf create mode 100644 examples/storate_integration/versions.tf create mode 100644 examples/teams/versions.tf diff --git a/examples/account_tokens/versions.tf b/examples/account_tokens/versions.tf new file mode 100644 index 00000000..9dee49eb --- /dev/null +++ b/examples/account_tokens/versions.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + codefresh = { + source = "codefresh-io/codefresh" + version = "~> 0.1" + } + } +} \ No newline at end of file diff --git a/examples/accounts_users/versions.tf b/examples/accounts_users/versions.tf new file mode 100644 index 00000000..9dee49eb --- /dev/null +++ b/examples/accounts_users/versions.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + codefresh = { + source = "codefresh-io/codefresh" + version = "~> 0.1" + } + } +} \ No newline at end of file diff --git a/examples/permissions/versions.tf b/examples/permissions/versions.tf new file mode 100644 index 00000000..9dee49eb --- /dev/null +++ b/examples/permissions/versions.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + codefresh = { + source = "codefresh-io/codefresh" + version = "~> 0.1" + } + } +} \ No newline at end of file diff --git a/examples/pipelines/versions.tf b/examples/pipelines/versions.tf index 2e247b4c..9dee49eb 100644 --- a/examples/pipelines/versions.tf +++ b/examples/pipelines/versions.tf @@ -2,7 +2,7 @@ terraform { required_providers { codefresh = { source = "codefresh-io/codefresh" - version = "~> 0.0" + version = "~> 0.1" } } } \ No newline at end of file diff --git a/examples/registries/versions.tf b/examples/registries/versions.tf new file mode 100644 index 00000000..9dee49eb --- /dev/null +++ b/examples/registries/versions.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + codefresh = { + source = "codefresh-io/codefresh" + version = "~> 0.1" + } + } +} \ No newline at end of file diff --git a/examples/storate_integration/versions.tf b/examples/storate_integration/versions.tf new file mode 100644 index 00000000..9dee49eb --- /dev/null +++ b/examples/storate_integration/versions.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + codefresh = { + source = "codefresh-io/codefresh" + version = "~> 0.1" + } + } +} \ No newline at end of file diff --git a/examples/teams/versions.tf b/examples/teams/versions.tf new file mode 100644 index 00000000..9dee49eb --- /dev/null +++ b/examples/teams/versions.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + codefresh = { + source = "codefresh-io/codefresh" + version = "~> 0.1" + } + } +} \ No newline at end of file diff --git a/examples/triggers/versions.tf b/examples/triggers/versions.tf index 2e247b4c..9dee49eb 100644 --- a/examples/triggers/versions.tf +++ b/examples/triggers/versions.tf @@ -2,7 +2,7 @@ terraform { required_providers { codefresh = { source = "codefresh-io/codefresh" - version = "~> 0.0" + version = "~> 0.1" } } } \ No newline at end of file From ef6dc9dc0c7d61d1600d2c797d3ad0da214e29de Mon Sep 17 00:00:00 2001 From: Yonatan Koren Date: Mon, 3 Oct 2022 11:14:47 +0300 Subject: [PATCH 41/44] Update CODEOWNERS --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 7d90d173..e5764eb2 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @codefresh-io/devops +* @codefresh-io/devops @yaroslav-codefresh @denis-codefresh From e346f27b5472a07125a2ed653c12ea8143a53103 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Mon, 3 Oct 2022 20:30:32 +0300 Subject: [PATCH 42/44] Address code review. --- codefresh/resource_pipeline_cron_trigger.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/codefresh/resource_pipeline_cron_trigger.go b/codefresh/resource_pipeline_cron_trigger.go index 18490033..7040babd 100644 --- a/codefresh/resource_pipeline_cron_trigger.go +++ b/codefresh/resource_pipeline_cron_trigger.go @@ -80,10 +80,6 @@ func resourcePipelineCronTriggerRead(d *schema.ResourceData, meta interface{}) e client := meta.(*cfClient.Client) - // TODO: remove - if d.Get("pipeline_id").(string) == "" { - return fmt.Errorf("ID: %s, pipeline_id: %s", d.Id(), d.Get("pipeline_id").(string)) - } event := d.Id() pipeline := d.Get("pipeline_id").(string) @@ -123,7 +119,7 @@ func mapPipelineCronTriggerToResource(hermesTrigger *cfClient.HermesTrigger, d * d.Set("pipeline_id", hermesTrigger.PipelineID) if hermesTrigger.Event != ""{ - r := regexp.MustCompile(".+:.+:.+:.+") + r := regexp.MustCompile("[^:]+:[^:]+:[^:]+:[^:]+") eventStringAttributes := strings.Split(hermesTrigger.Event, ":") if !r.MatchString(hermesTrigger.Event) { return fmt.Errorf("Event string must be in format 'cron:codefresh:[expression]:[message]:[uid]': %s", hermesTrigger.Event) From b9e354e3cbc2dfdaccfc093fcf25765e2f2b7959 Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Mon, 3 Oct 2022 20:36:11 +0300 Subject: [PATCH 43/44] go fmt. --- client/hermes_trigger.go | 6 +++--- codefresh/resource_pipeline.go | 4 ++-- codefresh/resource_pipeline_cron_trigger.go | 12 ++++++------ codefresh/resource_pipeline_cron_trigger_test.go | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/client/hermes_trigger.go b/client/hermes_trigger.go index 43b34007..e27bcdc3 100644 --- a/client/hermes_trigger.go +++ b/client/hermes_trigger.go @@ -5,9 +5,9 @@ import ( ) type HermesTrigger struct { - Event string `json:"event,omitempty"` - PipelineID string `json:"pipeline,omitempty"` - EventData EventData `json:"event-data,omitempty"` + Event string `json:"event,omitempty"` + PipelineID string `json:"pipeline,omitempty"` + EventData EventData `json:"event-data,omitempty"` } type EventData struct { diff --git a/codefresh/resource_pipeline.go b/codefresh/resource_pipeline.go index 2514b925..1c39253d 100644 --- a/codefresh/resource_pipeline.go +++ b/codefresh/resource_pipeline.go @@ -117,8 +117,8 @@ func resourcePipeline() *schema.Resource { }, }, "trigger": { - Type: schema.TypeList, - Optional: true, + Type: schema.TypeList, + Optional: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "name": { diff --git a/codefresh/resource_pipeline_cron_trigger.go b/codefresh/resource_pipeline_cron_trigger.go index 7040babd..1dfd44f4 100644 --- a/codefresh/resource_pipeline_cron_trigger.go +++ b/codefresh/resource_pipeline_cron_trigger.go @@ -2,8 +2,8 @@ package codefresh import ( "fmt" - "strings" "regexp" + "strings" cfClient "github.com/codefresh-io/terraform-provider-codefresh/client" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -30,7 +30,7 @@ func resourcePipelineCronTrigger() *schema.Resource { return []*schema.ResourceData{d}, nil }, - }, + }, Schema: map[string]*schema.Schema{ "pipeline_id": { Type: schema.TypeString, @@ -118,9 +118,9 @@ func mapPipelineCronTriggerToResource(hermesTrigger *cfClient.HermesTrigger, d * d.SetId(hermesTrigger.Event) d.Set("pipeline_id", hermesTrigger.PipelineID) - if hermesTrigger.Event != ""{ - r := regexp.MustCompile("[^:]+:[^:]+:[^:]+:[^:]+") - eventStringAttributes := strings.Split(hermesTrigger.Event, ":") + if hermesTrigger.Event != "" { + r := regexp.MustCompile("[^:]+:[^:]+:[^:]+:[^:]+") + eventStringAttributes := strings.Split(hermesTrigger.Event, ":") if !r.MatchString(hermesTrigger.Event) { return fmt.Errorf("Event string must be in format 'cron:codefresh:[expression]:[message]:[uid]': %s", hermesTrigger.Event) } @@ -135,7 +135,7 @@ func mapResourceToPipelineCronTrigger(d *schema.ResourceData) *cfClient.HermesTr triggerId := d.Id() hermesTrigger := &cfClient.HermesTrigger{ - Event: triggerId, + Event: triggerId, PipelineID: d.Get("pipeline_id").(string), } diff --git a/codefresh/resource_pipeline_cron_trigger_test.go b/codefresh/resource_pipeline_cron_trigger_test.go index 1acc9083..3f08093a 100644 --- a/codefresh/resource_pipeline_cron_trigger_test.go +++ b/codefresh/resource_pipeline_cron_trigger_test.go @@ -108,4 +108,4 @@ func testAccCodefreshPipelineCronTriggerImportStateIDFunc(resourceName string) r } return fmt.Sprintf("%s,%s", rs.Primary.ID, rs.Primary.Attributes["pipeline_id"]), nil } -} \ No newline at end of file +} From c06bff637f0b2462022000c01a17072cf9a3b64f Mon Sep 17 00:00:00 2001 From: Yonatan Koren <10080107+korenyoni@users.noreply.github.com> Date: Mon, 3 Oct 2022 20:42:26 +0300 Subject: [PATCH 44/44] Terraform fmt; fix examples. --- examples/triggers/main.tf | 12 ++++++------ examples/triggers/terraform.tfvars | 2 +- examples/triggers/vars.tf | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/examples/triggers/main.tf b/examples/triggers/main.tf index 4a8dce4d..474a001b 100644 --- a/examples/triggers/main.tf +++ b/examples/triggers/main.tf @@ -1,16 +1,16 @@ provider "codefresh" { api_url = var.api_url - token = var.token + token = var.token } module "pipeline" { - source = "../pipelines" + source = "../pipelines" api_url = var.api_url token = var.token } -resource "codefresh_pipeline_cron_trigger" default { - pipeline = module.pipeline.id - expression = "0 0 2 ? * MON-FRI" - message = "Triggered by cron" +resource "codefresh_pipeline_cron_trigger" "default" { + pipeline_id = module.pipeline.id + expression = "0 0 1 ? * MON-FRI" + message = "Triggered by cron" } \ No newline at end of file diff --git a/examples/triggers/terraform.tfvars b/examples/triggers/terraform.tfvars index 2923e544..95c5dc08 100644 --- a/examples/triggers/terraform.tfvars +++ b/examples/triggers/terraform.tfvars @@ -1,2 +1,2 @@ api_url = "http://g.codefresh.io/api" -token = "" +token = "" diff --git a/examples/triggers/vars.tf b/examples/triggers/vars.tf index 90f2b988..d0743788 100644 --- a/examples/triggers/vars.tf +++ b/examples/triggers/vars.tf @@ -1,8 +1,8 @@ -variable api_url { +variable "api_url" { type = string } -variable token { - type = string +variable "token" { + type = string default = "" } \ No newline at end of file