Skip to content

Commit dc4f803

Browse files
authored
feat(secret): add support for IsManaged (#1640)
1 parent a9aa0fb commit dc4f803

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

api/secret/v1alpha1/secret_sdk.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,8 @@ type Secret struct {
217217
VersionCount uint32 `json:"version_count"`
218218
// Description: updated description of the secret.
219219
Description *string `json:"description"`
220+
// IsManaged: true for secrets that are managed by another product.
221+
IsManaged bool `json:"is_managed"`
220222
}
221223

222224
// SecretVersion: secret version.
@@ -432,6 +434,50 @@ func (s *API) UpdateSecret(req *UpdateSecretRequest, opts ...scw.RequestOption)
432434
return &resp, nil
433435
}
434436

437+
type AddSecretOwnerRequest struct {
438+
// Region: region to target. If none is passed will use default region from the config.
439+
Region scw.Region `json:"-"`
440+
// SecretID: ID of the secret.
441+
SecretID string `json:"-"`
442+
// ProductName: name of the product to add.
443+
ProductName string `json:"product_name"`
444+
}
445+
446+
// AddSecretOwner: allow another product to use the secret.
447+
func (s *API) AddSecretOwner(req *AddSecretOwnerRequest, opts ...scw.RequestOption) error {
448+
var err error
449+
450+
if req.Region == "" {
451+
defaultRegion, _ := s.client.GetDefaultRegion()
452+
req.Region = defaultRegion
453+
}
454+
455+
if fmt.Sprint(req.Region) == "" {
456+
return errors.New("field Region cannot be empty in request")
457+
}
458+
459+
if fmt.Sprint(req.SecretID) == "" {
460+
return errors.New("field SecretID cannot be empty in request")
461+
}
462+
463+
scwReq := &scw.ScalewayRequest{
464+
Method: "POST",
465+
Path: "/secret-manager/v1alpha1/regions/" + fmt.Sprint(req.Region) + "/secrets/" + fmt.Sprint(req.SecretID) + "/add-owner",
466+
Headers: http.Header{},
467+
}
468+
469+
err = scwReq.SetBody(req)
470+
if err != nil {
471+
return err
472+
}
473+
474+
err = s.client.Do(scwReq, nil, opts...)
475+
if err != nil {
476+
return err
477+
}
478+
return nil
479+
}
480+
435481
type ListSecretsRequest struct {
436482
// Region: region to target. If none is passed will use default region from the config.
437483
Region scw.Region `json:"-"`
@@ -443,6 +489,8 @@ type ListSecretsRequest struct {
443489
Name *string `json:"-"`
444490
// Tags: list of tags to filter on (optional).
445491
Tags []string `json:"-"`
492+
// IsManaged: filter by managed / not managed (optional).
493+
IsManaged *bool `json:"-"`
446494
// OrderBy: default value: name_asc
447495
OrderBy ListSecretsRequestOrderBy `json:"-"`
448496

@@ -471,6 +519,7 @@ func (s *API) ListSecrets(req *ListSecretsRequest, opts ...scw.RequestOption) (*
471519
parameter.AddToQuery(query, "project_id", req.ProjectID)
472520
parameter.AddToQuery(query, "name", req.Name)
473521
parameter.AddToQuery(query, "tags", req.Tags)
522+
parameter.AddToQuery(query, "is_managed", req.IsManaged)
474523
parameter.AddToQuery(query, "order_by", req.OrderBy)
475524
parameter.AddToQuery(query, "page", req.Page)
476525
parameter.AddToQuery(query, "page_size", req.PageSize)

0 commit comments

Comments
 (0)