Skip to content

Commit 5b2c6a7

Browse files
committed
Add resource and data for ovh_dbaas_logs_cluster
1 parent 3f75aeb commit 5b2c6a7

9 files changed

+658
-2
lines changed

ovh/data_dbaas_logs_cluster.go

+141
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
package ovh
2+
3+
import (
4+
"fmt"
5+
"log"
6+
"net/url"
7+
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9+
)
10+
11+
func dataSourceDbaasLogsCluster() *schema.Resource {
12+
return &schema.Resource{
13+
Read: func(d *schema.ResourceData, meta interface{}) error {
14+
return dataSourceDbaasLogsClusterRead(d, meta)
15+
},
16+
Schema: map[string]*schema.Schema{
17+
"service_name": {
18+
Type: schema.TypeString,
19+
Description: "The service name",
20+
Required: true,
21+
},
22+
// Computed
23+
"cluster_type": {
24+
Type: schema.TypeString,
25+
Description: "Cluster type",
26+
Computed: true,
27+
},
28+
"dedicated_input_pem": {
29+
Type: schema.TypeString,
30+
Description: "PEM for dedicated inputs",
31+
Computed: true,
32+
Sensitive: true,
33+
},
34+
"archive_allowed_networks": {
35+
Type: schema.TypeSet,
36+
Elem: &schema.Schema{
37+
Type: schema.TypeString,
38+
},
39+
Description: "Allowed networks for ARCHIVE flow type",
40+
Computed: true,
41+
},
42+
"direct_input_allowed_networks": {
43+
Type: schema.TypeSet,
44+
Elem: &schema.Schema{
45+
Type: schema.TypeString,
46+
},
47+
Description: "Allowed networks for DIRECT_INPUT flow type",
48+
Computed: true,
49+
},
50+
"direct_input_pem": {
51+
Type: schema.TypeString,
52+
Description: "PEM for direct inputs",
53+
Computed: true,
54+
Sensitive: true,
55+
},
56+
"hostname": {
57+
Type: schema.TypeString,
58+
Description: "hostname",
59+
Computed: true,
60+
},
61+
"is_default": {
62+
Type: schema.TypeBool,
63+
Description: "All content generated by given service will be placed on this cluster",
64+
Computed: true,
65+
},
66+
"is_unlocked": {
67+
Type: schema.TypeBool,
68+
Description: "Allow given service to perform advanced operations on cluster",
69+
Computed: true,
70+
},
71+
"query_allowed_networks": {
72+
Type: schema.TypeSet,
73+
Elem: &schema.Schema{
74+
Type: schema.TypeString,
75+
},
76+
Description: "Allowed networks for QUERY flow type",
77+
Computed: true,
78+
},
79+
"region": {
80+
Type: schema.TypeString,
81+
Description: "Data center localization",
82+
Computed: true,
83+
},
84+
},
85+
}
86+
}
87+
88+
func dbaasGetClusterID(config *Config, serviceName string) (string, error) {
89+
res := []string{}
90+
91+
endpoint := fmt.Sprintf(
92+
"/dbaas/logs/%s/cluster",
93+
url.PathEscape(serviceName),
94+
)
95+
96+
if err := config.OVHClient.Get(endpoint, &res); err != nil {
97+
return "", fmt.Errorf("Error calling GET %s:\n\t %q", endpoint, err)
98+
}
99+
100+
return res[0], nil
101+
}
102+
103+
func dataSourceDbaasLogsClusterRead(d *schema.ResourceData, meta interface{}) error {
104+
config := meta.(*Config)
105+
106+
serviceName := d.Get("service_name").(string)
107+
108+
log.Printf("[DEBUG] Will read dbaas logs cluster %s", serviceName)
109+
110+
cluster_id, err := dbaasGetClusterID(config, serviceName)
111+
112+
if err != nil {
113+
return fmt.Errorf("Error fetching info for %s:\n\t %q", serviceName, err)
114+
}
115+
116+
d.SetId(cluster_id)
117+
118+
endpoint := fmt.Sprintf(
119+
"/dbaas/logs/%s/cluster/%s",
120+
url.PathEscape(serviceName),
121+
url.PathEscape(cluster_id),
122+
)
123+
124+
res := map[string]interface{}{}
125+
if err := config.OVHClient.Get(endpoint, &res); err != nil {
126+
return fmt.Errorf("Error calling GET %s:\n\t %q", endpoint, err)
127+
}
128+
129+
d.Set("archive_allowed_networks", res["archiveAllowedNetworks"])
130+
d.Set("cluster_type", res["clusterType"])
131+
d.Set("dedicated_input_pem", res["dedicatedInputPEM"])
132+
d.Set("direct_input_allowed_networks", res["directInputAllowedNetworks"])
133+
d.Set("direct_input_pem", res["directInputPEM"])
134+
d.Set("hostname", res["hostname"])
135+
d.Set("is_default", res["isDefault"])
136+
d.Set("is_unlocked", res["isUnlocked"])
137+
d.Set("query_allowed_networks", res["queryAllowedNetworks"])
138+
d.Set("region", res["region"])
139+
140+
return nil
141+
}

