+ def format_on_new(self, content, project_id=None, make_public=False):
+ oid = super().format_on_new(content, project_id, make_public)
+ self.db.encrypt_decrypt_fields(
+ content["credentials"],
+ "encrypt",
+ ["password", "secret"],
+ schema_version=content["schema_version"],
+ salt=content["_id"],
+ )
+ # Add Helm/Juju Repo lists
+ repos = {"helm-chart": [], "juju-bundle": []}
+ for proj in content["_admin"]["projects_read"]:
+ if proj != "ANY":
+ for repo in self.db.get_list(
+ "k8srepos", {"_admin.projects_read": proj}
+ ):
+ if repo["_id"] not in repos[repo["type"]]:
+ repos[repo["type"]].append(repo["_id"])
+ for k in repos:
+ content["_admin"][k.replace("-", "_") + "_repos"] = repos[k]
+ return oid
+
+ def format_on_edit(self, final_content, edit_content):
+ if final_content.get("schema_version") and edit_content.get("credentials"):
+ self.db.encrypt_decrypt_fields(
+ edit_content["credentials"],
+ "encrypt",
+ ["password", "secret"],
+ schema_version=final_content["schema_version"],
+ salt=final_content["_id"],
+ )
+ deep_update_rfc7396(
+ final_content["credentials"], edit_content["credentials"]
+ )
+ oid = super().format_on_edit(final_content, edit_content)
+ return oid
+
+ def check_conflict_on_edit(self, session, final_content, edit_content, _id):
+ final_content = super(CommonVimWimSdn, self).check_conflict_on_edit(
+ session, final_content, edit_content, _id
+ )
+ final_content = super().check_conflict_on_edit(
+ session, final_content, edit_content, _id
+ )
+ # Update Helm/Juju Repo lists
+ repos = {"helm-chart": [], "juju-bundle": []}
+ for proj in session.get("set_project", []):
+ if proj != "ANY":
+ for repo in self.db.get_list(
+ "k8srepos", {"_admin.projects_read": proj}
+ ):
+ if repo["_id"] not in repos[repo["type"]]:
+ repos[repo["type"]].append(repo["_id"])
+ for k in repos:
+ rlist = k.replace("-", "_") + "_repos"
+ if rlist not in final_content["_admin"]:
+ final_content["_admin"][rlist] = []
+ final_content["_admin"][rlist] += repos[k]
+ return final_content