Skip to content

Commit 83f785e

Browse files
authored
Merge pull request #202 from ovh/beta-orders
Beta orders
2 parents 576b084 + 297d470 commit 83f785e

File tree

209 files changed

+7829
-38
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

209 files changed

+7829
-38
lines changed

ovh/config.go

+29-8
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package ovh
33
import (
44
"fmt"
55
"log"
6+
"sync"
67
"time"
78

89
cleanhttp "github.com/hashicorp/go-cleanhttp"
@@ -16,6 +17,9 @@ type Config struct {
1617
ApplicationSecret string
1718
ConsumerKey string
1819
OVHClient *ovh.Client
20+
authenticated bool
21+
authFailed error
22+
lockAuth *sync.Mutex
1923
}
2024

2125
type OvhAuthCurrentCredential struct {
@@ -43,6 +47,31 @@ func clientDefault(c *Config) (*ovh.Client, error) {
4347
}
4448

4549
func (c *Config) loadAndValidate() error {
50+
if err := c.load(); err != nil {
51+
return err
52+
}
53+
54+
c.lockAuth.Lock()
55+
defer c.lockAuth.Unlock()
56+
57+
if c.authFailed != nil {
58+
return c.authFailed
59+
}
60+
61+
if !c.authenticated {
62+
var cred OvhAuthCurrentCredential
63+
if err := c.OVHClient.Get("/auth/currentCredential", &cred); err != nil {
64+
c.authFailed = fmt.Errorf("OVH client seems to be misconfigured: %q\n", err)
65+
return c.authFailed
66+
}
67+
68+
log.Printf("[DEBUG] Logged in on OVH API")
69+
c.authenticated = true
70+
}
71+
return nil
72+
}
73+
74+
func (c *Config) load() error {
4675
validEndpoint := false
4776

4877
ovhEndpoints := [7]string{ovh.OvhEU, ovh.OvhCA, ovh.OvhUS, ovh.KimsufiEU, ovh.KimsufiCA, ovh.SoyoustartEU, ovh.SoyoustartCA}
@@ -69,14 +98,6 @@ func (c *Config) loadAndValidate() error {
6998
}
7099

71100
httpClient.Transport = logging.NewTransport("OVH", httpClient.Transport)
72-
73-
var cred OvhAuthCurrentCredential
74-
err = targetClient.Get("/auth/currentCredential", &cred)
75-
if err != nil {
76-
return fmt.Errorf("OVH client seems to be misconfigured: %q\n", err)
77-
}
78-
79-
log.Printf("[DEBUG] Logged in on OVH API")
80101
c.OVHClient = targetClient
81102

82103
return nil
File renamed without changes.
File renamed without changes.
File renamed without changes.

ovh/data_dbaas_logs_input_engine.go

+97
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package ovh
2+
3+
import (
4+
"fmt"
5+
"log"
6+
"net/url"
7+
"strings"
8+
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
10+
"github.com/ovh/terraform-provider-ovh/ovh/helpers"
11+
)
12+
13+
func dataSourceDbaasLogsInputEngine() *schema.Resource {
14+
return &schema.Resource{
15+
Read: func(d *schema.ResourceData, meta interface{}) error {
16+
return dataSourceDbaasLogsInputEngineRead(d, meta)
17+
},
18+
Schema: map[string]*schema.Schema{
19+
"name": {
20+
Type: schema.TypeString,
21+
Optional: true,
22+
Computed: true,
23+
},
24+
"is_deprecated": {
25+
Type: schema.TypeBool,
26+
Optional: true,
27+
Computed: true,
28+
},
29+
"version": {
30+
Type: schema.TypeString,
31+
Optional: true,
32+
Computed: true,
33+
},
34+
},
35+
}
36+
}
37+
38+
func dataSourceDbaasLogsInputEngineRead(d *schema.ResourceData, meta interface{}) error {
39+
config := meta.(*Config)
40+
41+
log.Printf("[DEBUG] Will read dbaas logs input engines")
42+
res := []string{}
43+
endpoint := fmt.Sprintf("/dbaas/logs/input/engine")
44+
if err := config.OVHClient.Get(endpoint, &res); err != nil {
45+
return fmt.Errorf("Error calling GET %s:\n\t %q", endpoint, err)
46+
}
47+
48+
nameFilter := helpers.GetNilStringPointerFromData(d, "name")
49+
isDeprecatedFilter := helpers.GetNilBoolPointerFromData(d, "is_deprecated")
50+
versionFilter := helpers.GetNilStringPointerFromData(d, "version")
51+
52+
engines := []*DbaasLogsInputEngine{}
53+
54+
for _, id := range res {
55+
log.Printf("[DEBUG] Will read dbaas logs input engine %s", id)
56+
endpoint := fmt.Sprintf("/dbaas/logs/input/engine/%s",
57+
url.PathEscape(id),
58+
)
59+
engine := &DbaasLogsInputEngine{}
60+
if err := config.OVHClient.Get(endpoint, &engine); err != nil {
61+
return fmt.Errorf("Error calling GET %s:\n\t %q", endpoint, err)
62+
}
63+
64+
match := true
65+
if nameFilter != nil && strings.ToLower(engine.Name) != strings.ToLower(*nameFilter) {
66+
match = false
67+
}
68+
if versionFilter != nil && strings.ToLower(engine.Version) != strings.ToLower(*versionFilter) {
69+
match = false
70+
}
71+
if isDeprecatedFilter != nil && engine.IsDeprecated != *isDeprecatedFilter {
72+
match = false
73+
}
74+
if match {
75+
engines = append(engines, engine)
76+
}
77+
}
78+
79+
if len(engines) == 0 {
80+
return fmt.Errorf("Your query returned no results. " +
81+
"Please change your search criteria and try again.")
82+
}
83+
if len(engines) > 1 {
84+
return fmt.Errorf("Your query returned more than one result. " +
85+
"Please change your search criteria and try again.")
86+
}
87+
88+
for k, v := range engines[0].ToMap() {
89+
if k != "id" {
90+
d.Set(k, v)
91+
} else {
92+
d.SetId(fmt.Sprint(v))
93+
}
94+
}
95+
96+
return nil
97+
}
+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package ovh
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
)
8+
9+
const testAccDataSourceDbaasLogsInputEngine_deprecated = `
10+
data "ovh_dbaas_logs_input_engine" "logstash" {
11+
name = "logstash"
12+
version = "6.8"
13+
is_deprecated = true
14+
}
15+
`
16+
const testAccDataSourceDbaasLogsInputEngine_basic = `
17+
data "ovh_dbaas_logs_input_engine" "logstash" {
18+
name = "logstash"
19+
version = "7.x"
20+
}
21+
`
22+
23+
func TestAccDataSourceDbaasLogsInputEngine_basic(t *testing.T) {
24+
resource.Test(t, resource.TestCase{
25+
PreCheck: func() { testAccPreCheckCredentials(t) },
26+
27+
Providers: testAccProviders,
28+
Steps: []resource.TestStep{
29+
{
30+
Config: testAccDataSourceDbaasLogsInputEngine_basic,
31+
Check: resource.ComposeTestCheckFunc(
32+
resource.TestCheckResourceAttr(
33+
"data.ovh_dbaas_logs_input_engine.logstash",
34+
"is_deprecated",
35+
"false",
36+
),
37+
resource.TestCheckResourceAttr(
38+
"data.ovh_dbaas_logs_input_engine.logstash",
39+
"version",
40+
"7.x",
41+
),
42+
),
43+
},
44+
},
45+
})
46+
}
47+
48+
func TestAccDataSourceDbaasLogsInputEngine_deprecated(t *testing.T) {
49+
resource.Test(t, resource.TestCase{
50+
PreCheck: func() { testAccPreCheckCredentials(t) },
51+
52+
Providers: testAccProviders,
53+
Steps: []resource.TestStep{
54+
{
55+
Config: testAccDataSourceDbaasLogsInputEngine_deprecated,
56+
Check: resource.ComposeTestCheckFunc(
57+
resource.TestCheckResourceAttr(
58+
"data.ovh_dbaas_logs_input_engine.logstash",
59+
"is_deprecated",
60+
"true",
61+
),
62+
resource.TestCheckResourceAttr(
63+
"data.ovh_dbaas_logs_input_engine.logstash",
64+
"version",
65+
"6.8",
66+
),
67+
),
68+
},
69+
},
70+
})
71+
}

0 commit comments

Comments
 (0)