@click.argument("uri")
@click.option(
"--type",
- type=click.Choice(["helm-chart", "juju-bundle", "osm"]),
+ type=click.Choice(["osm", "helm-chart", "juju-bundle"]),
default="osm",
- help="type of repo (helm-chart for Helm Charts, juju-bundle for Juju Bundles, osm for OSM Repositories)",
+ help="type of repo (osm for OSM repositories, helm-chart for Helm Charts, juju-bundle for Juju Bundles)",
)
@click.option("--description", default=None, help="human readable description")
@click.option(
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.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 repo["type"] in ["helm-chart", "juju-bundle"]:
ctx.obj.repo.create(repo["name"], repo)
else:
@click.option("--newname", help="New name for the repo")
@click.option("--uri", help="URI of the repo")
@click.option("--description", help="human readable description")
+@click.option(
+ "--oci",
+ is_flag=True,
+ help="enable OCI (only for helm-chart repos, default: false, automatically set to true for oci:// URI)",
+)
@click.pass_context
-def repo_update(ctx, name, newname, uri, description):
+def repo_update(ctx, name, newname, uri, description, oci):
"""updates a repo in OSM
NAME: name of the repo
if newname:
repo["name"] = newname
if uri:
- repo["uri"] = uri
+ repo["url"] = uri
+ if uri.startswith("oci://"):
+ repo["oci"] = True
if description:
repo["description"] = description
+ if oci:
+ repo["oci"] = oci
try:
ctx.obj.repo.update(name, repo)
except NotFound:
self._apiName, self._apiVersion, self._apiResource
)
+ def check_oci(self, repo):
+ if repo["oci"] and repo["type"] != "helm-chart":
+ raise ClientException("OCI can only be enabled in helm-chart repos")
+
def create(self, name, repo):
+ self.check_oci(repo)
self._client.get_token()
http_code, resp = self._http.post_cmd(
endpoint=self._apiBase, postfields_dict=repo
# raise ClientException("failed to add repo {} - {}".format(name, msg))
def update(self, name, repo):
+ self.check_oci(repo)
self._client.get_token()
repo_dict = self.get(name)
http_code, resp = self._http.put_cmd(