Skip to content

Commit c997bb4

Browse files
authored
feat(secret_manager): allow to specify an external key id when creating a secret (#958)
1 parent fd451ef commit c997bb4

File tree

6 files changed

+44
-0
lines changed

6 files changed

+44
-0
lines changed

Diff for: scaleway-async/scaleway_async/secret/v1beta1/api.py

+3
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ async def create_secret(
6767
type_: Optional[SecretType] = None,
6868
path: Optional[str] = None,
6969
ephemeral_policy: Optional[EphemeralPolicy] = None,
70+
key_id: Optional[str] = None,
7071
) -> Secret:
7172
"""
7273
Create a secret.
@@ -80,6 +81,7 @@ async def create_secret(
8081
:param type_: (Optional.) See the `Secret.Type` enum for a description of values. If not specified, the type is `Opaque`.
8182
:param path: (Optional.) Location of the secret in the directory structure. If not specified, the path is `/`.
8283
:param ephemeral_policy: (Optional.) Policy that defines whether/when a secret's versions expire. By default, the policy is applied to all the secret's versions.
84+
:param key_id: (Optional.) The Scaleway's Key Manager key ID will be used to encrypt and decrypt secret versions. If not specified, the Secret Manager will use an internal key.
8385
:return: :class:`Secret <Secret>`
8486
8587
Usage:
@@ -109,6 +111,7 @@ async def create_secret(
109111
type_=type_,
110112
path=path,
111113
ephemeral_policy=ephemeral_policy,
114+
key_id=key_id,
112115
),
113116
self.client,
114117
),

Diff for: scaleway-async/scaleway_async/secret/v1beta1/marshalling.py

+9
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,12 @@ def unmarshal_Secret(data: Any) -> Secret:
236236
else:
237237
args["deletion_requested_at"] = None
238238

239+
field = data.get("key_id", None)
240+
if field is not None:
241+
args["key_id"] = field
242+
else:
243+
args["key_id"] = None
244+
239245
return Secret(**args)
240246

241247

@@ -532,6 +538,9 @@ def marshal_CreateSecretRequest(
532538
request.ephemeral_policy, defaults
533539
)
534540

541+
if request.key_id is not None:
542+
output["key_id"] = request.key_id
543+
535544
return output
536545

537546

Diff for: scaleway-async/scaleway_async/secret/v1beta1/types.py

+10
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,11 @@ class Secret:
303303
Returns the time at which deletion was requested.
304304
"""
305305

306+
key_id: Optional[str]
307+
"""
308+
(Optional.) The Scaleway's Key Manager key ID used to encrypt and decrypt secret versions.
309+
"""
310+
306311

307312
@dataclass
308313
class AccessSecretVersionByPathRequest:
@@ -514,6 +519,11 @@ class CreateSecretRequest:
514519
(Optional.) Policy that defines whether/when a secret's versions expire. By default, the policy is applied to all the secret's versions.
515520
"""
516521

522+
key_id: Optional[str]
523+
"""
524+
(Optional.) The Scaleway's Key Manager key ID will be used to encrypt and decrypt secret versions. If not specified, the Secret Manager will use an internal key.
525+
"""
526+
517527

518528
@dataclass
519529
class CreateSecretVersionRequest:

Diff for: scaleway/scaleway/secret/v1beta1/api.py

+3
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ def create_secret(
6767
type_: Optional[SecretType] = None,
6868
path: Optional[str] = None,
6969
ephemeral_policy: Optional[EphemeralPolicy] = None,
70+
key_id: Optional[str] = None,
7071
) -> Secret:
7172
"""
7273
Create a secret.
@@ -80,6 +81,7 @@ def create_secret(
8081
:param type_: (Optional.) See the `Secret.Type` enum for a description of values. If not specified, the type is `Opaque`.
8182
:param path: (Optional.) Location of the secret in the directory structure. If not specified, the path is `/`.
8283
:param ephemeral_policy: (Optional.) Policy that defines whether/when a secret's versions expire. By default, the policy is applied to all the secret's versions.
84+
:param key_id: (Optional.) The Scaleway's Key Manager key ID will be used to encrypt and decrypt secret versions. If not specified, the Secret Manager will use an internal key.
8385
:return: :class:`Secret <Secret>`
8486
8587
Usage:
@@ -109,6 +111,7 @@ def create_secret(
109111
type_=type_,
110112
path=path,
111113
ephemeral_policy=ephemeral_policy,
114+
key_id=key_id,
112115
),
113116
self.client,
114117
),

Diff for: scaleway/scaleway/secret/v1beta1/marshalling.py

+9
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,12 @@ def unmarshal_Secret(data: Any) -> Secret:
236236
else:
237237
args["deletion_requested_at"] = None
238238

239+
field = data.get("key_id", None)
240+
if field is not None:
241+
args["key_id"] = field
242+
else:
243+
args["key_id"] = None
244+
239245
return Secret(**args)
240246

241247

@@ -532,6 +538,9 @@ def marshal_CreateSecretRequest(
532538
request.ephemeral_policy, defaults
533539
)
534540

541+
if request.key_id is not None:
542+
output["key_id"] = request.key_id
543+
535544
return output
536545

537546

Diff for: scaleway/scaleway/secret/v1beta1/types.py

+10
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,11 @@ class Secret:
303303
Returns the time at which deletion was requested.
304304
"""
305305

306+
key_id: Optional[str]
307+
"""
308+
(Optional.) The Scaleway's Key Manager key ID used to encrypt and decrypt secret versions.
309+
"""
310+
306311

307312
@dataclass
308313
class AccessSecretVersionByPathRequest:
@@ -514,6 +519,11 @@ class CreateSecretRequest:
514519
(Optional.) Policy that defines whether/when a secret's versions expire. By default, the policy is applied to all the secret's versions.
515520
"""
516521

522+
key_id: Optional[str]
523+
"""
524+
(Optional.) The Scaleway's Key Manager key ID will be used to encrypt and decrypt secret versions. If not specified, the Secret Manager will use an internal key.
525+
"""
526+
517527

518528
@dataclass
519529
class CreateSecretVersionRequest:

0 commit comments

Comments
 (0)