Skip to content

Commit f83e9df

Browse files
committed
chore(onboarding): create secure onboarding client
1 parent 89aa54c commit f83e9df

7 files changed

+113
-115
lines changed

sysdig/data_source_sysdig_secure_trusted_cloud_identity.go renamed to sysdig/data_source_sysdig_secure_onboarding.go

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,16 @@ import (
66
"time"
77

88
"github.com/aws/aws-sdk-go/aws/arn"
9+
v2 "github.com/draios/terraform-provider-sysdig/sysdig/internal/client/v2"
910
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1011
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1112
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
1213
)
1314

15+
func getSecureOnboardingClient(c SysdigClients) (v2.OnboardingSecureInterface, error) {
16+
return c.sysdigSecureClientV2()
17+
}
18+
1419
func dataSourceSysdigSecureTrustedCloudIdentity() *schema.Resource {
1520
timeout := 5 * time.Minute
1621

@@ -53,7 +58,7 @@ func dataSourceSysdigSecureTrustedCloudIdentity() *schema.Resource {
5358

5459
// Retrieves the information of a resource form the file and loads it in Terraform
5560
func dataSourceSysdigSecureTrustedCloudIdentityRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
56-
client, err := getSecureCloudAccountClient(meta.(SysdigClients))
61+
client, err := getSecureOnboardingClient(meta.(SysdigClients))
5762
if err != nil {
5863
return diag.FromErr(err)
5964
}
@@ -88,3 +93,43 @@ func dataSourceSysdigSecureTrustedCloudIdentityRead(ctx context.Context, d *sche
8893
}
8994
return nil
9095
}
96+
97+
func dataSourceSysdigSecureTenantExternalID() *schema.Resource {
98+
timeout := 5 * time.Minute
99+
100+
return &schema.Resource{
101+
ReadContext: dataSourceSysdigSecureTenantExternalIDRead,
102+
103+
Timeouts: &schema.ResourceTimeout{
104+
Read: schema.DefaultTimeout(timeout),
105+
},
106+
107+
Schema: map[string]*schema.Schema{
108+
"external_id": {
109+
Type: schema.TypeString,
110+
Computed: true,
111+
},
112+
},
113+
}
114+
}
115+
116+
// Retrieves the information of a resource form the file and loads it in Terraform
117+
func dataSourceSysdigSecureTenantExternalIDRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
118+
client, err := getSecureOnboardingClient(meta.(SysdigClients))
119+
if err != nil {
120+
return diag.FromErr(err)
121+
}
122+
123+
externalId, err := client.GetTenantExternalIDSecure(ctx)
124+
if err != nil {
125+
return diag.FromErr(err)
126+
}
127+
128+
d.SetId(externalId)
129+
err = d.Set("external_id", externalId)
130+
if err != nil {
131+
return diag.FromErr(err)
132+
}
133+
134+
return nil
135+
}

sysdig/data_source_sysdig_secure_trusted_cloud_identity_test.go renamed to sysdig/data_source_sysdig_secure_onboarding_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,23 @@ data "sysdig_secure_trusted_cloud_identity" "trusted_identity" {
6161
}
6262
`
6363
}
64+
65+
func TestAccTenantExternalIDDataSource(t *testing.T) {
66+
resource.ParallelTest(t, resource.TestCase{
67+
PreCheck: func() {
68+
if v := os.Getenv("SYSDIG_SECURE_API_TOKEN"); v == "" {
69+
t.Fatal("SYSDIG_SECURE_API_TOKEN must be set for acceptance tests")
70+
}
71+
},
72+
ProviderFactories: map[string]func() (*schema.Provider, error){
73+
"sysdig": func() (*schema.Provider, error) {
74+
return sysdig.Provider(), nil
75+
},
76+
},
77+
Steps: []resource.TestStep{
78+
{
79+
Config: `data "sysdig_secure_tenant_external_id" "external_id" {}`,
80+
},
81+
},
82+
})
83+
}

sysdig/data_source_sysdig_secure_tenant_external_id.go

Lines changed: 0 additions & 49 deletions
This file was deleted.

sysdig/data_source_sysdig_secure_tenant_external_id_test.go

Lines changed: 0 additions & 33 deletions
This file was deleted.

sysdig/internal/client/v2/cloud_account.go

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ const (
1111
cloudAccountsWithExternalIDPath = "%s/api/cloud/v2/accounts?includeExternalID=true&upsert=true"
1212
cloudAccountPath = "%s/api/cloud/v2/accounts/%s"
1313
cloudAccountWithExternalIDPath = "%s/api/cloud/v2/accounts/%s?includeExternalID=true"
14-
onboardingTrustedIdentityPath = "%s/api/secure/onboarding/v2/trustedIdentity?provider=%s"
15-
onboardingTenantExternaIDPath = "%s/api/secure/onboarding/v2/externalID"
1614
providersPath = "%v/api/v2/providers"
1715
)
1816

@@ -22,8 +20,6 @@ type CloudAccountSecureInterface interface {
2220
GetCloudAccountSecure(ctx context.Context, accountID string) (*CloudAccountSecure, error)
2321
DeleteCloudAccountSecure(ctx context.Context, accountID string) error
2422
UpdateCloudAccountSecure(ctx context.Context, accountID string, cloudAccount *CloudAccountSecure) (*CloudAccountSecure, error)
25-
GetTrustedCloudIdentitySecure(ctx context.Context, provider string) (string, error)
26-
GetTenantExternalIDSecure(ctx context.Context) (string, error)
2723
}
2824

2925
type CloudAccountMonitorInterface interface {
@@ -101,34 +97,6 @@ func (client *Client) UpdateCloudAccountSecure(ctx context.Context, accountID st
10197
return Unmarshal[*CloudAccountSecure](response.Body)
10298
}
10399

104-
func (client *Client) GetTrustedCloudIdentitySecure(ctx context.Context, provider string) (string, error) {
105-
response, err := client.requester.Request(ctx, http.MethodGet, fmt.Sprintf(onboardingTrustedIdentityPath, client.config.url, provider), nil)
106-
if err != nil {
107-
return "", err
108-
}
109-
defer response.Body.Close()
110-
111-
if response.StatusCode != http.StatusOK {
112-
return "", client.ErrorFromResponse(response)
113-
}
114-
115-
return Unmarshal[string](response.Body)
116-
}
117-
118-
func (client *Client) GetTenantExternalIDSecure(ctx context.Context) (string, error) {
119-
response, err := client.requester.Request(ctx, http.MethodGet, fmt.Sprintf(onboardingTenantExternaIDPath, client.config.url), nil)
120-
if err != nil {
121-
return "", err
122-
}
123-
defer response.Body.Close()
124-
125-
if response.StatusCode != http.StatusOK {
126-
return "", client.ErrorFromResponse(response)
127-
}
128-
129-
return Unmarshal[string](response.Body)
130-
}
131-
132100
func (client *Client) cloudAccountsURL(includeExternalID bool) string {
133101
if includeExternalID {
134102
return fmt.Sprintf(cloudAccountsWithExternalIDPath, client.config.url)
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package v2
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"net/http"
7+
)
8+
9+
const (
10+
onboardingTrustedIdentityPath = "%s/api/secure/onboarding/v2/trustedIdentity?provider=%s"
11+
onboardingTenantExternaIDPath = "%s/api/secure/onboarding/v2/externalID"
12+
)
13+
14+
type OnboardingSecureInterface interface {
15+
Base
16+
GetTrustedCloudIdentitySecure(ctx context.Context, provider string) (string, error)
17+
GetTenantExternalIDSecure(ctx context.Context) (string, error)
18+
}
19+
20+
func (client *Client) GetTrustedCloudIdentitySecure(ctx context.Context, provider string) (string, error) {
21+
response, err := client.requester.Request(ctx, http.MethodGet, fmt.Sprintf(onboardingTrustedIdentityPath, client.config.url, provider), nil)
22+
if err != nil {
23+
return "", err
24+
}
25+
defer response.Body.Close()
26+
27+
if response.StatusCode != http.StatusOK {
28+
return "", client.ErrorFromResponse(response)
29+
}
30+
31+
return Unmarshal[string](response.Body)
32+
}
33+
34+
func (client *Client) GetTenantExternalIDSecure(ctx context.Context) (string, error) {
35+
response, err := client.requester.Request(ctx, http.MethodGet, fmt.Sprintf(onboardingTenantExternaIDPath, client.config.url), nil)
36+
if err != nil {
37+
return "", err
38+
}
39+
defer response.Body.Close()
40+
41+
if response.StatusCode != http.StatusOK {
42+
return "", client.ErrorFromResponse(response)
43+
}
44+
45+
return Unmarshal[string](response.Body)
46+
}

sysdig/internal/client/v2/sysdig.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ type SysdigSecure interface {
4848
OrganizationSecureInterface
4949
CloudauthAccountComponentSecureInterface
5050
CloudauthAccountFeatureSecureInterface
51+
OnboardingSecureInterface
5152
}
5253

5354
func (sr *SysdigRequest) Request(ctx context.Context, method string, url string, payload io.Reader) (*http.Response, error) {

0 commit comments

Comments
 (0)