Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiple codecommit triggers #3209

Open
hashibot bot opened this issue Jan 31, 2018 · 6 comments
Open

Multiple codecommit triggers #3209

hashibot bot opened this issue Jan 31, 2018 · 6 comments

Comments

@hashibot
Copy link

@hashibot hashibot bot commented Jan 31, 2018

This issue was originally opened by @honzous as hashicorp/terraform#17253. It was migrated here as a result of the provider split. The original body of the issue is below.


If I try to create 2 triggers for CodeCommit repo, I always end up with just 1 despite the state file listing both.

$ terraform -v
Terraform v0.11.2
+ provider.aws v1.7.1

Config:

resource "aws_codecommit_repository" "repository" {
	repository_name = "terraform"
}

resource "aws_codecommit_trigger" "trigger1" {
	repository_name	= "terraform"
	trigger {
		name = "trigger1"
		destination_arn = "xxxxx"
		events = ["all"]
	}
}

resource "aws_codecommit_trigger" "trigger2" {
	repository_name	= "terraform"
	trigger {
		name = "trigger2"
		destination_arn = "xxxxx"
		events = ["all"]
	}
}

Execution:

aws_codecommit_trigger.trigger1: Creation complete after 1s (ID: terraform)
aws_codecommit_trigger.trigger2: Creation complete after 1s (ID: terraform)

Apply complete! Resources: 2 added, 0 changed, 0 destroyed.

Reality:

$ aws codecommit get-repository-triggers --repository-name terraform
{
    "configurationId": "f66a04fc-5123-4a50-a301-6f9df6429ea0",
    "triggers": [
        {
            "customData": "",
            "destinationArn": "xxxxx",
            "branches": [],
            "name": "trigger1",
            "events": [
                "all"
            ]
        }
    ]
}

State file showing:

"aws_codecommit_trigger.trigger1": {
    "type": "aws_codecommit_trigger",
    "depends_on": [
        "aws_codecommit_repository.repository"
    ],
    "primary": {
        "id": "terraform",
        "attributes": {
            "configuration_id": "f66a04fc-5123-4a50-a301-6f9df6429ea0",
            "id": "terraform",
            "repository_name": "terraform",
            "trigger.#": "1",
            "trigger.2907981855.branches.#": "0",
            "trigger.2907981855.custom_data": "",
            "trigger.2907981855.destination_arn": "xxxxx",
            "trigger.2907981855.events.#": "1",
            "trigger.2907981855.events.0": "all",
            "trigger.2907981855.name": "trigger1"
        },
        "meta": {},
        "tainted": false
    },
    "deposed": [],
    "provider": "provider.aws"
},
"aws_codecommit_trigger.trigger2": {
    "type": "aws_codecommit_trigger",
    "depends_on": [
        "aws_codecommit_repository.repository"
    ],
    "primary": {
        "id": "terraform",
        "attributes": {
            "configuration_id": "20400a71-aa9a-418c-a454-a8b228529c0a",
            "id": "terraform",
            "repository_name": "terraform",
            "trigger.#": "1",
            "trigger.2671465289.branches.#": "0",
            "trigger.2671465289.custom_data": "",
            "trigger.2671465289.destination_arn": "xxxxx",
            "trigger.2671465289.events.#": "1",
            "trigger.2671465289.events.0": "all",
            "trigger.2671465289.name": "trigger2"
        },
        "meta": {},
        "tainted": false
    },
    "deposed": [],
    "provider": "provider.aws"
},
@ilyash-b

This comment has been minimized.

Copy link

@ilyash-b ilyash-b commented Aug 4, 2018

Looking at the code, I've seen that only triggers given in single aws_codecommit_trigger are taken into account. I have confirmed this behaviour by creating TF file (see below). Resource "aws_codecommit_trigger" "multi-trigger-a" works as expected; resources "aws_codecommit_trigger" "single-trigger-a" and "aws_codecommit_trigger" "single-trigger-b" are mutually exclusive.

Since the update logic is wrong, you can't manage (seemingly unrelated) triggers of one repository from different TF workspaces for example. The triggers are just overridden and you end up just with triggers defined in the single last aws_codecommit_trigger that was applied.