ovh/data_dbaas_logs_cluster_test.go

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package ovh
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"testing"
7+
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
9+
)
10+
11+
const testAccDataSourceDbaasLogsCluster = `
12+
data "ovh_dbaas_logs_cluster" "ldp" {
13+
service_name = "%s"
14+
}
15+
`
16+
17+
func TestAccDataSourceDbaasLogsCluster(t *testing.T) {
18+
serviceName := os.Getenv("OVH_DBAAS_LOGS_SERVICE_TEST")
19+
20+
config := fmt.Sprintf(
21+
testAccDataSourceDbaasLogsCluster,
22+
serviceName,
23+
)
24+
25+
resource.Test(t, resource.TestCase{
26+
PreCheck: func() { testAccPreCheckDbaasLogs(t) },
27+
28+
Providers: testAccProviders,
29+
Steps: []resource.TestStep{
30+
{
31+
Config: config,
32+
Check: resource.ComposeTestCheckFunc(
33+
resource.TestCheckResourceAttr(
34+
"data.ovh_dbaas_logs_cluster.ldp",
35+
"service_name",
36+
serviceName,
37+
),
38+
),
39+
},
40+
},
41+
})
42+
}

ovh/provider.go

+2
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ func Provider() *schema.Provider {
9191
"ovh_cloud_project_user_s3_credentials": dataCloudProjectUserS3Credentials(),
9292
"ovh_cloud_project_user_s3_policy": dataCloudProjectUserS3Policy(),
9393
"ovh_cloud_project_users": datasourceCloudProjectUsers(),
94+
"ovh_dbaas_logs_cluster": dataSourceDbaasLogsCluster(),
9495
"ovh_dbaas_logs_input_engine": dataSourceDbaasLogsInputEngine(),
9596
"ovh_dbaas_logs_output_graylog_stream": dataSourceDbaasLogsOutputGraylogStream(),
9697
"ovh_dedicated_ceph": dataSourceDedicatedCeph(),
@@ -160,6 +161,7 @@ func Provider() *schema.Provider {
160161
"ovh_cloud_project_user_s3_credential": resourceCloudProjectUserS3Credential(),
161162
"ovh_cloud_project_user_s3_policy": resourceCloudProjectUserS3Policy(),
162163
"ovh_cloud_project_workflow_backup": resourceCloudProjectWorkflowBackup(),
164+
"ovh_dbaas_logs_cluster": resourceDbaasLogsCluster(),
163165
"ovh_dbaas_logs_input": resourceDbaasLogsInput(),
164166
"ovh_dbaas_logs_output_graylog_stream": resourceDbaasLogsOutputGraylogStream(),
165167
"ovh_dedicated_ceph_acl": resourceDedicatedCephACL(),

ovh/provider_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ func testAccPreCheckHostingPrivateDatabaseWhitelist(t *testing.T) {
161161
checkEnvOrSkip(t, "OVH_HOSTING_PRIVATEDATABASE_WHITELIST_SFTP_TEST")
162162
}
163163

164-
// Checks that the environment variables needed for the /cloud acceptance tests
164+
// Checks that the environment variables needed for the /dbaas acceptance tests
165165
// are set.
166166
func testAccPreCheckDbaasLogs(t *testing.T) {
167167
testAccPreCheckCredentials(t)

0 commit comments

Comments
 (0)