mirror of
				https://github.com/open-metadata/OpenMetadata.git
				synced 2025-10-30 18:17:53 +00:00 
			
		
		
		
	
							parent
							
								
									b3617a8f8b
								
							
						
					
					
						commit
						1bc2cc1d71
					
				| @ -67,15 +67,27 @@ class ModeApiClient: | ||||
|         ) | ||||
|         self.client = REST(client_config) | ||||
| 
 | ||||
|     def fetch_all_reports(self, workspace_name: str) -> Optional[list]: | ||||
|     def fetch_all_reports( | ||||
|         self, workspace_name: str, filter: Optional[str] = "all" | ||||
|     ) -> Optional[list]: | ||||
|         """Method to fetch all reports for Mode | ||||
|         Args: | ||||
|             workspace_name: | ||||
|             filter: | ||||
|         Returns: | ||||
|             dict | ||||
|         """ | ||||
|         if filter not in ["custom", "all"]: | ||||
|             logger.warning( | ||||
|                 "Invalid value for filter. Should be one of ['custom', 'all']" | ||||
|             ) | ||||
|             return | ||||
| 
 | ||||
|         all_reports = [] | ||||
|         response_collections = self.client.get(f"/{workspace_name}/{COLLECTIONS}") | ||||
|         filter_param = f"?filter={filter}" | ||||
|         response_collections = self.client.get( | ||||
|             f"/{workspace_name}/{COLLECTIONS}{filter_param}" | ||||
|         ) | ||||
|         collections = response_collections[EMBEDDED]["spaces"] | ||||
|         for collection in collections: | ||||
|             response_reports = self.get_all_reports_for_collection( | ||||
| @ -175,3 +187,19 @@ class ModeApiClient: | ||||
|             logger.warning(f"Error fetching all data sources: {exc}") | ||||
| 
 | ||||
|         return None | ||||
| 
 | ||||
|     def get_workspace(self, workspace_name: str) -> Optional[dict]: | ||||
|         """Method to get info about a workspace | ||||
|         Args: | ||||
|             workspace_name: | ||||
|         Returns: | ||||
|             dict | ||||
|         """ | ||||
|         try: | ||||
|             response = self.client.get(f"/{workspace_name}") | ||||
|             return response.json() | ||||
|         except Exception as exc:  # pylint: disable=broad-except | ||||
|             logger.debug(traceback.format_exc()) | ||||
|             logger.warning(f"Error testing workspace connection: {exc}") | ||||
| 
 | ||||
|         return None | ||||
|  | ||||
| @ -51,7 +51,7 @@ def test_connection( | ||||
| 
 | ||||
|     test_fn = { | ||||
|         "CheckDashboards": partial( | ||||
|             client.fetch_all_reports, service_connection.workspaceName | ||||
|             client.get_workspace, service_connection.workspaceName | ||||
|         ) | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -62,6 +62,7 @@ class ModeSource(DashboardServiceSource): | ||||
|     ): | ||||
|         super().__init__(config, metadata) | ||||
|         self.workspace_name = config.serviceConnection.root.config.workspaceName | ||||
|         self.filter_query_param = config.serviceConnection.root.config.filterQueryParam | ||||
|         self.data_sources = self.client.get_all_data_sources(self.workspace_name) | ||||
| 
 | ||||
|     @classmethod | ||||
| @ -80,7 +81,9 @@ class ModeSource(DashboardServiceSource): | ||||
|         """ | ||||
|         Get List of all dashboards | ||||
|         """ | ||||
|         return self.client.fetch_all_reports(self.workspace_name) | ||||
|         # If filter param field was empty, we will default to passing "all" to the API | ||||
|         filter_param = "all" if not self.filter_query_param else self.filter_query_param | ||||
|         return self.client.fetch_all_reports(self.workspace_name, filter_param) | ||||
| 
 | ||||
|     def get_dashboard_name(self, dashboard: dict) -> str: | ||||
|         """ | ||||
|  | ||||
| @ -44,6 +44,11 @@ | ||||
|       "description": "Mode Workspace Name", | ||||
|       "type": "string" | ||||
|     }, | ||||
|     "filterQueryParam": { | ||||
|       "title": "Filter Query Param", | ||||
|       "description": "Filter query parameter for some of the Mode API calls", | ||||
|       "type": "string" | ||||
|     }, | ||||
|     "supportsMetadataExtraction": { | ||||
|       "title": "Supports Metadata Extraction", | ||||
|       "$ref": "../connectionBasicType.json#/definitions/supportsMetadataExtraction" | ||||
|  | ||||
| @ -42,3 +42,14 @@ $$section | ||||
| 
 | ||||
| Name of the Mode workspace. | ||||
| $$ | ||||
| 
 | ||||
| $$section | ||||
| ### Filter Query Param $(id="filterQueryParam") | ||||
| 
 | ||||
| This value is the `filter` query parameter that is passed to the Mode API. Different API | ||||
| calls use different types of acceptable values. Currently this parameter is only implemented | ||||
| to [list all collections](https://mode.com/developer/api-reference/management/collections/#listCollections).  | ||||
| The valid values that is currently supported are: `all` | ||||
| and `custom`. If this field is left empty, `all` will be used. | ||||
| 
 | ||||
| $$ | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Vijay Lakshmanan
						Vijay Lakshmanan