From: delacruzramo Date: Wed, 5 Feb 2020 11:50:21 +0000 (+0000) Subject: K8sCluster/Repo association by projects X-Git-Tag: v7.1.0rc1~24 X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=commitdiff_plain;h=c2d5fc65d215f29c8b7861734415d6a509225418;hp=-c K8sCluster/Repo association by projects Change-Id: I48f5629fea54e414226715554a841b0e30e09077 Signed-off-by: delacruzramo --- c2d5fc65d215f29c8b7861734415d6a509225418 diff --git a/osm_nbi/admin_topics.py b/osm_nbi/admin_topics.py index 90c5d08..a564eae 100644 --- a/osm_nbi/admin_topics.py +++ b/osm_nbi/admin_topics.py @@ -437,6 +437,15 @@ class K8sClusterTopic(CommonVimWimSdn): 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): @@ -447,6 +456,22 @@ class K8sClusterTopic(CommonVimWimSdn): oid = super().format_on_edit(final_content, edit_content) return oid + def check_conflict_on_edit(self, session, final_content, edit_content, _id): + super(CommonVimWimSdn, self).check_conflict_on_edit(session, final_content, edit_content, _id) + 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] + class K8sRepoTopic(CommonVimWimSdn): topic = "k8srepos" @@ -457,6 +482,26 @@ class K8sRepoTopic(CommonVimWimSdn): password_to_encrypt = None config_to_encrypt = {} + def format_on_new(self, content, project_id=None, make_public=False): + oid = super().format_on_new(content, project_id, make_public) + # Update Helm/Juju Repo lists + repo_list = content["type"].replace('-', '_')+"_repos" + for proj in content["_admin"]["projects_read"]: + if proj != 'ANY': + self.db.set_list("k8sclusters", + {"_admin.projects_read": proj, "_admin."+repo_list+".ne": content["_id"]}, {}, + push={"_admin."+repo_list: content["_id"]}) + return oid + + def delete(self, session, _id, dry_run=False, not_send_msg=None): + type = self.db.get_one("k8srepos", {"_id": _id})["type"] + oid = super().delete(session, _id, dry_run, not_send_msg) + if oid: + # Remove from Helm/Juju Repo lists + repo_list = type.replace('-', '_') + "_repos" + self.db.set_list("k8sclusters", {"_admin."+repo_list: _id}, {}, pull={"_admin."+repo_list: _id}) + return oid + class UserTopicAuth(UserTopic): # topic = "users"