Skip to content

Commit 3fe6175

Browse files
committed
Tidy up 'testAccKnowledgeBase_OpenSearchManagedCluster_basic'.
1 parent f943238 commit 3fe6175

File tree

3 files changed

+54
-86
lines changed

3 files changed

+54
-86
lines changed

internal/service/bedrockagent/bedrockagent_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ func TestAccBedrockAgent_serial(t *testing.T) {
1414

1515
testCases := map[string]map[string]func(t *testing.T){
1616
"KnowledgeBase": {
17-
acctest.CtBasic: testAccKnowledgeBase_basic,
18-
acctest.CtDisappears: testAccKnowledgeBase_disappears,
19-
"tags": testAccKnowledgeBase_tags,
20-
"OpenSearchBasic": testAccKnowledgeBase_OpenSearch_basic,
21-
"OpenSearchUpdate": testAccKnowledgeBase_OpenSearch_update,
22-
"OpenSearchSupplementalDataStorage": testAccKnowledgeBase_OpenSearch_supplementalDataStorage,
23-
"KendraBasic": testAccKnowledgeBase_Kendra_basic,
24-
"OpenSearchManagedClusterBasic": testAccKnowledgeBase_OpenSearchManagedCluster_basic,
17+
acctest.CtBasic: testAccKnowledgeBase_basic,
18+
acctest.CtDisappears: testAccKnowledgeBase_disappears,
19+
"tags": testAccKnowledgeBase_tags,
20+
"OpenSearchServerlessBasic": testAccKnowledgeBase_OpenSearchServerless_basic,
21+
"OpenSearchServerlessUpdate": testAccKnowledgeBase_OpenSearchServerless_update,
22+
"OpenSearchServerlessSupplementalDataStorage": testAccKnowledgeBase_OpenSearchServerless_supplementalDataStorage,
23+
"KendraBasic": testAccKnowledgeBase_Kendra_basic,
24+
"OpenSearchManagedClusterBasic": testAccKnowledgeBase_OpenSearchManagedCluster_basic,
2525
},
2626
"DataSource": {
2727
acctest.CtBasic: testAccDataSource_basic,

internal/service/bedrockagent/data_source_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -834,7 +834,7 @@ resource "aws_bedrockagent_data_source" "test" {
834834
}
835835

836836
func testAccDataSourceConfig_webConfiguration(rName, collectionName, embeddingModel string) string {
837-
return acctest.ConfigCompose(testAccKnowledgeBaseConfig_OpenSearch_basic(rName, collectionName, embeddingModel), fmt.Sprintf(`
837+
return acctest.ConfigCompose(testAccKnowledgeBaseConfig_OpenSearchServerless_basic(rName, collectionName, embeddingModel), fmt.Sprintf(`
838838
resource "aws_bedrockagent_data_source" "test" {
839839
name = %[1]q
840840
knowledge_base_id = aws_bedrockagent_knowledge_base.test.id

internal/service/bedrockagent/knowledge_base_test.go

Lines changed: 45 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -243,10 +243,9 @@ func testAccKnowledgeBase_tags(t *testing.T) {
243243
})
244244
}
245245

246-
func testAccKnowledgeBase_OpenSearch_basic(t *testing.T) {
246+
func testAccKnowledgeBase_OpenSearchServerless_basic(t *testing.T) {
247247
ctx := acctest.Context(t)
248248
collectionName := skipIfOSSCollectionNameEnvVarNotSet(t)
249-
250249
var knowledgebase awstypes.KnowledgeBase
251250
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
252251
resourceName := "aws_bedrockagent_knowledge_base.test"
@@ -261,7 +260,7 @@ func testAccKnowledgeBase_OpenSearch_basic(t *testing.T) {
261260
CheckDestroy: testAccCheckKnowledgeBaseDestroy(ctx),
262261
Steps: []resource.TestStep{
263262
{
264-
Config: testAccKnowledgeBaseConfig_OpenSearch_basic(rName, collectionName, foundationModel),
263+
Config: testAccKnowledgeBaseConfig_OpenSearchServerless_basic(rName, collectionName, foundationModel),
265264
Check: resource.ComposeTestCheckFunc(
266265
testAccCheckKnowledgeBaseExists(ctx, resourceName, &knowledgebase),
267266
resource.TestCheckResourceAttrPair(resourceName, names.AttrRoleARN, "aws_iam_role.test", names.AttrARN),
@@ -287,10 +286,9 @@ func testAccKnowledgeBase_OpenSearch_basic(t *testing.T) {
287286
})
288287
}
289288

290-
func testAccKnowledgeBase_OpenSearch_update(t *testing.T) {
289+
func testAccKnowledgeBase_OpenSearchServerless_update(t *testing.T) {
291290
ctx := acctest.Context(t)
292291
collectionName := skipIfOSSCollectionNameEnvVarNotSet(t)
293-
294292
var knowledgebase awstypes.KnowledgeBase
295293
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
296294
resourceName := "aws_bedrockagent_knowledge_base.test"
@@ -305,7 +303,7 @@ func testAccKnowledgeBase_OpenSearch_update(t *testing.T) {
305303
CheckDestroy: testAccCheckKnowledgeBaseDestroy(ctx),
306304
Steps: []resource.TestStep{
307305
{
308-
Config: testAccKnowledgeBaseConfig_OpenSearch_basic(rName, collectionName, foundationModel),
306+
Config: testAccKnowledgeBaseConfig_OpenSearchServerless_basic(rName, collectionName, foundationModel),
309307
Check: resource.ComposeTestCheckFunc(
310308
testAccCheckKnowledgeBaseExists(ctx, resourceName, &knowledgebase),
311309
resource.TestCheckResourceAttr(resourceName, names.AttrName, rName),
@@ -329,7 +327,7 @@ func testAccKnowledgeBase_OpenSearch_update(t *testing.T) {
329327
ImportStateVerify: true,
330328
},
331329
{
332-
Config: testAccKnowledgeBaseConfig_OpenSearch_update(rName, collectionName, foundationModel),
330+
Config: testAccKnowledgeBaseConfig_OpenSearchServerless_update(rName, collectionName, foundationModel),
333331
Check: resource.ComposeTestCheckFunc(
334332
testAccCheckKnowledgeBaseExists(ctx, resourceName, &knowledgebase),
335333
resource.TestCheckResourceAttr(resourceName, names.AttrName, rName+"-updated"),
@@ -357,10 +355,9 @@ func testAccKnowledgeBase_OpenSearch_update(t *testing.T) {
357355
})
358356
}
359357

360-
func testAccKnowledgeBase_OpenSearch_supplementalDataStorage(t *testing.T) {
358+
func testAccKnowledgeBase_OpenSearchServerless_supplementalDataStorage(t *testing.T) {
361359
ctx := acctest.Context(t)
362360
collectionName := skipIfOSSCollectionNameEnvVarNotSet(t)
363-
364361
var knowledgebase awstypes.KnowledgeBase
365362
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
366363
resourceName := "aws_bedrockagent_knowledge_base.test"
@@ -375,7 +372,7 @@ func testAccKnowledgeBase_OpenSearch_supplementalDataStorage(t *testing.T) {
375372
CheckDestroy: testAccCheckKnowledgeBaseDestroy(ctx),
376373
Steps: []resource.TestStep{
377374
{
378-
Config: testAccKnowledgeBaseConfig_OpenSearch_supplementalDataStorage(rName, collectionName, foundationModel),
375+
Config: testAccKnowledgeBaseConfig_OpenSearchServerless_supplementalDataStorage(rName, collectionName, foundationModel),
379376
Check: resource.ComposeTestCheckFunc(
380377
testAccCheckKnowledgeBaseExists(ctx, resourceName, &knowledgebase),
381378
resource.TestCheckResourceAttr(resourceName, "knowledge_base_configuration.#", "1"),
@@ -449,16 +446,6 @@ func testAccKnowledgeBase_OpenSearchManagedCluster_basic(t *testing.T) {
449446
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
450447
resourceName := "aws_bedrockagent_knowledge_base.test"
451448
foundationModel := "amazon.titan-embed-text-v2:0"
452-
testExternalProviders := map[string]resource.ExternalProvider{
453-
"opensearch": {
454-
Source: "opensearch-project/opensearch",
455-
VersionConstraint: "~> 2.2.0",
456-
},
457-
"random": {
458-
Source: "hashicorp/random",
459-
VersionConstraint: "~> 3.5.0",
460-
},
461-
}
462449

463450
resource.Test(t, resource.TestCase{
464451
PreCheck: func() {
@@ -467,37 +454,43 @@ func testAccKnowledgeBase_OpenSearchManagedCluster_basic(t *testing.T) {
467454
},
468455
ErrorCheck: acctest.ErrorCheck(t, names.BedrockAgentServiceID),
469456
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
470-
ExternalProviders: testExternalProviders,
471-
CheckDestroy: testAccCheckKnowledgeBaseDestroy(ctx),
457+
ExternalProviders: map[string]resource.ExternalProvider{
458+
"opensearch": {
459+
Source: "opensearch-project/opensearch",
460+
VersionConstraint: "~> 2.2.0",
461+
},
462+
},
463+
CheckDestroy: testAccCheckKnowledgeBaseDestroy(ctx),
472464
Steps: []resource.TestStep{
473465
{
474466
Config: testAccKnowledgeBaseConfig_OpenSearchManagedCluster_basic(rName, foundationModel),
475467
Check: resource.ComposeTestCheckFunc(
476468
testAccCheckKnowledgeBaseExists(ctx, resourceName, &knowledgebase),
477-
resource.TestCheckResourceAttr(resourceName, names.AttrName, rName),
478-
resource.TestCheckResourceAttr(resourceName, "knowledge_base_configuration.#", "1"),
479-
resource.TestCheckResourceAttr(resourceName, "knowledge_base_configuration.0.vector_knowledge_base_configuration.#", "1"),
480-
resource.TestCheckResourceAttr(resourceName, "knowledge_base_configuration.0.type", "VECTOR"),
481-
resource.TestCheckResourceAttr(resourceName, "storage_configuration.#", "1"),
482-
resource.TestCheckResourceAttr(resourceName, "storage_configuration.0.type", "OPENSEARCH_MANAGED_CLUSTER"),
483-
resource.TestCheckResourceAttr(resourceName, "storage_configuration.0.opensearch_managed_cluster_configuration.#", "1"),
484-
resource.TestCheckResourceAttr(resourceName, "storage_configuration.0.opensearch_managed_cluster_configuration.0.vector_index_name", "knowledge-index"),
485-
resource.TestCheckResourceAttr(resourceName, "storage_configuration.0.opensearch_managed_cluster_configuration.0.field_mapping.#", "1"),
486-
resource.TestCheckResourceAttr(resourceName, "storage_configuration.0.opensearch_managed_cluster_configuration.0.field_mapping.0.vector_field", "vector_embedding"),
487-
resource.TestCheckResourceAttr(resourceName, "storage_configuration.0.opensearch_managed_cluster_configuration.0.field_mapping.0.text_field", "text"),
488-
resource.TestCheckResourceAttr(resourceName, "storage_configuration.0.opensearch_managed_cluster_configuration.0.field_mapping.0.metadata_field", "metadata"),
489469
),
490-
},
491-
{
492-
Config: testAccKnowledgeBaseConfig_OpenSearchManagedCluster_basic(rName, foundationModel),
493-
ResourceName: resourceName,
494-
ImportStateKind: resource.ImportBlockWithID,
495-
ImportState: true,
496-
ImportPlanChecks: resource.ImportPlanChecks{
470+
ConfigPlanChecks: resource.ConfigPlanChecks{
497471
PreApply: []plancheck.PlanCheck{
498-
plancheck.ExpectKnownValue(resourceName, tfjsonpath.New(names.AttrID), knownvalue.NotNull()),
472+
plancheck.ExpectResourceAction(resourceName, plancheck.ResourceActionCreate),
499473
},
500474
},
475+
ConfigStateChecks: []statecheck.StateCheck{
476+
statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("knowledge_base_configuration"), knownvalue.ListExact([]knownvalue.Check{
477+
knownvalue.MapExact(map[string]knownvalue.Check{
478+
"kendra_knowledge_base_configuration": knownvalue.ListSizeExact(0),
479+
names.AttrType: tfknownvalue.StringExact(awstypes.KnowledgeBaseTypeVector),
480+
"vector_knowledge_base_configuration": knownvalue.ListSizeExact(1),
481+
}),
482+
})),
483+
statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("storage_configuration"), knownvalue.ListExact([]knownvalue.Check{
484+
knownvalue.MapExact(map[string]knownvalue.Check{
485+
"opensearch_managed_cluster_configuration": knownvalue.ListSizeExact(1),
486+
"opensearch_serverless_configuration": knownvalue.ListSizeExact(0),
487+
names.AttrType: tfknownvalue.StringExact(awstypes.KnowledgeBaseStorageTypeOpensearchManagedCluster),
488+
"pinecone_configuration": knownvalue.ListSizeExact(0),
489+
"rds_configuration": knownvalue.ListSizeExact(0),
490+
"redis_enterprise_cloud_configuration": knownvalue.ListSizeExact(0),
491+
}),
492+
})),
493+
},
501494
},
502495
},
503496
})
@@ -746,7 +739,7 @@ resource "aws_bedrockagent_knowledge_base" "test" {
746739
`, rName, model, tag1Key, tag1Value, tag2Key, tag2Value))
747740
}
748741

749-
func testAccKnowledgeBaseConfigBase_openSearch(rName, collectionName, model string) string {
742+
func testAccKnowledgeBaseConfig_baseOpenSearchServerless(rName, collectionName, model string) string {
750743
return fmt.Sprintf(`
751744
data "aws_caller_identity" "current" {}
752745
data "aws_region" "current" {}
@@ -884,10 +877,8 @@ resource "aws_opensearchserverless_access_policy" "test" {
884877
`, rName, collectionName, model)
885878
}
886879

887-
func testAccKnowledgeBaseConfig_OpenSearch_basic(rName, collectionName, model string) string {
888-
return acctest.ConfigCompose(
889-
testAccKnowledgeBaseConfigBase_openSearch(rName, collectionName, model),
890-
fmt.Sprintf(`
880+
func testAccKnowledgeBaseConfig_OpenSearchServerless_basic(rName, collectionName, model string) string {
881+
return acctest.ConfigCompose(testAccKnowledgeBaseConfig_baseOpenSearchServerless(rName, collectionName, model), fmt.Sprintf(`
891882
resource "aws_bedrockagent_knowledge_base" "test" {
892883
depends_on = [
893884
aws_iam_role_policy_attachment.test,
@@ -920,10 +911,8 @@ resource "aws_bedrockagent_knowledge_base" "test" {
920911
`, rName, model))
921912
}
922913

923-
func testAccKnowledgeBaseConfig_OpenSearch_update(rName, collectionName, model string) string {
924-
return acctest.ConfigCompose(
925-
testAccKnowledgeBaseConfigBase_openSearch(rName, collectionName, model),
926-
fmt.Sprintf(`
914+
func testAccKnowledgeBaseConfig_OpenSearchServerless_update(rName, collectionName, model string) string {
915+
return acctest.ConfigCompose(testAccKnowledgeBaseConfig_baseOpenSearchServerless(rName, collectionName, model), fmt.Sprintf(`
927916
resource "aws_bedrockagent_knowledge_base" "test" {
928917
depends_on = [
929918
aws_iam_role_policy_attachment.test,
@@ -957,10 +946,8 @@ resource "aws_bedrockagent_knowledge_base" "test" {
957946
`, rName, model))
958947
}
959948

960-
func testAccKnowledgeBaseConfig_OpenSearch_supplementalDataStorage(rName, collectionName, model string) string {
961-
return acctest.ConfigCompose(
962-
testAccKnowledgeBaseConfigBase_openSearch(rName, collectionName, model),
963-
fmt.Sprintf(`
949+
func testAccKnowledgeBaseConfig_OpenSearchServerless_supplementalDataStorage(rName, collectionName, model string) string {
950+
return acctest.ConfigCompose(testAccKnowledgeBaseConfig_baseOpenSearchServerless(rName, collectionName, model), fmt.Sprintf(`
964951
resource "aws_s3_bucket" "test" {
965952
bucket = %[1]q
966953
force_destroy = true
@@ -1121,10 +1108,6 @@ terraform {
11211108
source = "opensearch-project/opensearch"
11221109
version = "~> 2.2.0"
11231110
}
1124-
random = {
1125-
source = "hashicorp/random"
1126-
version = "~> 3.5.0"
1127-
}
11281111
}
11291112
}
11301113
@@ -1158,7 +1141,7 @@ resource "aws_iam_role" "bedrock_kb_role" {
11581141
}
11591142
11601143
resource "aws_iam_policy" "bedrock_models_access" {
1161-
name. = "bedrock-%[1]s"
1144+
name = "bedrock-%[1]s"
11621145
description = "IAM policy for Amazon Bedrock to access embedding models"
11631146
11641147
policy = jsonencode({
@@ -1235,21 +1218,6 @@ resource "aws_iam_role_policy_attachment" "opensearch_access" {
12351218
policy_arn = aws_iam_policy.opensearch_access.arn
12361219
}
12371220
1238-
resource "random_password" "opensearch_master" {
1239-
length = 16
1240-
special = true
1241-
min_lower = 1
1242-
min_numeric = 1
1243-
min_special = 1
1244-
min_upper = 1
1245-
override_special = "!#$&*()-_=+"
1246-
1247-
# Don't replace the password on each apply
1248-
lifecycle {
1249-
ignore_changes = [length, special, override_special]
1250-
}
1251-
}
1252-
12531221
resource "aws_opensearch_domain" "knowledge_base" {
12541222
domain_name = substr(%[1]q, 0, 28)
12551223
engine_version = "OpenSearch_3.1"
@@ -1292,7 +1260,7 @@ resource "aws_opensearch_domain" "knowledge_base" {
12921260
12931261
master_user_options {
12941262
master_user_name = "admin"
1295-
master_user_password = random_password.opensearch_master.result
1263+
master_user_password = "Barbarbarbar1!"
12961264
}
12971265
}
12981266
@@ -1331,7 +1299,7 @@ locals {
13311299
provider "opensearch" {
13321300
url = "https://${aws_opensearch_domain.knowledge_base.endpoint}"
13331301
username = "admin"
1334-
password = random_password.opensearch_master.result
1302+
password = aws_opensearch_domain.knowledge_base.advanced_security_options[0].master_user_options[0].master_user_password
13351303
insecure = false
13361304
aws_region = data.aws_region.current.region
13371305
healthcheck = false

0 commit comments

Comments
 (0)