Skip to content

Commit e306b19

Browse files
committed
Add support for s3 tls-ca-chain
Fixes #395 Signed-off-by: Peter Sabaini <peter.sabaini@canonical.com>
1 parent 18da4a3 commit e306b19

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

lib/charms/mysql/v0/s3_helpers.py

+15-3
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
# limitations under the License.
1414

1515
"""S3 helper functions for the MySQL charms."""
16-
16+
import base64
1717
import logging
1818
import tempfile
1919
import time
@@ -57,8 +57,20 @@ def upload_content_to_s3(content: str, content_path: str, s3_parameters: Dict) -
5757
aws_secret_access_key=s3_parameters["secret-key"],
5858
region_name=s3_parameters["region"] or None,
5959
)
60-
61-
s3 = session.resource("s3", endpoint_url=s3_parameters["endpoint"])
60+
verif = True
61+
ca_chain = s3_parameters["tls-ca-chain"]
62+
if ca_chain:
63+
ca = "\n".join([base64.b64decode(s).decode() for s in ca_chain])
64+
ca_file = tempfile.NamedTemporaryFile()
65+
ca_file.write(ca.encode())
66+
ca_file.flush()
67+
verif = ca_file.name
68+
69+
s3 = session.resource(
70+
"s3",
71+
endpoint_url=s3_parameters["endpoint"],
72+
verify=verif,
73+
)
6274

6375
bucket = s3.Bucket(s3_parameters["bucket"])
6476

tests/unit/test_backups.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,20 @@ def test_retrieve_s3_parameters(self, _get_s3_connection_info):
5454
"bucket": "test_bucket",
5555
"access-key": "test-access-key",
5656
"secret-key": "test-secret-key",
57+
"tls-ca-chain": ["Zm9vYmFy"], # "foobar" in base64
5758
}
5859
_get_s3_connection_info.return_value = return_value
5960

6061
s3_parameters, missing_required_parameters = self.mysql_backups._retrieve_s3_parameters()
6162
self.assertEqual(
6263
s3_parameters,
63-
{"endpoint": "https://s3.amazonaws.com", "region": None, "path": "", **return_value},
64+
{
65+
"endpoint": "https://s3.amazonaws.com",
66+
"region": None,
67+
"path": "",
68+
"tls-ca-chain": "foobar",
69+
**return_value,
70+
},
6471
)
6572
self.assertEqual(missing_required_parameters, [])
6673

0 commit comments

Comments
 (0)