NBI changes for Grafana Multitenancy feature
Change-Id: If92574606108152fed505dd5c132176721aa1736
Signed-off-by: agarwalat <atul.agarwal@altran.com>
diff --git a/osm_nbi/admin_topics.py b/osm_nbi/admin_topics.py
index 3c3249c..4f9ab0c 100644
--- a/osm_nbi/admin_topics.py
+++ b/osm_nbi/admin_topics.py
@@ -27,6 +27,7 @@
from osm_nbi.base_topic import BaseTopic, EngineException
from osm_nbi.authconn import AuthconnNotFoundException, AuthconnConflictException
from osm_common.dbbase import deep_update_rfc7396
+import copy
__author__ = "Alfonso Tierno <alfonso.tiernosepulveda@telefonica.com>"
@@ -533,7 +534,7 @@
class UserTopicAuth(UserTopic):
# topic = "users"
- # topic_msg = "users"
+ topic_msg = "users"
schema_new = user_new_schema
schema_edit = user_edit_schema
@@ -674,7 +675,7 @@
rollback.append({"topic": self.topic, "_id": _id})
# del content["password"]
- # self._send_msg("created", content, not_send_msg=not_send_msg)
+ self._send_msg("created", content, not_send_msg=None)
return _id, None
except ValidationError as e:
raise EngineException(e, HTTPStatus.UNPROCESSABLE_ENTITY)
@@ -808,6 +809,8 @@
"add_project_role_mappings": mappings_to_add,
"remove_project_role_mappings": mappings_to_remove
})
+ data_to_send = {'_id': _id, "changes": indata}
+ self._send_msg("edited", data_to_send, not_send_msg=None)
# return _id
except ValidationError as e:
@@ -844,13 +847,14 @@
self.check_conflict_on_del(session, uid, user)
if not dry_run:
v = self.auth.delete_user(uid)
+ self._send_msg("deleted", user, not_send_msg=not_send_msg)
return v
return None
class ProjectTopicAuth(ProjectTopic):
# topic = "projects"
- # topic_msg = "projects"
+ topic_msg = "project"
schema_new = project_new_schema
schema_edit = project_edit_schema
@@ -960,7 +964,7 @@
self.format_on_new(content, project_id=session["project_id"], make_public=session["public"])
_id = self.auth.create_project(content)
rollback.append({"topic": self.topic, "_id": _id})
- # self._send_msg("created", content, not_send_msg=not_send_msg)
+ self._send_msg("created", content, not_send_msg=None)
return _id, None
except ValidationError as e:
raise EngineException(e, HTTPStatus.UNPROCESSABLE_ENTITY)
@@ -1017,6 +1021,7 @@
self.check_conflict_on_del(session, pid, proj)
if not dry_run:
v = self.auth.delete_project(pid)
+ self._send_msg("deleted", proj, not_send_msg=None)
return v
return None
@@ -1042,9 +1047,11 @@
indata = self._validate_input_edit(indata, content, force=session["force"])
self.check_conflict_on_edit(session, content, indata, _id=_id)
self.format_on_edit(content, indata)
-
+ content_original = copy.deepcopy(content)
deep_update_rfc7396(content, indata)
self.auth.update_project(content["_id"], content)
+ proj_data = {"_id": _id, "changes": indata, "original": content_original}
+ self._send_msg("edited", proj_data, not_send_msg=None)
except ValidationError as e:
raise EngineException(e, HTTPStatus.UNPROCESSABLE_ENTITY)
diff --git a/osm_nbi/base_topic.py b/osm_nbi/base_topic.py
index c67ec76..bbe6337 100644
--- a/osm_nbi/base_topic.py
+++ b/osm_nbi/base_topic.py
@@ -308,6 +308,7 @@
def _send_msg(self, action, content, not_send_msg=None):
if self.topic_msg and not_send_msg is not False:
+ content = content.copy()
content.pop("_admin", None)
if isinstance(not_send_msg, list):
not_send_msg.append((self.topic_msg, action, content))