Skip to content

Commit 3d78709

Browse files
authored
merge dev -> main
maj main review already done on develop MR
2 parents 8e52a9e + 9dfc8ec commit 3d78709

File tree

16 files changed

+1283
-705
lines changed

16 files changed

+1283
-705
lines changed

README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,23 @@ Le projet est structuré en trois composants principaux :
4343
- **ContextualCompressorProvider** (Contetual Compressor)
4444
- BloomZ = "BloomzRerank"
4545

46+
## Secret Keys
47+
48+
Types disponibles :
49+
- **RawSecretKey** : stocke directement la valeur du secret.
50+
- Champ principal : `secret`
51+
- Alias rétro-compatible : `value` (encore utilisable pour compatibilité, mais à éviter dans les nouvelles configurations).
52+
- **AwsSecretKey** : référence un secret dans **AWS Secrets Manager**.
53+
- **KubernetesSecretKey** : référence un secret dans **Kubernetes Secrets**.
54+
- **GcpSecretKey** : référence un secret dans **GCP Secret Manager**.
55+
56+
### GCP Secret Manager
57+
58+
Pour utiliser `GcpSecretKey`, un `project_id` GCP doit être disponible.
59+
Il est résolu automatiquement de la façon suivante :
60+
61+
1. Si la variable d’environnement `GCP_PROJECT_ID` est définie -> elle est utilisée directement.
62+
2. Sinon, le `project_id` est automatiquement détecté à partir des credentials Google (`GOOGLE_APPLICATION_CREDENTIALS`).
4663

4764
## Settings
4865

poetry.lock

Lines changed: 1047 additions & 689 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "tock-genai-core"
3-
version = "1.3.1"
3+
version = "1.4.0"
44
description = ""
55
authors = ["Baptiste Le Goff <[email protected]>"]
66
readme = "README.md"
@@ -20,6 +20,9 @@ pydantic-settings = "^2.7.1"
2020
text-generation = "^0.7.0"
2121
tiktoken = "^0.8.0"
2222
uvicorn = "^0.34.0"
23+
boto3 = "^1.35.96"
24+
google-cloud-secret-manager = "^2.22.0"
25+
google-api-core = "^2.25.1"
2326

2427
[tool.poetry.group.dev.dependencies]
2528
pylint = "^3.3.6"

src/tock_genai_core/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# -*- coding: utf-8 -*-
22

3-
__version__ = "1.3.1"
3+
__version__ = "1.4.0"

src/tock_genai_core/models/security/aws_secret_key/aws_secret_key.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,8 @@
55
A class for AWS Secret Key.
66
Used to store the secret name managed in AWS Secrets Manager.
77
8-
Authors:
9-
* Baptiste Le Goff: [email protected]
10-
* Killian Mahé: [email protected]
11-
* Luigi Bokalli: [email protected]
12-
* Noé Chabanon: [email protected]
8+
Author:
9+
* Louis-Marie Toudoire [email protected]
1310
"""
1411
from typing import Literal
1512

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# -*- coding: utf-8 -*-
2+
from .gcp_secret_key import GcpSecretKey
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
GcpSecretKey
4+
5+
A class for GCP Secret Key.
6+
Used to store the secret name managed in GCP Secrets Manager.
7+
8+
Author:
9+
* Louis-Marie Toudoire [email protected]
10+
"""
11+
from typing import Literal
12+
13+
from pydantic import Field
14+
15+
from tock_genai_core.models.security.secret_key import BaseSecretKey
16+
from tock_genai_core.models.security.secret_key_type import SecretKeyType
17+
18+
19+
class GcpSecretKey(BaseSecretKey):
20+
"""
21+
A class for GCP Secret Key.
22+
Used to store the secret name managed in GCP Secret Manager.
23+
24+
Attributes
25+
----------
26+
type: Literal[SecretKeyType.GCP_SECRETS_MANAGER]
27+
The Secret Key type (default: SecretKeyType.GCP_SECRETS_MANAGER )
28+
secret_name: str
29+
The secret name managed in GCP Secret Manager
30+
"""
31+
32+
type: Literal[SecretKeyType.GCP_SECRETS_MANAGER] = Field(
33+
description="The Secret Key type.",
34+
examples=[SecretKeyType.GCP_SECRETS_MANAGER],
35+
default=SecretKeyType.GCP_SECRETS_MANAGER,
36+
)
37+
secret_name: str = Field(
38+
description="The secret name managed in GCP Secret Manager.",
39+
examples=["PROD/App/openaiapi_key"],
40+
min_length=1,
41+
)

src/tock_genai_core/models/security/raw_secret_key/raw_secret_key.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,4 @@ class RawSecretKey(BaseSecretKey):
3838
examples=[SecretKeyType.RAW],
3939
default=SecretKeyType.RAW,
4040
)
41-
value: str = Field(description="The secret value.", examples=["145d-ff455g-e4r5gf"], min_length=1)
41+
secret: str = Field(description="The secret value.", examples=["145d-ff455g-e4r5gf"], min_length=1, alias="value")

src/tock_genai_core/models/security/secret_key_type.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ class SecretKeyType(str, Enum):
2020
RAW = "Raw"
2121
AWS_SECRETS_MANAGER = "AwsSecretsManager"
2222
KUBERNETES_SECRET = "KubeSecret"
23+
GCP_SECRETS_MANAGER = "GcpSecretManager"

src/tock_genai_core/models/security/security_type.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
from pydantic import Field
44

55
from tock_genai_core.models.security.aws_secret_key import AwsSecretKey
6+
from tock_genai_core.models.security.gcp_secret_key import GcpSecretKey
67
from tock_genai_core.models.security.raw_secret_key import RawSecretKey
78
from tock_genai_core.models.security.kube_secret_key import KubernetesSecretKey
89

910
SecretKey = Annotated[
10-
Union[RawSecretKey, AwsSecretKey, KubernetesSecretKey],
11+
Union[RawSecretKey, AwsSecretKey, KubernetesSecretKey, GcpSecretKey],
1112
Field(discriminator="type"),
1213
]

0 commit comments

Comments
 (0)