feature: helm charts repos with certs 66/13666/5
authorLuis Vega <lvega@whitestack.com>
Tue, 11 Jul 2023 18:54:09 +0000 (18:54 +0000)
committergarciadeblas <gerardo.garciadeblas@telefonica.com>
Thu, 30 May 2024 14:53:57 +0000 (16:53 +0200)
Change-Id: Ic212c265dd6ad40bb6032f3e1155501e51fea78a
Signed-off-by: Luis Vega <lvega@whitestack.com>
osmclient/cli_commands/repo.py

index 495bd7f..b2ecd9a 100755 (executable)
@@ -14,7 +14,7 @@
 #    under the License.
 
 import click
-from osmclient.common.exceptions import NotFound
+from osmclient.common.exceptions import NotFound, ClientException
 from osmclient.cli_commands import utils
 from prettytable import PrettyTable
 import yaml
@@ -47,6 +47,11 @@ logger = logging.getLogger("osmclient")
     is_flag=True,
     help="enable OCI (only for helm-chart repos, default: false, automatically set to true for oci:// URI)",
 )
+@click.option(
+    "--ca-file",
+    default=None,
+    help="cert to use when adding a repository (only for helm)",
+)
 @click.pass_context
 def repo_add(ctx, **kwargs):
     """adds a repo to OSM
@@ -59,6 +64,19 @@ def repo_add(ctx, **kwargs):
     repo["url"] = repo.pop("uri")
     if repo["url"].startswith("oci://"):
         repo["oci"] = True
+    if "ca_file" in kwargs:
+        try:
+            with open(kwargs["ca_file"], "r") as ca_cert:
+                repo["cacert"] = ca_cert.read()
+            repo.pop("ca_file")
+        except FileNotFoundError:
+            raise ClientException("CA file not found !")
+        except EOFError:
+            raise ClientException("Empty CA file !")
+        except PermissionError:
+            raise ClientException("Can not read CA file ! Insufficient permissions")
+        except Exception as e:
+            raise ClientException(f"Can not read the cert file ! Error: {e}")
     if repo["type"] in ["helm-chart", "juju-bundle"]:
         ctx.obj.repo.create(repo["name"], repo)
     else: