Skip to content

Commit 3a7384d

Browse files
Jatin Chhabravsin12
authored andcommitted
Added Support for Sql Endpoints in Data Flow
1 parent 5e14f85 commit 3a7384d

14 files changed

+2809
-1
lines changed

examples/dataflow/main.tf

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ variable "invoke_run_display_name" {
7575
variable "statement_code" {
7676
}
7777

78-
7978
resource "oci_dataflow_pool" "test_pool" {
8079
compartment_id = var.compartment_id
8180
description = "description"
@@ -422,4 +421,42 @@ data "oci_logging_logs" "test_log" {
422421
display_name = "log_displayName"
423422
log_type = "CUSTOM"
424423
state = "ACTIVE"
424+
}
425+
426+
resource "oci_dataflow_sql_endpoint" "test_sql_endpoint" {
427+
compartment_id = var.compartment_id
428+
display_name = "test_sql_endpoint"
429+
driver_shape = "VM.Standard.E4.Flex"
430+
driver_shape_config {
431+
memory_in_gbs = 32
432+
ocpus = 2
433+
}
434+
executor_shape = "VM.Standard.E4.Flex"
435+
executor_shape_config {
436+
memory_in_gbs = 32
437+
ocpus = 2
438+
}
439+
max_executor_count = 2
440+
metastore_id = var.metastore_id
441+
min_executor_count = 1
442+
network_configuration {
443+
network_type = "SECURE_ACCESS"
444+
}
445+
sql_endpoint_version = "3.2.1"
446+
#Optional
447+
#defined_tags = {"${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}" = "value"}
448+
#description = var.description
449+
freeform_tags = {
450+
"Department" = "Finance"
451+
}
452+
}
453+
454+
data "oci_dataflow_sql_endpoints" "tf_sql_endpoints" {
455+
#Required
456+
compartment_id = var.compartment_id
457+
}
458+
459+
data "oci_dataflow_sql_endpoint" "tf_sql_endpoint_data" {
460+
#Required
461+
sql_endpoint_id = oci_dataflow_sql_endpoint.test_sql_endpoint.id
425462
}

internal/integrationtest/dataflow_sql_endpoint_access_control_rules_test.go

Lines changed: 334 additions & 0 deletions
Large diffs are not rendered by default.

internal/integrationtest/dataflow_sql_endpoint_private_endpoint_test.go

Lines changed: 330 additions & 0 deletions
Large diffs are not rendered by default.

internal/integrationtest/dataflow_sql_endpoint_test.go

Lines changed: 414 additions & 0 deletions
Large diffs are not rendered by default.

internal/service/dataflow/dataflow_export.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,23 @@ var exportDataflowPoolHints = &tf_export.TerraformResourceHints{
5858
string(oci_dataflow.PoolLifecycleStateActive),
5959
},
6060
}
61+
var exportDataflowSqlEndpointHints = &tf_export.TerraformResourceHints{
62+
ResourceClass: "oci_dataflow_sql_endpoint",
63+
DatasourceClass: "oci_dataflow_sql_endpoints",
64+
DatasourceItemsAttr: "sql_endpoint_collection",
65+
IsDatasourceCollection: true,
66+
ResourceAbbreviation: "sql_endpoint",
67+
RequireResourceRefresh: true,
68+
DiscoverableLifecycleStates: []string{
69+
string(oci_dataflow.SqlEndpointLifecycleStateActive),
70+
},
71+
}
6172

6273
var dataflowResourceGraph = tf_export.TerraformResourceGraph{
6374
"oci_identity_compartment": {
6475
{TerraformResourceHints: exportDataflowApplicationHints},
6576
{TerraformResourceHints: exportDataflowPrivateEndpointHints},
6677
{TerraformResourceHints: exportDataflowPoolHints},
78+
{TerraformResourceHints: exportDataflowSqlEndpointHints},
6779
},
6880
}
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
// Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
package dataflow
5+
6+
import (
7+
"context"
8+
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
10+
oci_dataflow "github.com/oracle/oci-go-sdk/v65/dataflow"
11+
12+
"github.com/oracle/terraform-provider-oci/internal/client"
13+
"github.com/oracle/terraform-provider-oci/internal/tfresource"
14+
)
15+
16+
func DataflowSqlEndpointDataSource() *schema.Resource {
17+
fieldMap := make(map[string]*schema.Schema)
18+
fieldMap["sql_endpoint_id"] = &schema.Schema{
19+
Type: schema.TypeString,
20+
Required: true,
21+
}
22+
return tfresource.GetSingularDataSourceItemSchema(DataflowSqlEndpointResource(), fieldMap, readSingularDataflowSqlEndpoint)
23+
}
24+
25+
func readSingularDataflowSqlEndpoint(d *schema.ResourceData, m interface{}) error {
26+
sync := &DataflowSqlEndpointDataSourceCrud{}
27+
sync.D = d
28+
sync.Client = m.(*client.OracleClients).DataFlowClient()
29+
30+
return tfresource.ReadResource(sync)
31+
}
32+
33+
type DataflowSqlEndpointDataSourceCrud struct {
34+
D *schema.ResourceData
35+
Client *oci_dataflow.DataFlowClient
36+
Res *oci_dataflow.GetSqlEndpointResponse
37+
}
38+
39+
func (s *DataflowSqlEndpointDataSourceCrud) VoidState() {
40+
s.D.SetId("")
41+
}
42+
43+
func (s *DataflowSqlEndpointDataSourceCrud) Get() error {
44+
request := oci_dataflow.GetSqlEndpointRequest{}
45+
46+
if sqlEndpointId, ok := s.D.GetOkExists("sql_endpoint_id"); ok {
47+
tmp := sqlEndpointId.(string)
48+
request.SqlEndpointId = &tmp
49+
}
50+
51+
request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(false, "dataflow")
52+
53+
response, err := s.Client.GetSqlEndpoint(context.Background(), request)
54+
if err != nil {
55+
return err
56+
}
57+
58+
s.Res = &response
59+
return nil
60+
}
61+
62+
func (s *DataflowSqlEndpointDataSourceCrud) SetData() error {
63+
if s.Res == nil {
64+
return nil
65+
}
66+
67+
s.D.SetId(*s.Res.Id)
68+
69+
if s.Res.CompartmentId != nil {
70+
s.D.Set("compartment_id", *s.Res.CompartmentId)
71+
}
72+
73+
if s.Res.DefinedTags != nil {
74+
s.D.Set("defined_tags", tfresource.DefinedTagsToMap(s.Res.DefinedTags))
75+
}
76+
77+
if s.Res.Description != nil {
78+
s.D.Set("description", *s.Res.Description)
79+
}
80+
81+
if s.Res.DisplayName != nil {
82+
s.D.Set("display_name", *s.Res.DisplayName)
83+
}
84+
85+
if s.Res.DriverShape != nil {
86+
s.D.Set("driver_shape", *s.Res.DriverShape)
87+
}
88+
89+
if s.Res.DriverShapeConfig != nil {
90+
s.D.Set("driver_shape_config", []interface{}{ShapeConfigToMap(s.Res.DriverShapeConfig)})
91+
} else {
92+
s.D.Set("driver_shape_config", nil)
93+
}
94+
95+
if s.Res.ExecutorShape != nil {
96+
s.D.Set("executor_shape", *s.Res.ExecutorShape)
97+
}
98+
99+
if s.Res.ExecutorShapeConfig != nil {
100+
s.D.Set("executor_shape_config", []interface{}{ShapeConfigToMap(s.Res.ExecutorShapeConfig)})
101+
} else {
102+
s.D.Set("executor_shape_config", nil)
103+
}
104+
105+
s.D.Set("freeform_tags", s.Res.FreeformTags)
106+
s.D.Set("freeform_tags", s.Res.FreeformTags)
107+
108+
if s.Res.JdbcEndpointUrl != nil {
109+
s.D.Set("jdbc_endpoint_url", *s.Res.JdbcEndpointUrl)
110+
}
111+
112+
if s.Res.LakeId != nil {
113+
s.D.Set("lake_id", *s.Res.LakeId)
114+
}
115+
116+
if s.Res.LastAcceptedRequestToken != nil {
117+
s.D.Set("last_accepted_request_token", *s.Res.LastAcceptedRequestToken)
118+
}
119+
120+
if s.Res.MaxExecutorCount != nil {
121+
s.D.Set("max_executor_count", *s.Res.MaxExecutorCount)
122+
}
123+
124+
if s.Res.MetastoreId != nil {
125+
s.D.Set("metastore_id", *s.Res.MetastoreId)
126+
}
127+
128+
if s.Res.MinExecutorCount != nil {
129+
s.D.Set("min_executor_count", *s.Res.MinExecutorCount)
130+
}
131+
132+
if s.Res.NetworkConfiguration != nil {
133+
networkConfigurationArray := []interface{}{}
134+
if networkConfigurationMap := SqlEndpointNetworkConfigurationToMap(&s.Res.NetworkConfiguration, true); networkConfigurationMap != nil {
135+
networkConfigurationArray = append(networkConfigurationArray, networkConfigurationMap)
136+
}
137+
s.D.Set("network_configuration", networkConfigurationArray)
138+
} else {
139+
s.D.Set("network_configuration", nil)
140+
}
141+
142+
s.D.Set("spark_advanced_configurations", s.Res.SparkAdvancedConfigurations)
143+
s.D.Set("spark_advanced_configurations", s.Res.SparkAdvancedConfigurations)
144+
145+
if s.Res.SqlEndpointVersion != nil {
146+
s.D.Set("sql_endpoint_version", *s.Res.SqlEndpointVersion)
147+
}
148+
149+
s.D.Set("state", s.Res.LifecycleState)
150+
151+
if s.Res.StateMessage != nil {
152+
s.D.Set("state_message", *s.Res.StateMessage)
153+
}
154+
155+
if s.Res.SystemTags != nil {
156+
s.D.Set("system_tags", tfresource.SystemTagsToMap(s.Res.SystemTags))
157+
}
158+
159+
if s.Res.TimeCreated != nil {
160+
s.D.Set("time_created", s.Res.TimeCreated.String())
161+
}
162+
163+
if s.Res.TimeUpdated != nil {
164+
s.D.Set("time_updated", s.Res.TimeUpdated.String())
165+
}
166+
167+
if s.Res.WarehouseBucketUri != nil {
168+
s.D.Set("warehouse_bucket_uri", *s.Res.WarehouseBucketUri)
169+
}
170+
171+
return nil
172+
}

0 commit comments

Comments
 (0)