Skip to content

Commit

Permalink
User Tasks: add discover-ec2 task type (#47062)
Browse files Browse the repository at this point in the history
* User Tasks: add `discover-ec2` task type

This PR adds more business logic into the User Tasks, in particular into
the `discover-ec2` task type.

One of the key features of the DiscoverEC2 User Tasks is that we must
have a single task per:
- integration
- region
- account id
- issue type

This allows user to have a detailed view of the issues their are facing
but still grouping EC2 instances.

To do this, we had to move the region and account id up one level.
Previously they were at the instance level, and it would require
iterating over them to actually create the group (uniq key) we want.

This also adds well known errors as issue types to ensure we validate
them.

A later PR will come where we actually start creating/updating
DiscoverEC2 User Tasks from the DiscoveryService.

* use strings.Compare

* improve docs and fix typos
  • Loading branch information
marcoandredinis authored Oct 4, 2024
1 parent f11cfb9 commit 4d1f1b9
Show file tree
Hide file tree
Showing 7 changed files with 536 additions and 146 deletions.
74 changes: 38 additions & 36 deletions api/gen/proto/go/teleport/usertasks/v1/user_tasks.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 8 additions & 4 deletions api/proto/teleport/usertasks/v1/user_tasks.proto
Original file line number Diff line number Diff line change
Expand Up @@ -63,19 +63,23 @@ message UserTaskSpec {
message DiscoverEC2 {
// Instances maps an instance id to the result of enrolling that instance into teleport.
map<string, DiscoverEC2Instance> instances = 1;
// AccountID is the AWS Account ID for the instances.
string account_id = 2;
// Region is the AWS Region where Teleport failed to enroll EC2 instances.
string region = 3;
}

// DiscoverEC2Instance contains the result of enrolling an AWS EC2 Instance.
message DiscoverEC2Instance {
// AccountID and Region were moved into the DiscoverEC2 message.
reserved 3, 4;
reserved "account_id", "region";

// InstanceID is the EC2 Instance ID that uniquely identifies the instance.
string instance_id = 1;
// Name is the instance Name.
// Might be empty, if the instance doesn't have the Name tag.
string name = 2;
// AccountID is the AWS Account ID for this instance.
string account_id = 3;
// Region is the AWS Region where this issue is happening.
string region = 4;
// InvocationURL is the URL that points to the invocation.
// Empty if there was an error before installing the
string invocation_url = 5;
Expand Down
Loading

0 comments on commit 4d1f1b9

Please sign in to comment.