|
12 | 12 | # See the License for the specific language governing permissions and
|
13 | 13 | # limitations under the License.
|
14 | 14 | from __future__ import annotations
|
| 15 | +from io import BytesIO |
15 | 16 |
|
16 | 17 | import json
|
17 | 18 | from typing import Any, List, Mapping, Optional, Type
|
@@ -72,8 +73,10 @@ def store_document(self, id: str, document: Mapping[str, Any],
|
72 | 73 | document (Dict[str, Any]): The document to store.
|
73 | 74 | type (Optional[Type]): Unused.
|
74 | 75 | """
|
| 76 | + b_document = BytesIO() |
| 77 | + b_document.write(json.dumps(document).encode()) |
75 | 78 | payload = secretmanager_v1.SecretPayload(
|
76 |
| - data=json.dumps(document).encode('utf-8')) |
| 79 | + data=b_document.getvalue()) |
77 | 80 | request = secretmanager_v1.AddSecretVersionRequest(
|
78 | 81 | parent=self.client.secret_path(self._project, id),
|
79 | 82 | payload=payload)
|
@@ -101,14 +104,13 @@ def update_document(self, id: str, new_data: Mapping[str, Any],
|
101 | 104 | # Destroy other versions
|
102 | 105 | request = secretmanager_v1.ListSecretVersionsRequest(
|
103 | 106 | parent=self.client.secret_path(project=self._project, secret=id),
|
104 |
| - filter=f'state:enabled AND name!="{latest.name}"' |
| 107 | + filter=f'state:enabled' # AND name!="{latest.name}"' |
105 | 108 | )
|
106 | 109 | version_list = self.client.list_secret_versions(request=request)
|
107 | 110 | for page in version_list.pages:
|
108 | 111 | for version in page.versions:
|
109 |
| - if version == new_version: |
110 |
| - continue |
111 |
| - else: |
| 112 | + # Only delete older versions |
| 113 | + if version.create_time < new_version.create_time: |
112 | 114 | self.client.destroy_secret_version(
|
113 | 115 | secretmanager_v1.DestroySecretVersionRequest(
|
114 | 116 | name=version.name
|
@@ -153,7 +155,7 @@ def get_document(self, id: str, type: Optional[Type] = None,
|
153 | 155 | try:
|
154 | 156 | request = secretmanager_v1.AccessSecretVersionRequest(name=secret)
|
155 | 157 | response = self.client.access_secret_version(request=request)
|
156 |
| - return json.loads(response.payload.data) |
| 158 | + return json.loads(response.payload.data.decode('utf-8')) |
157 | 159 | except Exception as e:
|
158 | 160 | print(e)
|
159 | 161 | return None
|
|
0 commit comments