Skip to content

Commit 220016a

Browse files
authored
chore(git): switch to new SDK structure (#1336)
relates to STACKITTPR-556
1 parent 24eac4d commit 220016a

File tree

8 files changed

+69
-95
lines changed

8 files changed

+69
-95
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ require (
1616
github.com/stackitcloud/stackit-sdk-go/services/cdn v1.13.0
1717
github.com/stackitcloud/stackit-sdk-go/services/dns v0.19.1
1818
github.com/stackitcloud/stackit-sdk-go/services/edge v0.7.0
19-
github.com/stackitcloud/stackit-sdk-go/services/git v0.10.3
19+
github.com/stackitcloud/stackit-sdk-go/services/git v0.11.0
2020
github.com/stackitcloud/stackit-sdk-go/services/iaas v1.3.5
2121
github.com/stackitcloud/stackit-sdk-go/services/kms v1.3.2
2222
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.8.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,8 @@ github.com/stackitcloud/stackit-sdk-go/services/dns v0.19.1 h1:VfszhFq/Snsd0Lnfl
165165
github.com/stackitcloud/stackit-sdk-go/services/dns v0.19.1/go.mod h1:gBv6YkB3Xf3c0ZXg2GwtWY8zExwGPF/Ag114XiiERxg=
166166
github.com/stackitcloud/stackit-sdk-go/services/edge v0.7.0 h1:DNBiHWQEWXHSbaZBmnXb+CaPXX1uVsSfp4FTHoH4wrM=
167167
github.com/stackitcloud/stackit-sdk-go/services/edge v0.7.0/go.mod h1:CfqSEGCW0b5JlijCwtUT1kfjThmQ5jXX47TWrdD5rTU=
168-
github.com/stackitcloud/stackit-sdk-go/services/git v0.10.3 h1:VIjkSofZz9utOOkBdNZCIb07P/JdKc1kHV1P8Rq9dLc=
169-
github.com/stackitcloud/stackit-sdk-go/services/git v0.10.3/go.mod h1:EJk1Ss9GTel2NPIu/w3+x9XcQcEd2k3ibea5aQDzVhQ=
168+
github.com/stackitcloud/stackit-sdk-go/services/git v0.11.0 h1:siKBCYl7BwR5S25Y4SwUAX6eFTXSCkQ+8JIQEqyKIXo=
169+
github.com/stackitcloud/stackit-sdk-go/services/git v0.11.0/go.mod h1:QKy74hhLVZKXItw3y+elF8s9QezFqpEsAUmaqvNDzYs=
170170
github.com/stackitcloud/stackit-sdk-go/services/iaas v1.3.5 h1:W57+XRa8wTLsi5CV9Tqa7mGgt/PvlRM//RurXSmvII8=
171171
github.com/stackitcloud/stackit-sdk-go/services/iaas v1.3.5/go.mod h1:lTWjW57eAq1bwfM6nsNinhoBr3MHFW/GaFasdAsYfDM=
172172
github.com/stackitcloud/stackit-sdk-go/services/kms v1.3.2 h1:2ulSL2IkIAKND59eAjbEhVkOoBMyvm48ojwz1a3t0U0=

stackit/internal/services/git/git_acc_test.go

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
_ "embed"
66
"fmt"
77
"maps"
8+
"slices"
89
"strings"
910
"testing"
1011

@@ -13,8 +14,7 @@ import (
1314
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
1415
"github.com/hashicorp/terraform-plugin-testing/terraform"
1516
stackitSdkConfig "github.com/stackitcloud/stackit-sdk-go/core/config"
16-
"github.com/stackitcloud/stackit-sdk-go/core/utils"
17-
"github.com/stackitcloud/stackit-sdk-go/services/git"
17+
git "github.com/stackitcloud/stackit-sdk-go/services/git/v1betaapi"
1818
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
1919
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/testutil"
2020
)
@@ -321,20 +321,17 @@ func testAccCheckGitInstanceDestroy(s *terraform.State) error {
321321
instancesToDestroy = append(instancesToDestroy, instanceId)
322322
}
323323

324-
instancesResp, err := client.ListInstances(ctx, testutil.ProjectId).Execute()
324+
instancesResp, err := client.DefaultAPI.ListInstances(ctx, testutil.ProjectId).Execute()
325325
if err != nil {
326326
return fmt.Errorf("getting git instances: %w", err)
327327
}
328328

329-
gitInstances := *instancesResp.Instances
329+
gitInstances := instancesResp.Instances
330330
for i := range gitInstances {
331-
if gitInstances[i].Id == nil {
332-
continue
333-
}
334-
if utils.Contains(instancesToDestroy, *gitInstances[i].Id) {
335-
err := client.DeleteInstance(ctx, testutil.ProjectId, *gitInstances[i].Id).Execute()
331+
if slices.Contains(instancesToDestroy, gitInstances[i].Id) {
332+
err := client.DefaultAPI.DeleteInstance(ctx, testutil.ProjectId, gitInstances[i].Id).Execute()
336333
if err != nil {
337-
return fmt.Errorf("destroying git instance %s during CheckDestroy: %w", *gitInstances[i].Id, err)
334+
return fmt.Errorf("destroying git instance %s during CheckDestroy: %w", gitInstances[i].Id, err)
338335
}
339336
}
340337
}

stackit/internal/services/git/instance/datasource.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515
"github.com/hashicorp/terraform-plugin-framework/types"
1616
"github.com/hashicorp/terraform-plugin-log/tflog"
1717
"github.com/stackitcloud/stackit-sdk-go/core/oapierror"
18-
"github.com/stackitcloud/stackit-sdk-go/services/git"
18+
git "github.com/stackitcloud/stackit-sdk-go/services/git/v1betaapi"
1919
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
2020
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/features"
2121
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/validate"
@@ -139,7 +139,7 @@ func (g *gitDataSource) Read(ctx context.Context, req datasource.ReadRequest, re
139139
instanceId := model.InstanceId.ValueString()
140140

141141
// Read the current git instance via id
142-
gitInstanceResp, err := g.client.GetInstance(ctx, projectId, instanceId).Execute()
142+
gitInstanceResp, err := g.client.DefaultAPI.GetInstance(ctx, projectId, instanceId).Execute()
143143
if err != nil {
144144
var oapiErr *oapierror.GenericOpenAPIError
145145
ok := errors.As(err, &oapiErr)

stackit/internal/services/git/instance/resource.go

Lines changed: 21 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ import (
1818
"github.com/hashicorp/terraform-plugin-framework/types"
1919
"github.com/hashicorp/terraform-plugin-log/tflog"
2020
"github.com/stackitcloud/stackit-sdk-go/core/oapierror"
21-
"github.com/stackitcloud/stackit-sdk-go/services/git"
22-
"github.com/stackitcloud/stackit-sdk-go/services/git/wait"
21+
git "github.com/stackitcloud/stackit-sdk-go/services/git/v1betaapi"
22+
"github.com/stackitcloud/stackit-sdk-go/services/git/v1betaapi/wait"
2323
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
2424
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
2525
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/features"
@@ -209,7 +209,7 @@ func (g *gitResource) Create(ctx context.Context, req resource.CreateRequest, re
209209
}
210210

211211
// Create the new git instance via the API client.
212-
gitInstanceResp, err := g.client.CreateInstance(ctx, projectId).
212+
gitInstanceResp, err := g.client.DefaultAPI.CreateInstance(ctx, projectId).
213213
CreateInstancePayload(payload).
214214
Execute()
215215
if err != nil {
@@ -219,12 +219,7 @@ func (g *gitResource) Create(ctx context.Context, req resource.CreateRequest, re
219219

220220
ctx = core.LogResponse(ctx)
221221

222-
if gitInstanceResp.Id == nil {
223-
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating git instance", "Got empty git instance id")
224-
return
225-
}
226-
227-
gitInstanceId := *gitInstanceResp.Id
222+
gitInstanceId := gitInstanceResp.Id
228223
// Write id attributes to state before polling via the wait handler - just in case anything goes wrong during the wait handler
229224
ctx = utils.SetAndLogStateFields(ctx, &resp.Diagnostics, &resp.State, map[string]any{
230225
"project_id": projectId,
@@ -234,7 +229,7 @@ func (g *gitResource) Create(ctx context.Context, req resource.CreateRequest, re
234229
return
235230
}
236231

237-
_, err = wait.CreateGitInstanceWaitHandler(ctx, g.client, projectId, gitInstanceId).WaitWithContext(ctx)
232+
_, err = wait.CreateGitInstanceWaitHandler(ctx, g.client.DefaultAPI, projectId, gitInstanceId).WaitWithContext(ctx)
238233
if err != nil {
239234
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating git instance", fmt.Sprintf("Git instance creation waiting: %v", err))
240235
return
@@ -272,7 +267,7 @@ func (g *gitResource) Read(ctx context.Context, req resource.ReadRequest, resp *
272267
instanceId := model.InstanceId.ValueString()
273268

274269
// Read the current git instance via id
275-
gitInstanceResp, err := g.client.GetInstance(ctx, projectId, instanceId).Execute()
270+
gitInstanceResp, err := g.client.DefaultAPI.GetInstance(ctx, projectId, instanceId).Execute()
276271
if err != nil {
277272
var oapiErr *oapierror.GenericOpenAPIError
278273
ok := errors.As(err, &oapiErr)
@@ -327,15 +322,15 @@ func (g *gitResource) Delete(ctx context.Context, req resource.DeleteRequest, re
327322
ctx = tflog.SetField(ctx, "instance_id", instanceId)
328323

329324
// Call API to delete the existing git instance.
330-
err := g.client.DeleteInstance(ctx, projectId, instanceId).Execute()
325+
err := g.client.DefaultAPI.DeleteInstance(ctx, projectId, instanceId).Execute()
331326
if err != nil {
332327
core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting git instance", fmt.Sprintf("Calling API: %v", err))
333328
return
334329
}
335330

336331
ctx = core.LogResponse(ctx)
337332

338-
_, err = wait.DeleteGitInstanceWaitHandler(ctx, g.client, projectId, instanceId).WaitWithContext(ctx)
333+
_, err = wait.DeleteGitInstanceWaitHandler(ctx, g.client.DefaultAPI, projectId, instanceId).WaitWithContext(ctx)
339334
if err != nil {
340335
core.LogAndAddError(ctx, &resp.Diagnostics, "Error waiting for instance deletion", fmt.Sprintf("Instance deletion waiting: %v", err))
341336
return
@@ -375,34 +370,30 @@ func mapFields(ctx context.Context, resp *git.Instance, model *Model) error {
375370
return fmt.Errorf("model input is nil")
376371
}
377372

378-
if resp.Id == nil {
379-
return fmt.Errorf("git instance id not present")
380-
}
381-
382373
aclList := types.ListNull(types.StringType)
383374
var diags diag.Diagnostics
384-
if resp.Acl != nil && len(*resp.Acl) > 0 {
375+
if len(resp.Acl) > 0 {
385376
aclList, diags = types.ListValueFrom(ctx, types.StringType, resp.Acl)
386377
if diags.HasError() {
387378
return fmt.Errorf("mapping ACL: %w", core.DiagsToError(diags))
388379
}
389380
}
390381

391382
model.Created = types.StringNull()
392-
if resp.Created != nil && resp.Created.String() != "" {
383+
if resp.Created.String() != "" {
393384
model.Created = types.StringValue(resp.Created.String())
394385
}
395386

396387
// Build the ID by combining the project ID and instance id and assign the model's fields.
397-
model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), *resp.Id)
388+
model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), resp.Id)
398389
model.ACL = aclList
399-
model.ConsumedDisk = types.StringPointerValue(resp.ConsumedDisk)
400-
model.ConsumedObjectStorage = types.StringPointerValue(resp.ConsumedObjectStorage)
401-
model.Flavor = types.StringPointerValue(resp.Flavor)
402-
model.InstanceId = types.StringPointerValue(resp.Id)
403-
model.Name = types.StringPointerValue(resp.Name)
404-
model.Url = types.StringPointerValue(resp.Url)
405-
model.Version = types.StringPointerValue(resp.Version)
390+
model.ConsumedDisk = types.StringValue(resp.ConsumedDisk)
391+
model.ConsumedObjectStorage = types.StringValue(resp.ConsumedObjectStorage)
392+
model.Flavor = types.StringValue(resp.Flavor)
393+
model.InstanceId = types.StringValue(resp.Id)
394+
model.Name = types.StringValue(resp.Name)
395+
model.Url = types.StringValue(resp.Url)
396+
model.Version = types.StringValue(resp.Version)
406397

407398
return nil
408399
}
@@ -416,20 +407,20 @@ func toCreatePayload(ctx context.Context, model *Model) (git.CreateInstancePaylo
416407
}
417408

418409
payload := git.CreateInstancePayload{
419-
Name: model.Name.ValueStringPointer(),
410+
Name: model.Name.ValueString(),
420411
}
421412

422413
if !(model.ACL.IsNull() || model.ACL.IsUnknown()) {
423414
var acl []string
424415
aclDiags := model.ACL.ElementsAs(ctx, &acl, false)
425416
diags.Append(aclDiags...)
426417
if !aclDiags.HasError() {
427-
payload.Acl = &acl
418+
payload.Acl = acl
428419
}
429420
}
430421

431422
if !(model.Flavor.IsNull() || model.Flavor.IsUnknown()) {
432-
payload.Flavor = git.CreateInstancePayloadGetFlavorAttributeType(model.Flavor.ValueStringPointer())
423+
payload.Flavor = model.Flavor.ValueStringPointer()
433424
}
434425

435426
return payload, diags

stackit/internal/services/git/instance/resource_test.go

Lines changed: 34 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"github.com/hashicorp/terraform-plugin-framework/attr"
1212
"github.com/hashicorp/terraform-plugin-framework/types"
1313
"github.com/stackitcloud/stackit-sdk-go/core/utils"
14-
"github.com/stackitcloud/stackit-sdk-go/services/git"
14+
git "github.com/stackitcloud/stackit-sdk-go/services/git/v1betaapi"
1515
)
1616

1717
var (
@@ -34,36 +34,36 @@ func TestMapFields(t *testing.T) {
3434
{
3535
description: "minimal_input_name_only",
3636
input: &git.Instance{
37-
Id: utils.Ptr(testInstanceId),
38-
Name: utils.Ptr("git-min-instance"),
37+
Id: testInstanceId,
38+
Name: "git-min-instance",
3939
},
4040
expected: &Model{
4141
Id: types.StringValue(fmt.Sprintf("%s,%s", testProjectId, testInstanceId)),
4242
ProjectId: types.StringValue(testProjectId),
4343
InstanceId: types.StringValue(testInstanceId),
4444
Name: types.StringValue("git-min-instance"),
4545
ACL: types.ListNull(types.StringType),
46-
Flavor: types.StringNull(),
47-
Url: types.StringNull(),
48-
Version: types.StringNull(),
49-
Created: types.StringNull(),
50-
ConsumedDisk: types.StringNull(),
51-
ConsumedObjectStorage: types.StringNull(),
46+
Flavor: types.StringValue(""),
47+
Url: types.StringValue(""),
48+
Version: types.StringValue(""),
49+
Created: types.StringValue("0001-01-01 00:00:00 +0000 UTC"),
50+
ConsumedDisk: types.StringValue(""),
51+
ConsumedObjectStorage: types.StringValue(""),
5252
},
5353
isValid: true,
5454
},
5555
{
5656
description: "full_input_with_acl_and_flavor",
5757
input: &git.Instance{
58-
Acl: &[]string{"192.168.0.0/24"},
59-
ConsumedDisk: utils.Ptr("1.00 GB"),
60-
ConsumedObjectStorage: utils.Ptr("2.00 GB"),
61-
Created: &createdTime,
62-
Flavor: utils.Ptr("git-100"),
63-
Id: utils.Ptr(testInstanceId),
64-
Name: utils.Ptr("git-full-instance"),
65-
Url: utils.Ptr("https://git-full-instance.git.onstackit.cloud"),
66-
Version: utils.Ptr("v1.9.1"),
58+
Acl: []string{"192.168.0.0/24"},
59+
ConsumedDisk: "1.00 GB",
60+
ConsumedObjectStorage: "2.00 GB",
61+
Created: createdTime,
62+
Flavor: "git-100",
63+
Id: testInstanceId,
64+
Name: "git-full-instance",
65+
Url: "https://git-full-instance.git.onstackit.cloud",
66+
Version: "v1.9.1",
6767
},
6868
expected: &Model{
6969
Id: types.StringValue(fmt.Sprintf("%s,%s", testProjectId, testInstanceId)),
@@ -83,22 +83,22 @@ func TestMapFields(t *testing.T) {
8383
{
8484
description: "empty_acls",
8585
input: &git.Instance{
86-
Id: utils.Ptr(testInstanceId),
87-
Name: utils.Ptr("git-empty-acl"),
88-
Acl: &[]string{},
86+
Id: testInstanceId,
87+
Name: "git-empty-acl",
88+
Acl: []string{},
8989
},
9090
expected: &Model{
9191
Id: types.StringValue(fmt.Sprintf("%s,%s", testProjectId, testInstanceId)),
9292
ProjectId: types.StringValue(testProjectId),
9393
InstanceId: types.StringValue(testInstanceId),
9494
Name: types.StringValue("git-empty-acl"),
9595
ACL: types.ListNull(types.StringType),
96-
Flavor: types.StringNull(),
97-
Url: types.StringNull(),
98-
Version: types.StringNull(),
99-
Created: types.StringNull(),
100-
ConsumedDisk: types.StringNull(),
101-
ConsumedObjectStorage: types.StringNull(),
96+
Flavor: types.StringValue(""),
97+
Url: types.StringValue(""),
98+
Version: types.StringValue(""),
99+
Created: types.StringValue("0001-01-01 00:00:00 +0000 UTC"),
100+
ConsumedDisk: types.StringValue(""),
101+
ConsumedObjectStorage: types.StringValue(""),
102102
},
103103
isValid: true,
104104
},
@@ -108,20 +108,6 @@ func TestMapFields(t *testing.T) {
108108
expected: nil,
109109
isValid: false,
110110
},
111-
{
112-
description: "empty_instance",
113-
input: &git.Instance{},
114-
expected: nil,
115-
isValid: false,
116-
},
117-
{
118-
description: "missing_id",
119-
input: &git.Instance{
120-
Name: utils.Ptr("git-missing-id"),
121-
},
122-
expected: nil,
123-
isValid: false,
124-
},
125111
}
126112

127113
for _, tt := range tests {
@@ -162,7 +148,7 @@ func TestToCreatePayload(t *testing.T) {
162148
ACL: types.ListNull(types.StringType),
163149
},
164150
expected: git.CreateInstancePayload{
165-
Name: utils.Ptr("example-instance"),
151+
Name: "example-instance",
166152
},
167153
expectError: false,
168154
},
@@ -177,9 +163,9 @@ func TestToCreatePayload(t *testing.T) {
177163
}),
178164
},
179165
expected: git.CreateInstancePayload{
180-
Name: utils.Ptr("my-instance"),
181-
Flavor: git.INSTANCEFLAVOR__100.Ptr(),
182-
Acl: &[]string{"10.0.0.1", "10.0.0.2"},
166+
Name: "my-instance",
167+
Flavor: utils.Ptr("git-100"),
168+
Acl: []string{"10.0.0.1", "10.0.0.2"},
183169
},
184170
expectError: false,
185171
},
@@ -191,9 +177,9 @@ func TestToCreatePayload(t *testing.T) {
191177
ACL: types.ListValueMust(types.StringType, []attr.Value{}),
192178
},
193179
expected: git.CreateInstancePayload{
194-
Name: utils.Ptr("my-instance"),
195-
Flavor: git.INSTANCEFLAVOR__100.Ptr(),
196-
Acl: &[]string{},
180+
Name: "my-instance",
181+
Flavor: utils.Ptr("git-100"),
182+
Acl: []string{},
197183
},
198184
expectError: false,
199185
},

stackit/internal/services/git/utils/util.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66

77
"github.com/hashicorp/terraform-plugin-framework/diag"
88
"github.com/stackitcloud/stackit-sdk-go/core/config"
9-
"github.com/stackitcloud/stackit-sdk-go/services/git"
9+
git "github.com/stackitcloud/stackit-sdk-go/services/git/v1betaapi"
1010
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
1111
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils"
1212
)

stackit/internal/services/git/utils/util_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"github.com/hashicorp/terraform-plugin-framework/diag"
1010
sdkClients "github.com/stackitcloud/stackit-sdk-go/core/clients"
1111
"github.com/stackitcloud/stackit-sdk-go/core/config"
12-
"github.com/stackitcloud/stackit-sdk-go/services/git"
12+
git "github.com/stackitcloud/stackit-sdk-go/services/git/v1betaapi"
1313
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
1414
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils"
1515
)

0 commit comments

Comments
 (0)