Fix for bug 1447 Grafana user not associated with team
[osm/MON.git] / osm_mon / dashboarder / dashboarder.py
index a6ff5bc..35364d6 100644 (file)
@@ -55,8 +55,28 @@ class Dashboarder:
         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 @@ class Dashboarder:
             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"]