From 3e145ef8df0433141a8c17bd33505991a25bf4be Mon Sep 17 00:00:00 2001 From: = Date: Fri, 24 Apr 2020 16:12:55 +0200 Subject: [PATCH] Do not remove tags after secret update, handle description --- moto/secretsmanager/models.py | 21 ++++++++++++++++----- moto/secretsmanager/responses.py | 2 ++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/moto/secretsmanager/models.py b/moto/secretsmanager/models.py index 11a024be6..3a13d1119 100644 --- a/moto/secretsmanager/models.py +++ b/moto/secretsmanager/models.py @@ -121,8 +121,12 @@ class SecretsManagerBackend(BaseBackend): "You can't perform this operation on the secret because it was marked for deletion." ) + secret = self.secrets[secret_id] + tags = secret["tags"] + description = secret["description"] + version_id = self._add_secret( - secret_id, secret_string=secret_string, secret_binary=secret_binary + secret_id, secret_string=secret_string, secret_binary=secret_binary, description=description, tags=tags ) response = json.dumps( @@ -136,7 +140,7 @@ class SecretsManagerBackend(BaseBackend): return response def create_secret( - self, name, secret_string=None, secret_binary=None, tags=[], **kwargs + self, name, secret_string=None, secret_binary=None, description=None, tags=[], **kwargs ): # error if secret exists @@ -146,7 +150,7 @@ class SecretsManagerBackend(BaseBackend): ) version_id = self._add_secret( - name, secret_string=secret_string, secret_binary=secret_binary, tags=tags + name, secret_string=secret_string, secret_binary=secret_binary, description=description, tags=tags ) response = json.dumps( @@ -164,6 +168,7 @@ class SecretsManagerBackend(BaseBackend): secret_id, secret_string=None, secret_binary=None, + description=None, tags=[], version_id=None, version_stages=None, @@ -216,13 +221,18 @@ class SecretsManagerBackend(BaseBackend): secret["rotation_lambda_arn"] = "" secret["auto_rotate_after_days"] = 0 secret["tags"] = tags + secret["description"] = description return version_id def put_secret_value(self, secret_id, secret_string, secret_binary, version_stages): + secret = self.secrets[secret_id] + tags = secret["tags"] + description = secret["description"] + version_id = self._add_secret( - secret_id, secret_string, secret_binary, version_stages=version_stages + secret_id, secret_string, secret_binary, description=description, tags=tags, version_stages=version_stages ) response = json.dumps( @@ -310,6 +320,7 @@ class SecretsManagerBackend(BaseBackend): self._add_secret( secret_id, old_secret_version["secret_string"], + secret["description"], secret["tags"], version_id=new_version_id, version_stages=["AWSCURRENT"], @@ -416,7 +427,7 @@ class SecretsManagerBackend(BaseBackend): { "ARN": secret_arn(self.region, secret["secret_id"]), "DeletedDate": secret.get("deleted_date", None), - "Description": "", + "Description": secret.get["description"], "KmsKeyId": "", "LastAccessedDate": None, "LastChangedDate": None, diff --git a/moto/secretsmanager/responses.py b/moto/secretsmanager/responses.py index 757b888a3..9a899c90d 100644 --- a/moto/secretsmanager/responses.py +++ b/moto/secretsmanager/responses.py @@ -21,11 +21,13 @@ class SecretsManagerResponse(BaseResponse): name = self._get_param("Name") secret_string = self._get_param("SecretString") secret_binary = self._get_param("SecretBinary") + description = self._get_param("Description", if_none="") tags = self._get_param("Tags", if_none=[]) return secretsmanager_backends[self.region].create_secret( name=name, secret_string=secret_string, secret_binary=secret_binary, + description=description, tags=tags, )