Skip to content

Commit 871a62d

Browse files
authored
chore(logs): switch to multi API version support SDK structure (#1272)
relates to STACKITSDK-341
1 parent d58c6f4 commit 871a62d

13 files changed

Lines changed: 143 additions & 143 deletions

File tree

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ require (
2121
github.com/stackitcloud/stackit-sdk-go/services/kms v1.3.2
2222
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.8.0
2323
github.com/stackitcloud/stackit-sdk-go/services/logme v0.25.6
24-
github.com/stackitcloud/stackit-sdk-go/services/logs v0.5.2
24+
github.com/stackitcloud/stackit-sdk-go/services/logs v0.6.0
2525
github.com/stackitcloud/stackit-sdk-go/services/mariadb v0.25.6
2626
github.com/stackitcloud/stackit-sdk-go/services/modelserving v0.6.5
2727
github.com/stackitcloud/stackit-sdk-go/services/mongodbflex v1.5.8

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,8 @@ github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.8.0 h1:DxrN85V73
173173
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.8.0/go.mod h1:ClPE4TOM1FeaJiwTXvApq4gWaSgTLq6nU3PPHAIQDN4=
174174
github.com/stackitcloud/stackit-sdk-go/services/logme v0.25.6 h1:4x30lC+YBmo7XpsAzTn0W+C/oP5flnLVgIh5u3O/P0o=
175175
github.com/stackitcloud/stackit-sdk-go/services/logme v0.25.6/go.mod h1:ewaYUiZcBTSS6urE5zEJBPCqxu70w2IjnBHCvnKdFKE=
176-
github.com/stackitcloud/stackit-sdk-go/services/logs v0.5.2 h1:vr4atxFRT+EL+DqONMT5R44f7AzEMbePa9U7PEE0THU=
177-
github.com/stackitcloud/stackit-sdk-go/services/logs v0.5.2/go.mod h1:CAPsiTX7osAImfrG5RnIjaJ/Iz3QpoBKuH2fS346wuQ=
176+
github.com/stackitcloud/stackit-sdk-go/services/logs v0.6.0 h1:+DD31EGej4/dOKHVNwvPJN4Fc6FaDJ9b3zCkI6T0Dxs=
177+
github.com/stackitcloud/stackit-sdk-go/services/logs v0.6.0/go.mod h1:R+ct2jIl0VSwZJ5NF4wbh3IFr5AvdcHmQaytksDHu2I=
178178
github.com/stackitcloud/stackit-sdk-go/services/mariadb v0.25.6 h1:Y/byRjX2u/OZl0gKS/Rau6ob2bDyv26xnw6A6JNkKJk=
179179
github.com/stackitcloud/stackit-sdk-go/services/mariadb v0.25.6/go.mod h1:sY66ZgCgBc1mScPV95ek5WtUEGYizdP1RMsGaqbdbhw=
180180
github.com/stackitcloud/stackit-sdk-go/services/modelserving v0.6.5 h1:nT/H4WvYaMKWtoE1QtXGuKjlmh7FW+efG3xElRsJhsI=

stackit/internal/conversion/conversion.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,16 @@ func StringValueToPointer(s basetypes.StringValue) *string {
8888
return &value
8989
}
9090

91+
// Int32ValueToPointer converts basetypes.Int32Value to a pointer to int32.
92+
// It returns nil if the value is null or unknown.
93+
func Int32ValueToPointer(s basetypes.Int32Value) *int32 {
94+
if s.IsNull() || s.IsUnknown() {
95+
return nil
96+
}
97+
value := s.ValueInt32()
98+
return &value
99+
}
100+
91101
// Int64ValueToPointer converts basetypes.Int64Value to a pointer to int64.
92102
// It returns nil if the value is null or unknown.
93103
func Int64ValueToPointer(s basetypes.Int64Value) *int64 {

stackit/internal/services/logs/accesstoken/datasource.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
1414
"github.com/hashicorp/terraform-plugin-framework/types"
1515
"github.com/hashicorp/terraform-plugin-log/tflog"
16-
"github.com/stackitcloud/stackit-sdk-go/services/logs"
16+
logs "github.com/stackitcloud/stackit-sdk-go/services/logs/v1api"
1717
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
1818
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
1919
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/logs/utils"
@@ -160,7 +160,7 @@ func (d *logsAccessTokenDataSource) Read(ctx context.Context, req datasource.Rea
160160
ctx = tflog.SetField(ctx, "instance_id", instanceID)
161161
ctx = tflog.SetField(ctx, "access_token_id", accessTokenID)
162162

163-
accessTokenResponse, err := d.client.GetAccessToken(ctx, projectID, region, instanceID, accessTokenID).Execute()
163+
accessTokenResponse, err := d.client.DefaultAPI.GetAccessToken(ctx, projectID, region, instanceID, accessTokenID).Execute()
164164
if err != nil {
165165
tfutils.LogError(
166166
ctx,
@@ -203,20 +203,20 @@ func mapDataSourceFields(ctx context.Context, accessToken *logs.AccessToken, mod
203203
var accessTokenID string
204204
if model.AccessTokenID.ValueString() != "" {
205205
accessTokenID = model.AccessTokenID.ValueString()
206-
} else if accessToken.Id != nil {
207-
accessTokenID = *accessToken.Id
206+
} else if accessToken.Id != "" {
207+
accessTokenID = accessToken.Id
208208
} else {
209209
return fmt.Errorf("access token id not present")
210210
}
211211

212212
model.ID = tfutils.BuildInternalTerraformId(model.ProjectID.ValueString(), model.Region.ValueString(), model.InstanceID.ValueString(), accessTokenID)
213213
model.AccessTokenID = types.StringValue(accessTokenID)
214214
model.Region = types.StringValue(model.Region.ValueString())
215-
model.Creator = types.StringPointerValue(accessToken.Creator)
215+
model.Creator = types.StringValue(accessToken.Creator)
216216
model.Description = types.StringPointerValue(accessToken.Description)
217-
model.DisplayName = types.StringPointerValue(accessToken.DisplayName)
218-
model.Expires = types.BoolPointerValue(accessToken.Expires)
219-
model.Status = types.StringValue(string(*accessToken.Status))
217+
model.DisplayName = types.StringValue(accessToken.DisplayName)
218+
model.Expires = types.BoolValue(accessToken.Expires)
219+
model.Status = types.StringValue(accessToken.Status)
220220

221221
model.ValidUntil = types.StringNull()
222222
if accessToken.ValidUntil != nil {
@@ -225,7 +225,7 @@ func mapDataSourceFields(ctx context.Context, accessToken *logs.AccessToken, mod
225225

226226
permissionList := types.ListNull(types.StringType)
227227
var diags diag.Diagnostics
228-
if accessToken.Permissions != nil && len(*accessToken.Permissions) > 0 {
228+
if len(accessToken.Permissions) > 0 {
229229
permissionList, diags = types.ListValueFrom(ctx, types.StringType, accessToken.Permissions)
230230
if diags.HasError() {
231231
return fmt.Errorf("mapping permissions: %w", core.DiagsToError(diags))

stackit/internal/services/logs/accesstoken/datasource_test.go

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"github.com/hashicorp/terraform-plugin-framework/attr"
1010
"github.com/hashicorp/terraform-plugin-framework/types"
1111
"github.com/stackitcloud/stackit-sdk-go/core/utils"
12-
"github.com/stackitcloud/stackit-sdk-go/services/logs"
12+
logs "github.com/stackitcloud/stackit-sdk-go/services/logs/v1api"
1313
)
1414

1515
func fixtureDataSourceModel(mods ...func(model *DataSourceModel)) *DataSourceModel {
@@ -25,7 +25,7 @@ func fixtureDataSourceModel(mods ...func(model *DataSourceModel)) *DataSourceMod
2525
Expires: types.Bool{},
2626
ValidUntil: types.String{},
2727
Permissions: types.ListNull(types.StringType),
28-
Status: types.StringValue(string(logs.ACCESSTOKENSTATUS_ACTIVE)),
28+
Status: types.StringValue("active"),
2929
}
3030
for _, mod := range mods {
3131
mod(model)
@@ -42,18 +42,24 @@ func TestMapDataSourceFields(t *testing.T) {
4242
}{
4343
{
4444
description: "min values",
45-
input: fixtureAccessToken(),
46-
expected: fixtureDataSourceModel(),
45+
input: fixtureAccessToken(func(accessToken *logs.AccessToken) {
46+
accessToken.DisplayName = "display-name"
47+
}),
48+
expected: fixtureDataSourceModel(func(model *DataSourceModel) {
49+
model.Creator = types.StringValue("")
50+
model.DisplayName = types.StringValue("display-name")
51+
model.Expires = types.BoolValue(false)
52+
}),
4753
},
4854
{
4955
description: "max values",
5056
input: fixtureAccessToken(func(accessToken *logs.AccessToken) {
51-
accessToken.Permissions = &[]string{"write"}
57+
accessToken.Permissions = []string{"write"}
5258
accessToken.AccessToken = utils.Ptr("")
5359
accessToken.Description = utils.Ptr("description")
54-
accessToken.DisplayName = utils.Ptr("display-name")
55-
accessToken.Creator = utils.Ptr("testUser")
56-
accessToken.Expires = utils.Ptr(false)
60+
accessToken.DisplayName = "display-name"
61+
accessToken.Creator = "testUser"
62+
accessToken.Expires = false
5763
accessToken.ValidUntil = utils.Ptr(testTime)
5864
}),
5965
expected: fixtureDataSourceModel(func(model *DataSourceModel) {
@@ -94,7 +100,7 @@ func TestMapDataSourceFields(t *testing.T) {
94100
t.Fatalf("Should not have failed: %v", err)
95101
}
96102
if !tt.wantErr {
97-
diff := cmp.Diff(state, tt.expected)
103+
diff := cmp.Diff(tt.expected, state)
98104
if diff != "" {
99105
t.Fatalf("Data does not match: %s", diff)
100106
}

stackit/internal/services/logs/accesstoken/resource.go

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,15 @@ import (
1313
"github.com/hashicorp/terraform-plugin-framework/path"
1414
"github.com/hashicorp/terraform-plugin-framework/resource"
1515
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
16-
"github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier"
16+
"github.com/hashicorp/terraform-plugin-framework/resource/schema/int32planmodifier"
1717
"github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier"
1818
"github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
1919
"github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier"
2020
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
2121
"github.com/hashicorp/terraform-plugin-framework/types"
2222
"github.com/hashicorp/terraform-plugin-log/tflog"
2323
"github.com/stackitcloud/stackit-sdk-go/core/oapierror"
24-
sdkUtils "github.com/stackitcloud/stackit-sdk-go/core/utils"
25-
"github.com/stackitcloud/stackit-sdk-go/services/logs"
24+
logs "github.com/stackitcloud/stackit-sdk-go/services/logs/v1api"
2625
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
2726
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
2827
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/logs/utils"
@@ -53,7 +52,7 @@ var schemaDescriptions = map[string]string{
5352
"permissions": "The access permissions granted to the access token. Possible values: `read`, `write`.",
5453
"status": fmt.Sprintf(
5554
"The status of the access token. %s",
56-
tfutils.FormatPossibleValues(sdkUtils.EnumSliceToStringSlice(logs.AllowedAccessTokenStatusEnumValues)...),
55+
tfutils.FormatPossibleValues("active", "expired"),
5756
),
5857
}
5958

@@ -69,7 +68,7 @@ type Model struct {
6968
AccessToken types.String `tfsdk:"access_token"`
7069
Expires types.Bool `tfsdk:"expires"`
7170
ValidUntil types.String `tfsdk:"valid_until"`
72-
Lifetime types.Int64 `tfsdk:"lifetime"`
71+
Lifetime types.Int32 `tfsdk:"lifetime"`
7372
Permissions types.List `tfsdk:"permissions"`
7473
Status types.String `tfsdk:"status"`
7574
}
@@ -211,11 +210,11 @@ func (r *logsAccessTokenResource) Schema(_ context.Context, _ resource.SchemaReq
211210
Description: schemaDescriptions["valid_until"],
212211
Computed: true,
213212
},
214-
"lifetime": schema.Int64Attribute{
213+
"lifetime": schema.Int32Attribute{
215214
Description: schemaDescriptions["lifetime"],
216215
Optional: true,
217-
PlanModifiers: []planmodifier.Int64{
218-
int64planmodifier.RequiresReplace(),
216+
PlanModifiers: []planmodifier.Int32{
217+
int32planmodifier.RequiresReplace(),
219218
},
220219
},
221220
"permissions": schema.ListAttribute{
@@ -260,20 +259,15 @@ func (r *logsAccessTokenResource) Create(ctx context.Context, req resource.Creat
260259
return
261260
}
262261

263-
createResp, err := r.client.CreateAccessToken(ctx, projectId, region, instanceId).CreateAccessTokenPayload(*payload).Execute()
262+
createResp, err := r.client.DefaultAPI.CreateAccessToken(ctx, projectId, region, instanceId).CreateAccessTokenPayload(*payload).Execute()
264263
if err != nil {
265264
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating Logs access token", fmt.Sprintf("Calling API: %v", err))
266265
return
267266
}
268267

269268
ctx = core.LogResponse(ctx)
270269

271-
if createResp.Id == nil {
272-
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating Logs access token", "Got empty credential id")
273-
return
274-
}
275-
accessTokenId := *createResp.Id
276-
ctx = tflog.SetField(ctx, "access_token_id", accessTokenId)
270+
ctx = tflog.SetField(ctx, "access_token_id", createResp.Id)
277271

278272
err = mapFields(ctx, createResp, &model)
279273
if err != nil {
@@ -308,7 +302,7 @@ func (r *logsAccessTokenResource) Read(ctx context.Context, req resource.ReadReq
308302
ctx = tflog.SetField(ctx, "instance_id", instanceID)
309303
ctx = tflog.SetField(ctx, "access_token_id", accessTokenID)
310304

311-
accessTokenResponse, err := r.client.GetAccessToken(ctx, projectID, region, instanceID, accessTokenID).Execute()
305+
accessTokenResponse, err := r.client.DefaultAPI.GetAccessToken(ctx, projectID, region, instanceID, accessTokenID).Execute()
312306
if err != nil {
313307
var oapiErr *oapierror.GenericOpenAPIError
314308
ok := errors.As(err, &oapiErr)
@@ -362,15 +356,15 @@ func (r *logsAccessTokenResource) Update(ctx context.Context, req resource.Updat
362356
return
363357
}
364358

365-
err = r.client.UpdateAccessToken(ctx, projectID, region, instanceID, accessTokenID).UpdateAccessTokenPayload(*payload).Execute()
359+
err = r.client.DefaultAPI.UpdateAccessToken(ctx, projectID, region, instanceID, accessTokenID).UpdateAccessTokenPayload(*payload).Execute()
366360
if err != nil {
367361
core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating Logs access token", fmt.Sprintf("Calling API: %v", err))
368362
return
369363
}
370364

371365
ctx = core.LogResponse(ctx)
372366

373-
accessTokenResponse, err := r.client.GetAccessToken(ctx, projectID, region, instanceID, accessTokenID).Execute()
367+
accessTokenResponse, err := r.client.DefaultAPI.GetAccessToken(ctx, projectID, region, instanceID, accessTokenID).Execute()
374368
if err != nil {
375369
core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating Logs access token", fmt.Sprintf("Calling API: %v", err))
376370
return
@@ -412,7 +406,7 @@ func (r *logsAccessTokenResource) Delete(ctx context.Context, req resource.Delet
412406
ctx = tflog.SetField(ctx, "instance_id", instanceID)
413407
ctx = tflog.SetField(ctx, "access_token_id", accessTokenID)
414408

415-
err := r.client.DeleteAccessToken(ctx, projectID, region, instanceID, accessTokenID).Execute()
409+
err := r.client.DefaultAPI.DeleteAccessToken(ctx, projectID, region, instanceID, accessTokenID).Execute()
416410
if err != nil {
417411
core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting Logs access token", fmt.Sprintf("Calling API: %v", err))
418412
return
@@ -449,16 +443,16 @@ func toCreatePayload(ctx context.Context, diagnostics diag.Diagnostics, model *M
449443

450444
payload := &logs.CreateAccessTokenPayload{
451445
Description: conversion.StringValueToPointer(model.Description),
452-
DisplayName: conversion.StringValueToPointer(model.DisplayName),
453-
Lifetime: conversion.Int64ValueToPointer(model.Lifetime),
446+
DisplayName: model.DisplayName.ValueString(),
447+
Lifetime: conversion.Int32ValueToPointer(model.Lifetime),
454448
}
455449

456450
if !(tfutils.IsUndefined(model.Permissions)) {
457451
var permissions []string
458452
permissionDiags := model.Permissions.ElementsAs(ctx, &permissions, false)
459453
diagnostics.Append(permissionDiags...)
460454
if !permissionDiags.HasError() {
461-
payload.Permissions = &permissions
455+
payload.Permissions = permissions
462456
}
463457
}
464458

@@ -476,20 +470,20 @@ func mapFields(ctx context.Context, accessToken *logs.AccessToken, model *Model)
476470
var accessTokenID string
477471
if model.AccessTokenID.ValueString() != "" {
478472
accessTokenID = model.AccessTokenID.ValueString()
479-
} else if accessToken.Id != nil {
480-
accessTokenID = *accessToken.Id
473+
} else if accessToken.Id != "" {
474+
accessTokenID = accessToken.Id
481475
} else {
482476
return fmt.Errorf("access token id not present")
483477
}
484478

485479
model.ID = tfutils.BuildInternalTerraformId(model.ProjectID.ValueString(), model.Region.ValueString(), model.InstanceID.ValueString(), accessTokenID)
486480
model.AccessTokenID = types.StringValue(accessTokenID)
487481
model.Region = types.StringValue(model.Region.ValueString())
488-
model.Creator = types.StringPointerValue(accessToken.Creator)
482+
model.Creator = types.StringValue(accessToken.Creator)
489483
model.Description = types.StringPointerValue(accessToken.Description)
490-
model.DisplayName = types.StringPointerValue(accessToken.DisplayName)
491-
model.Expires = types.BoolPointerValue(accessToken.Expires)
492-
model.Status = types.StringValue(string(*accessToken.Status))
484+
model.DisplayName = types.StringValue(accessToken.DisplayName)
485+
model.Expires = types.BoolValue(accessToken.Expires)
486+
model.Status = types.StringValue(accessToken.Status)
493487

494488
model.ValidUntil = types.StringNull()
495489
if accessToken.ValidUntil != nil {
@@ -502,7 +496,7 @@ func mapFields(ctx context.Context, accessToken *logs.AccessToken, model *Model)
502496

503497
permissionList := types.ListNull(types.StringType)
504498
var diags diag.Diagnostics
505-
if accessToken.Permissions != nil && len(*accessToken.Permissions) > 0 {
499+
if len(accessToken.Permissions) > 0 {
506500
permissionList, diags = types.ListValueFrom(ctx, types.StringType, accessToken.Permissions)
507501
if diags.HasError() {
508502
return fmt.Errorf("mapping permissions: %w", core.DiagsToError(diags))

stackit/internal/services/logs/accesstoken/resource_test.go

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ import (
1010
"github.com/hashicorp/terraform-plugin-framework/diag"
1111
"github.com/hashicorp/terraform-plugin-framework/types"
1212
"github.com/stackitcloud/stackit-sdk-go/core/utils"
13-
"github.com/stackitcloud/stackit-sdk-go/services/logs"
13+
logs "github.com/stackitcloud/stackit-sdk-go/services/logs/v1api"
1414
)
1515

1616
var testTime = time.Now()
1717

1818
func fixtureAccessToken(mods ...func(accessToken *logs.AccessToken)) *logs.AccessToken {
1919
accessToken := &logs.AccessToken{
20-
Id: utils.Ptr("atid"),
21-
Status: utils.Ptr(logs.ACCESSTOKENSTATUS_ACTIVE),
20+
Id: "atid",
21+
Status: "active",
2222
}
2323
for _, mod := range mods {
2424
mod(accessToken)
@@ -39,9 +39,9 @@ func fixtureModel(mods ...func(model *Model)) *Model {
3939
DisplayName: types.String{},
4040
Expires: types.Bool{},
4141
ValidUntil: types.String{},
42-
Lifetime: types.Int64{},
42+
Lifetime: types.Int32{},
4343
Permissions: types.ListNull(types.StringType),
44-
Status: types.StringValue(string(logs.ACCESSTOKENSTATUS_ACTIVE)),
44+
Status: types.StringValue("active"),
4545
}
4646
for _, mod := range mods {
4747
mod(model)
@@ -58,18 +58,24 @@ func TestMapFields(t *testing.T) {
5858
}{
5959
{
6060
description: "min values",
61-
input: fixtureAccessToken(),
62-
expected: fixtureModel(),
61+
input: fixtureAccessToken(func(accessToken *logs.AccessToken) {
62+
accessToken.DisplayName = "display-name"
63+
}),
64+
expected: fixtureModel(func(model *Model) {
65+
model.DisplayName = types.StringValue("display-name")
66+
model.Creator = types.StringValue("")
67+
model.Expires = types.BoolValue(false)
68+
}),
6369
},
6470
{
6571
description: "max values",
6672
input: fixtureAccessToken(func(accessToken *logs.AccessToken) {
67-
accessToken.Permissions = &[]string{"write"}
73+
accessToken.Permissions = []string{"write"}
6874
accessToken.AccessToken = utils.Ptr("")
6975
accessToken.Description = utils.Ptr("description")
70-
accessToken.DisplayName = utils.Ptr("display-name")
71-
accessToken.Creator = utils.Ptr("testUser")
72-
accessToken.Expires = utils.Ptr(false)
76+
accessToken.DisplayName = "display-name"
77+
accessToken.Creator = "testUser"
78+
accessToken.Expires = false
7379
accessToken.ValidUntil = utils.Ptr(testTime)
7480
}),
7581
expected: fixtureModel(func(model *Model) {
@@ -141,13 +147,13 @@ func TestToCreatePayload(t *testing.T) {
141147
})
142148
model.Description = types.StringValue("description")
143149
model.DisplayName = types.StringValue("display-name")
144-
model.Lifetime = types.Int64Value(7)
150+
model.Lifetime = types.Int32Value(7)
145151
}),
146152
expected: &logs.CreateAccessTokenPayload{
147-
Permissions: &[]string{"read", "write"},
153+
Permissions: []string{"read", "write"},
148154
Description: utils.Ptr("description"),
149-
DisplayName: utils.Ptr("display-name"),
150-
Lifetime: utils.Ptr(int64(7)),
155+
DisplayName: "display-name",
156+
Lifetime: utils.Ptr(int32(7)),
151157
},
152158
},
153159
{

0 commit comments

Comments
 (0)