Skip to content

Commit effc106

Browse files
Terraform Team Automationvsin12
authored andcommitted
Added - Support for SCM: Support validating the credentials of the connection
1 parent 0a66be9 commit effc106

11 files changed

+101
-1
lines changed

internal/integrationtest/devops_connection_bitbucketCloud_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ func TestDevopsBitbucketCloudConnectionResource_basic(t *testing.T) {
181181
resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"),
182182
resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"),
183183
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
184+
resource.TestCheckResourceAttr(singularDatasourceName, "last_connection_validation_result.#", "0"),
184185
resource.TestCheckResourceAttrSet(singularDatasourceName, "state"),
185186
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"),
186187
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_updated"),

internal/integrationtest/devops_connection_bitbucket_server_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ func TestDevopsBitbucketServerConnectionResource_basic(t *testing.T) {
194194
resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"),
195195
resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"),
196196
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
197+
resource.TestCheckResourceAttr(singularDatasourceName, "last_connection_validation_result.#", "0"),
197198
resource.TestCheckResourceAttrSet(singularDatasourceName, "state"),
198199
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"),
199200
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_updated"),

internal/integrationtest/devops_connection_gitlab_server_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ func TestDevopsGitlabServerConnectionResource_basic(t *testing.T) {
194194
resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"),
195195
resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"),
196196
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
197+
resource.TestCheckResourceAttr(singularDatasourceName, "last_connection_validation_result.#", "0"),
197198
resource.TestCheckResourceAttrSet(singularDatasourceName, "state"),
198199
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"),
199200
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_updated"),

internal/integrationtest/devops_connection_gitlab_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ func TestDevopsGitlabConnectionResource_basic(t *testing.T) {
178178
resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"),
179179
resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"),
180180
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
181+
resource.TestCheckResourceAttr(singularDatasourceName, "last_connection_validation_result.#", "0"),
181182
resource.TestCheckResourceAttrSet(singularDatasourceName, "state"),
182183
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"),
183184
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_updated"),

internal/integrationtest/devops_connection_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ func TestDevopsConnectionResource_basic(t *testing.T) {
182182
resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"),
183183
resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"),
184184
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
185+
resource.TestCheckResourceAttr(singularDatasourceName, "last_connection_validation_result.#", "0"),
185186
resource.TestCheckResourceAttrSet(singularDatasourceName, "state"),
186187
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"),
187188
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_updated"),

internal/integrationtest/devops_connection_vbs_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ func TestDevopsVbsConnectionResource_basic(t *testing.T) {
185185
resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"),
186186
resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"),
187187
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
188+
resource.TestCheckResourceAttr(singularDatasourceName, "last_connection_validation_result.#", "0"),
188189
resource.TestCheckResourceAttrSet(singularDatasourceName, "state"),
189190
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"),
190191
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_updated"),

internal/service/devops/devops_connection_data_source.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,12 @@ func (s *DevopsConnectionDataSourceCrud) SetData() error {
8989
s.D.Set("project_id", *s.Res.GetProjectId())
9090
}
9191

92+
if s.Res.GetLastConnectionValidationResult() != nil {
93+
s.D.Set("last_connection_validation_result", []interface{}{ConnectionValidationResultToMap(s.Res.GetLastConnectionValidationResult())})
94+
} else {
95+
s.D.Set("last_connection_validation_result", nil)
96+
}
97+
9298
s.D.Set("state", s.Res.GetLifecycleState())
9399

94100
if s.Res.GetSystemTags() != nil {
@@ -134,7 +140,6 @@ func (s *DevopsConnectionDataSourceCrud) SetData() error {
134140
} else {
135141
s.D.Set("tls_verify_config", nil)
136142
}
137-
138143
case oci_devops.VbsAccessTokenConnection:
139144
s.D.Set("connection_type", "VBS_ACCESS_TOKEN")
140145
s.D.Set("base_url", v.BaseUrl)

internal/service/devops/devops_connection_resource.go

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,31 @@ func DevopsConnectionResource() *schema.Resource {
131131
Type: schema.TypeString,
132132
Computed: true,
133133
},
134+
"last_connection_validation_result": {
135+
Type: schema.TypeList,
136+
Computed: true,
137+
Elem: &schema.Resource{
138+
Schema: map[string]*schema.Schema{
139+
// Required
140+
141+
// Optional
142+
143+
// Computed
144+
"message": {
145+
Type: schema.TypeString,
146+
Computed: true,
147+
},
148+
"result": {
149+
Type: schema.TypeString,
150+
Computed: true,
151+
},
152+
"time_validated": {
153+
Type: schema.TypeString,
154+
Computed: true,
155+
},
156+
},
157+
},
158+
},
134159
"state": {
135160
Type: schema.TypeString,
136161
Computed: true,
@@ -434,6 +459,12 @@ func (s *DevopsConnectionResourceCrud) SetData() error {
434459

435460
s.D.Set("freeform_tags", v.FreeformTags)
436461

462+
if v.LastConnectionValidationResult != nil {
463+
s.D.Set("last_connection_validation_result", []interface{}{ConnectionValidationResultToMap(v.LastConnectionValidationResult)})
464+
} else {
465+
s.D.Set("last_connection_validation_result", nil)
466+
}
467+
437468
if v.ProjectId != nil {
438469
s.D.Set("project_id", *v.ProjectId)
439470
}
@@ -490,6 +521,12 @@ func (s *DevopsConnectionResourceCrud) SetData() error {
490521

491522
s.D.Set("freeform_tags", v.FreeformTags)
492523

524+
if v.LastConnectionValidationResult != nil {
525+
s.D.Set("last_connection_validation_result", []interface{}{ConnectionValidationResultToMap(v.LastConnectionValidationResult)})
526+
} else {
527+
s.D.Set("last_connection_validation_result", nil)
528+
}
529+
493530
if v.ProjectId != nil {
494531
s.D.Set("project_id", *v.ProjectId)
495532
}
@@ -532,6 +569,12 @@ func (s *DevopsConnectionResourceCrud) SetData() error {
532569

533570
s.D.Set("freeform_tags", v.FreeformTags)
534571

572+
if v.LastConnectionValidationResult != nil {
573+
s.D.Set("last_connection_validation_result", []interface{}{ConnectionValidationResultToMap(v.LastConnectionValidationResult)})
574+
} else {
575+
s.D.Set("last_connection_validation_result", nil)
576+
}
577+
535578
if v.ProjectId != nil {
536579
s.D.Set("project_id", *v.ProjectId)
537580
}
@@ -574,6 +617,12 @@ func (s *DevopsConnectionResourceCrud) SetData() error {
574617

575618
s.D.Set("freeform_tags", v.FreeformTags)
576619

620+
if v.LastConnectionValidationResult != nil {
621+
s.D.Set("last_connection_validation_result", []interface{}{ConnectionValidationResultToMap(v.LastConnectionValidationResult)})
622+
} else {
623+
s.D.Set("last_connection_validation_result", nil)
624+
}
625+
577626
if v.ProjectId != nil {
578627
s.D.Set("project_id", *v.ProjectId)
579628
}
@@ -630,6 +679,12 @@ func (s *DevopsConnectionResourceCrud) SetData() error {
630679

631680
s.D.Set("freeform_tags", v.FreeformTags)
632681

682+
if v.LastConnectionValidationResult != nil {
683+
s.D.Set("last_connection_validation_result", []interface{}{ConnectionValidationResultToMap(v.LastConnectionValidationResult)})
684+
} else {
685+
s.D.Set("last_connection_validation_result", nil)
686+
}
687+
633688
if v.ProjectId != nil {
634689
s.D.Set("project_id", *v.ProjectId)
635690
}
@@ -676,6 +731,12 @@ func (s *DevopsConnectionResourceCrud) SetData() error {
676731

677732
s.D.Set("freeform_tags", v.FreeformTags)
678733

734+
if v.LastConnectionValidationResult != nil {
735+
s.D.Set("last_connection_validation_result", []interface{}{ConnectionValidationResultToMap(v.LastConnectionValidationResult)})
736+
} else {
737+
s.D.Set("last_connection_validation_result", nil)
738+
}
739+
679740
if v.ProjectId != nil {
680741
s.D.Set("project_id", *v.ProjectId)
681742
}
@@ -822,6 +883,22 @@ func devopsConnectionSummaryToMap(obj oci_devops.ConnectionSummary) map[string]i
822883
return result
823884
}
824885

886+
func ConnectionValidationResultToMap(obj *oci_devops.ConnectionValidationResult) map[string]interface{} {
887+
result := map[string]interface{}{}
888+
889+
if obj.Message != nil {
890+
result["message"] = string(*obj.Message)
891+
}
892+
893+
result["result"] = string(obj.Result)
894+
895+
if obj.TimeValidated != nil {
896+
result["time_validated"] = obj.TimeValidated.String()
897+
}
898+
899+
return result
900+
}
901+
825902
func (s *DevopsConnectionResourceCrud) mapToTlsVerifyConfig(fieldKeyFormat string) (oci_devops.TlsVerifyConfig, error) {
826903
var baseObject oci_devops.TlsVerifyConfig
827904
//discriminator

website/docs/d/devops_connection.html.markdown

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ The following attributes are exported:
4242
* `display_name` - Connection display name, which can be renamed and is not necessarily unique. Avoid entering confidential information.
4343
* `freeform_tags` - Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. See [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"bar-key": "value"}`
4444
* `id` - Unique identifier that is immutable on creation.
45+
* `last_connection_validation_result` - The result of validating the credentials of a connection.
46+
* `message` - A message describing the result of connection validation in more detail.
47+
* `result` - The latest result of whether the credentials pass the validation.
48+
* `time_validated` - The latest timestamp when the connection was validated. Format defined by [RFC3339](https://datatracker.ietf.org/doc/html/rfc3339).
4549
* `project_id` - The OCID of the DevOps project.
4650
* `state` - The current state of the connection.
4751
* `system_tags` - Usage of system tag keys. These predefined keys are scoped to namespaces. See [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"orcl-cloud.free-tier-retained": "true"}`

website/docs/d/devops_connections.html.markdown

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ The following attributes are exported:
6060
* `display_name` - Connection display name, which can be renamed and is not necessarily unique. Avoid entering confidential information.
6161
* `freeform_tags` - Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. See [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"bar-key": "value"}`
6262
* `id` - Unique identifier that is immutable on creation.
63+
* `last_connection_validation_result` - The result of validating the credentials of a connection.
64+
* `message` - A message describing the result of connection validation in more detail.
65+
* `result` - The latest result of whether the credentials pass the validation.
66+
* `time_validated` - The latest timestamp when the connection was validated. Format defined by [RFC3339](https://datatracker.ietf.org/doc/html/rfc3339).
6367
* `project_id` - The OCID of the DevOps project.
6468
* `state` - The current state of the connection.
6569
* `system_tags` - Usage of system tag keys. These predefined keys are scoped to namespaces. See [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"orcl-cloud.free-tier-retained": "true"}`

0 commit comments

Comments
 (0)