resource "aws_sns_topic" "topic" {
	name = "t1"
}

resource "aws_codecommit_repository" "single-trigger-repo" {
	repository_name = "single-trigger-repo"
}

resource "aws_codecommit_repository" "multi-trigger-repo" {
	repository_name = "multi-trigger-repo"
}

resource "aws_codecommit_trigger" "single-trigger-a" {
	repository_name = "single-trigger-repo"
	trigger {
		name = "st-a"
		destination_arn = "${aws_sns_topic.topic.arn}"
		events = ["all"]
	}
}

resource "aws_codecommit_trigger" "single-trigger-b" {
	repository_name = "single-trigger-repo"
	trigger {
		name = "st-b"
		destination_arn = "${aws_sns_topic.topic.arn}"
		events = ["all"]
	}
}

resource "aws_codecommit_trigger" "multi-trigger-a" {
	repository_name = "multi-trigger-repo"
	trigger {
		name = "multi-a"
		destination_arn = "${aws_sns_topic.topic.arn}"
		events = ["all"]
	}
	trigger {
		name = "multi-b"
		destination_arn = "${aws_sns_topic.topic.arn}"
		events = ["all"]
	}
}


@ilyash-b

This comment has been minimized.

Copy link

@ilyash-b ilyash-b commented Aug 4, 2018

It seems that resourceAwsCodeCommitTriggerDelete deletes all triggers, so if you remove for example resource "aws_codecommit_trigger" "single-trigger-b" - you end up with no triggers at all.

@trilitheus

This comment has been minimized.

Copy link

@trilitheus trilitheus commented Oct 22, 2018

Seeing the same issue - adding two triggers to codecommit as I build two different docker images from the same repo:

resource "aws_codecommit_repository" "MY_REPO" {
  repository_name = "MY_REPO"
  description = "docker source"
}

resource "aws_codecommit_trigger" "build_image_1" {
  depends_on = ["aws_codecommit_repository.MY_REPO"]
  repository_name = "MY_REPO"

  trigger {
    name = "build_image_1"
    events = ["all"]
    destination_arn = "${aws_lambda_function.build_docker_images.arn}"
    custom_data = "${module.image_1.buildproject_name}"
  }
}

resource "aws_codecommit_trigger" "build_image_2" {
  depends_on = ["aws_codecommit_repository.MY_REPO"]
  repository_name = "MY_REPO"

  trigger {
    name = "build_image_2"
    events = ["all"]
    destination_arn = "${aws_lambda_function.build_docker_images.arn}"
    custom_data = "${module.image_2.buildproject_name}"
  }
}

As per others I'm seeing onely one trigger even though terraform state contains both.

@roeezab

This comment has been minimized.

Copy link

@roeezab roeezab commented Sep 11, 2019

Same issue here (with aws provider v2.17.0).
Until fixing this bug, I believe this should be documented as a warning, because it deletes manually-created triggers as well.

@bflad

This comment has been minimized.

Copy link
Contributor

@bflad bflad commented Nov 6, 2019

We would like to address the duplicate Terraform resource problem, more generically for all Terraform resources that could be potentially duplicated by certain criteria (such as per-region and per-name). The enhancement that would be available to all Terraform resources, which we could then implement the Terraform AWS Provider, can be tracked upstream in the Terraform Plugin SDK: hashicorp/terraform-plugin-sdk#224.

This certainly doesn't preclude documenting the current situation though as mentioned above. If anyone would like to contribute that, the source for the resource webpage is here: https://github.com/terraform-providers/terraform-provider-aws/blob/master/website/docs/r/codecommit_trigger.html.markdown

And adding a yellow box can be done with the following:

~> **NOTE:** Message here
roeezab added a commit to roeezab/terraform-provider-aws that referenced this issue Nov 6, 2019
@roeezab

This comment has been minimized.

Copy link

@roeezab roeezab commented Nov 6, 2019

This certainly doesn't preclude documenting the current situation though as mentioned above. If anyone would like to contribute that, the source for the resource webpage is here: https://github.com/terraform-providers/terraform-provider-aws/blob/master/website/docs/r/codecommit_trigger.html.markdown

Opened PR #10773.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
5 participants
You can’t perform that action at this time.