Skip to content

Commit b7ebf7a

Browse files
tobioCopilot
andauthored
Add acceptance test verifying that agent policies are created in the correct space (#1556)
* Add acceptance test verifying that agent policies are created in the correct space * Update internal/fleet/agent_policy/acc_test.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent dddb89d commit b7ebf7a

File tree

6 files changed

+102
-3
lines changed

6 files changed

+102
-3
lines changed

docs/resources/fleet_agent_policy.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,5 +178,5 @@ Import is supported using the following syntax:
178178
The [`terraform import` command](https://developer.hashicorp.com/terraform/cli/commands/import) can be used, for example:
179179

180180
```shell
181-
terraform import elasticstack_fleet_agent_policy.my_policy <fleet_agent_policy_id>
181+
terraform import elasticstack_fleet_agent_policy.my_policy <space_id>/<fleet_agent_policy_id>
182182
```
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
terraform import elasticstack_fleet_agent_policy.my_policy <fleet_agent_policy_id>
1+
terraform import elasticstack_fleet_agent_policy.my_policy <space_id>/<fleet_agent_policy_id>

internal/fleet/agent_policy/acc_test.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -872,3 +872,54 @@ func TestAccResourceAgentPolicyWithAdvancedMonitoring(t *testing.T) {
872872
},
873873
})
874874
}
875+
876+
func TestAccResourceAgentPolicyNonDefaultSpace(t *testing.T) {
877+
policyName := sdkacctest.RandStringFromCharSet(22, sdkacctest.CharSetAlphaNum)
878+
spaceName := sdkacctest.RandStringFromCharSet(22, sdkacctest.CharSetAlphaNum)
879+
spaceID := fmt.Sprintf("space-%s", spaceName)
880+
881+
resource.Test(t, resource.TestCase{
882+
PreCheck: func() { acctest.PreCheck(t) },
883+
CheckDestroy: checkResourceAgentPolicyDestroy,
884+
Steps: []resource.TestStep{
885+
{
886+
ProtoV6ProviderFactories: acctest.Providers,
887+
SkipFunc: versionutils.CheckIfVersionIsUnsupported(agent_policy.MinVersionSpaceIds),
888+
ConfigDirectory: acctest.NamedTestCaseDirectory("create"),
889+
ConfigVariables: config.Variables{
890+
"policy_name": config.StringVariable(fmt.Sprintf("Policy %s", policyName)),
891+
"space_id": config.StringVariable(spaceID),
892+
"space_name": config.StringVariable(fmt.Sprintf("Test Space %s", spaceName)),
893+
},
894+
Check: resource.ComposeTestCheckFunc(
895+
resource.TestCheckResourceAttr("elasticstack_fleet_agent_policy.test_policy", "name", fmt.Sprintf("Policy %s", policyName)),
896+
resource.TestCheckResourceAttr("elasticstack_fleet_agent_policy.test_policy", "namespace", "default"),
897+
resource.TestCheckResourceAttr("elasticstack_fleet_agent_policy.test_policy", "description", "Test Agent Policy in Non-Default Space"),
898+
resource.TestCheckResourceAttr("elasticstack_fleet_agent_policy.test_policy", "space_ids.#", "1"),
899+
resource.TestCheckTypeSetElemAttr("elasticstack_fleet_agent_policy.test_policy", "space_ids.*", spaceID),
900+
),
901+
},
902+
{
903+
ProtoV6ProviderFactories: acctest.Providers,
904+
SkipFunc: versionutils.CheckIfVersionIsUnsupported(agent_policy.MinVersionSpaceIds),
905+
ConfigDirectory: acctest.NamedTestCaseDirectory("create"),
906+
ConfigVariables: config.Variables{
907+
"policy_name": config.StringVariable(fmt.Sprintf("Policy %s", policyName)),
908+
"space_id": config.StringVariable(spaceID),
909+
"space_name": config.StringVariable(fmt.Sprintf("Test Space %s", spaceName)),
910+
},
911+
ResourceName: "elasticstack_fleet_agent_policy.test_policy",
912+
ImportState: true,
913+
ImportStateVerify: true,
914+
ImportStateVerifyIgnore: []string{"skip_destroy"},
915+
ImportStateIdFunc: func(s *terraform.State) (string, error) {
916+
res := s.RootModule().Resources["elasticstack_fleet_agent_policy.test_policy"]
917+
if res == nil || res.Primary == nil {
918+
return "", fmt.Errorf("resource elasticstack_fleet_agent_policy.test_policy not found in state")
919+
}
920+
return fmt.Sprintf("%s/%s", spaceID, res.Primary.ID), nil
921+
},
922+
},
923+
},
924+
})
925+
}

internal/fleet/agent_policy/resource.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,22 @@ func (r *agentPolicyResource) Metadata(ctx context.Context, req resource.Metadat
5050
}
5151

5252
func (r *agentPolicyResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) {
53-
resource.ImportStatePassthroughID(ctx, path.Root("policy_id"), req, resp)
53+
var spaceID string
54+
var policyID string
55+
56+
compID, diags := clients.CompositeIdFromStrFw(req.ID)
57+
if diags.HasError() {
58+
policyID = req.ID
59+
} else {
60+
spaceID = compID.ClusterId
61+
policyID = compID.ResourceId
62+
}
63+
64+
resp.Diagnostics.Append(resp.State.SetAttribute(ctx, path.Root("policy_id"), policyID)...)
65+
66+
if spaceID != "" {
67+
resp.Diagnostics.Append(resp.State.SetAttribute(ctx, path.Root("space_ids"), []string{spaceID})...)
68+
}
5469
}
5570

5671
func (r *agentPolicyResource) buildFeatures(ctx context.Context) (features, diag.Diagnostics) {
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
provider "elasticstack" {
2+
elasticsearch {}
3+
kibana {}
4+
}
5+
6+
resource "elasticstack_kibana_space" "test_space" {
7+
space_id = var.space_id
8+
name = var.space_name
9+
description = "Test space for Fleet agent policy non-default space test"
10+
}
11+
12+
resource "elasticstack_fleet_agent_policy" "test_policy" {
13+
name = var.policy_name
14+
namespace = "default"
15+
description = "Test Agent Policy in Non-Default Space"
16+
monitor_logs = true
17+
monitor_metrics = false
18+
skip_destroy = false
19+
space_ids = [var.space_id]
20+
21+
depends_on = [elasticstack_kibana_space.test_space]
22+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
variable "policy_name" {
2+
type = string
3+
}
4+
5+
variable "space_id" {
6+
type = string
7+
}
8+
9+
variable "space_name" {
10+
type = string
11+
}

0 commit comments

Comments
 (0)