Fix for bug 1447 Grafana user not associated with team

Change-Id: I69aced0620b1bbf8d79f862ee9bf352d1ea9b4d5
Signed-off-by: palsus <subhankar.pal@aricent.com>
Signed-off-by: Atul Agarwal <Atul.Agarwal@Altran.com>
(cherry picked from commit 806fe459500347c2ed0b8c787aae2d94b709d836)
diff --git a/osm_mon/dashboarder/dashboarder.py b/osm_mon/dashboarder/dashboarder.py
index a6ff5bc..35364d6 100644
--- a/osm_mon/dashboarder/dashboarder.py
+++ b/osm_mon/dashboarder/dashboarder.py
@@ -55,8 +55,28 @@
         try:
             if topic == "users" and key == "created":
                 log.debug("Received message from kafka for creating user")
-                user = values['username']
+                if values.get('username'):
+                    user = values['username']
+                else:
+                    user = values['changes']['username']
                 self.service.create_grafana_user(user)
+                # user-created and mapping is done with osm cli
+                if values.get('changes'):
+                    # user-project-role mapping is included in change
+                    if values['changes'].get('project_role_mappings'):
+                        user_id = values["_id"]
+                        project_data = values["changes"]["project_role_mappings"]
+                        project_list = values["changes"].get("projects")
+                        self.service.create_grafana_team_member(project_data, user_id, project_list)
+                elif values.get('project_role_mappings'):
+                    # for fresh project-role-mapping
+                    user_id = values.get("_id")
+                    project_data = values["project_role_mappings"]
+                    if user_id:
+                        self.service.create_grafana_team_member(project_data, user_id)
+                    else:
+                        # for keystone we will get username
+                        self.service.create_grafana_team_member(project_data, user=values['username'])
             elif topic == "users" and key == "deleted":
                 log.debug("Received message from kafka for deleting user")
                 user = values['username']
@@ -64,8 +84,18 @@
             elif topic == "users" and key == "edited":
                 log.debug("Received message from kafka for associating user to team")
                 user_id = values["_id"]
-                project_data = values["changes"]["project_role_mappings"]
-                self.service.create_grafana_team_member(project_data, user_id)
+                if values["changes"].get("remove_project_role_mappings") and not \
+                        values["changes"].get("add_project_role_mappings"):
+                    # Removing user-project role mapping
+                    self.service.remove_grafana_team_members(user_id,
+                                                             values["changes"].get("remove_project_role_mappings"))
+                else:
+                    # Changing user project role mapping
+                    if values["changes"].get("project_role_mappings"):
+                        project_data = values["changes"]["project_role_mappings"]
+                    else:
+                        project_data = values["changes"]["add_project_role_mappings"]
+                    self.service.create_grafana_team_member(project_data, user_id)
             elif topic == "project" and key == "created":
                 log.debug("Received message from kafka for creating team")
                 team_name = values["name"]