# 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
default=None,
help="OSM repository: The password of the OSM repository",
)
+@click.option(
+ "--oci",
+ 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
kwargs = {k: v for k, v in kwargs.items() if v is not None}
repo = 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: