Skip to content

Commit bf2eb19

Browse files
authored
feat(cloudauth): organizational units (#437)
* feat(cloudauth): organizational units * docs(cloudauth): new cloud org param: organizational_unit_ids * fix(cloudauth): secureOrganizationFromResourceData * fix(cloudauth): allow success on response OK, Created, Accepted
1 parent eebfad8 commit bf2eb19

File tree

4 files changed

+28
-9
lines changed

4 files changed

+28
-9
lines changed

sysdig/common.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,5 @@ const (
6060
SchemaFeature = "feature"
6161
SchemaManagementAccountId = "management_account_id"
6262
SchemaOrganizationIDKey = "organization_id"
63+
SchemaOrganizationalUnitIds = "organizational_unit_ids"
6364
)

sysdig/internal/client/v2/organization.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func (client *Client) CreateOrganizationSecure(ctx context.Context, org *Organiz
3535
}
3636
defer response.Body.Close()
3737

38-
if response.StatusCode != http.StatusOK && response.StatusCode != http.StatusCreated {
38+
if response.StatusCode != http.StatusOK && response.StatusCode != http.StatusCreated && response.StatusCode != http.StatusAccepted {
3939
err = client.ErrorFromResponse(response)
4040
return nil, err
4141
}
@@ -88,7 +88,7 @@ func (client *Client) UpdateOrganizationSecure(ctx context.Context, orgID string
8888
}
8989
defer response.Body.Close()
9090

91-
if response.StatusCode != http.StatusOK {
91+
if response.StatusCode != http.StatusOK && response.StatusCode != http.StatusCreated && response.StatusCode != http.StatusAccepted {
9292
errStatus, err := client.ErrorAndStatusFromResponse(response)
9393
return nil, errStatus, err
9494
}

sysdig/resource_sysdig_secure_organization.go

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ func resourceSysdigSecureOrganization() *schema.Resource {
3838
Type: schema.TypeString,
3939
Required: true,
4040
},
41+
SchemaOrganizationalUnitIds: {
42+
Type: schema.TypeList,
43+
Optional: true,
44+
Elem: &schema.Schema{
45+
Type: schema.TypeString,
46+
},
47+
},
4148
},
4249
}
4350
}
@@ -54,7 +61,7 @@ func resourceSysdigSecureOrganizationCreate(ctx context.Context, data *schema.Re
5461

5562
org := secureOrganizationFromResourceData(data)
5663

57-
orgCreated, err := client.CreateOrganizationSecure(ctx, &org)
64+
orgCreated, err := client.CreateOrganizationSecure(ctx, org)
5865
if err != nil {
5966
return diag.FromErr(err)
6067
}
@@ -111,7 +118,7 @@ func resourceSysdigSecureOrganizationUpdate(ctx context.Context, data *schema.Re
111118

112119
org := secureOrganizationFromResourceData(data)
113120

114-
_, errStatus, err := client.UpdateOrganizationSecure(ctx, data.Id(), &org)
121+
_, errStatus, err := client.UpdateOrganizationSecure(ctx, data.Id(), org)
115122
if err != nil {
116123
if strings.Contains(errStatus, "404") {
117124
return nil
@@ -122,12 +129,17 @@ func resourceSysdigSecureOrganizationUpdate(ctx context.Context, data *schema.Re
122129
return nil
123130
}
124131

125-
func secureOrganizationFromResourceData(data *schema.ResourceData) v2.OrganizationSecure {
126-
return v2.OrganizationSecure{
127-
CloudOrganization: cloudauth.CloudOrganization{
128-
ManagementAccountId: data.Get(SchemaManagementAccountId).(string),
129-
},
132+
func secureOrganizationFromResourceData(data *schema.ResourceData) *v2.OrganizationSecure {
133+
secureOrganization := &v2.OrganizationSecure{CloudOrganization: cloudauth.CloudOrganization{}}
134+
secureOrganization.CloudOrganization.ManagementAccountId = data.Get(SchemaManagementAccountId).(string)
135+
organizationalUnitIdsData := data.Get(SchemaOrganizationalUnitIds).([]interface{})
136+
for _, organizationalUnitIdData := range organizationalUnitIdsData {
137+
secureOrganization.CloudOrganization.OrganizationalUnitIds = append(
138+
secureOrganization.CloudOrganization.OrganizationalUnitIds,
139+
organizationalUnitIdData.(string),
140+
)
130141
}
142+
return secureOrganization
131143
}
132144

133145
func secureOrganizationToResourceData(data *schema.ResourceData, org *v2.OrganizationSecure) error {
@@ -136,6 +148,11 @@ func secureOrganizationToResourceData(data *schema.ResourceData, org *v2.Organiz
136148
return err
137149
}
138150

151+
err = data.Set(SchemaOrganizationalUnitIds, org.OrganizationalUnitIds)
152+
if err != nil {
153+
return err
154+
}
155+
139156
err = data.Set(SchemaIDKey, org.Id)
140157
if err != nil {
141158
return err

website/docs/r/secure_organization.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ resource "sysdig_secure_organization" "sample" {
2828
## Argument Reference
2929

3030
* `management_account_id` - (Required) Cloud Account created using resource sysdig_secure_cloud_auth_account.
31+
* `organizational_unit_ids` - (Optional) List of organizational unit identifiers from which to onboard. If empty, the entire organization is onboarded.
3132

3233
## Attributes Reference
3334

0 commit comments

Comments
 (0)