@@ -11,8 +11,123 @@ def __init__(self, client, project_key):
1111 self .project_key = project_key
1212
1313 def list_models (self , run_id ):
14+ """
15+ Returns the list of models of given run
16+
17+ :param run_id: run_id for which to return a list of models
18+ :type run_id: str
19+ """
1420 response = self .client ._perform_http (
1521 "GET" , "/api/2.0/mlflow/extension/models/{}" .format (run_id ),
1622 headers = {"x-dku-mlflow-project-key" : self .project_key }
1723 )
1824 return response .json ()
25+
26+ def list_experiments (self , view_type = "ACTIVE_ONLY" , max_results = 1000 ):
27+ """
28+ Returns the list of experiments in the DSS project for which MLflow integration
29+ is setup
30+
31+ :param view_type: ACTIVE_ONLY, DELETED_ONLY or ALL
32+ :type view_type: str
33+ :param max_results: max results count
34+ :type max_results: int
35+ :rtype: dict
36+ """
37+ response = self .client ._perform_http (
38+ "GET" , "/api/2.0/mlflow/experiments/list?view_type={view_type}&max_results={max_results}" .format (view_type = view_type , max_results = max_results ),
39+ headers = {"x-dku-mlflow-project-key" : self .project_key }
40+ )
41+ return response .json ()
42+
43+ def rename_experiment (self , experiment_id , new_name ):
44+ """
45+ Renames an experiment
46+
47+ :param experiment_id: experiment id
48+ :type experiment_id: str
49+ :param new_name: new name
50+ :type new_name: str
51+ """
52+ response = self .client ._perform_http (
53+ "POST" , "/api/2.0/mlflow/experiments/update" ,
54+ headers = {"x-dku-mlflow-project-key" : self .project_key },
55+ body = {"experiment_id" : experiment_id , "new_name" : new_name }
56+ )
57+ return response .json ()
58+
59+ def restore_experiment (self , experiment_id ):
60+ """
61+ Restores a deleted experiment
62+
63+ :param experiment_id: experiment id
64+ :type experiment_id: str
65+ """
66+ response = self .client ._perform_http (
67+ "POST" , "/api/2.0/mlflow/experiments/restore" ,
68+ headers = {"x-dku-mlflow-project-key" : self .project_key },
69+ body = {"experiment_id" : experiment_id }
70+ )
71+ return response .json ()
72+
73+ def restore_run (self , run_id ):
74+ """
75+ Restores a deleted run
76+
77+ :param run_id: run id
78+ :type run_id: str
79+ """
80+ response = self .client ._perform_http (
81+ "POST" , "/api/2.0/mlflow/runs/restore" ,
82+ headers = {"x-dku-mlflow-project-key" : self .project_key },
83+ body = {"run_id" : run_id }
84+ )
85+ return response .json ()
86+
87+ def garbage_collect (self ):
88+ """
89+ Permanently deletes the experiments and runs marked as "Deleted"
90+ """
91+ self .client ._perform_http (
92+ "GET" , "/api/2.0/mlflow/extension/garbage-collect" ,
93+ headers = {"x-dku-mlflow-project-key" : self .project_key }
94+ )
95+
96+ def create_experiment_tracking_dataset (self , dataset_name , experiment_ids = [], view_type = "ACTIVE_ONLY" , filter_expr = "" , order_by = [], format = "LONG" ):
97+ """
98+
99+ Creates a virtual dataset exposing experiment tracking data.
100+
101+ :param dataset_name: name of the dataset
102+ :type dataset_name: str
103+ :param experiment_ids: list of ids of experiments to filter on. No filtering if empty
104+ :type experiment_ids: list(str)
105+ :param view_type: one of ACTIVE_ONLY, DELETED_ONLY and ALL. Default is ACTIVE_ONLY
106+ :type view_type: str
107+ :param filter_expr: MLflow search expression
108+ :type filter_expr: str
109+ :param order_by: list of order by clauses. Default is ordered by start_time, then runId
110+ :type order_by: list(str)
111+ :param format: LONG or JSON. Default is LONG
112+ :type format: str
113+ """
114+ self .client ._perform_http (
115+ "POST" , "/api/2.0/mlflow/extension/create-project-experiments-dataset" ,
116+ headers = {"x-dku-mlflow-project-key" : self .project_key },
117+ body = {
118+ "datasetName" : dataset_name ,
119+ "experimentIds" : experiment_ids ,
120+ "viewType" : view_type ,
121+ "filter" : filter_expr ,
122+ "orderBy" : order_by ,
123+ "format" : format
124+ }
125+ )
126+
127+ def clean_experiment_tracking_db (self ):
128+ """
129+ Cleans the experiments, runs, params, metrics, tags, etc. for this project
130+
131+ This call requires an API key with admin rights
132+ """
133+ self .client ._perform_raw ("DELETE" , "/api/2.0/mlflow/extension/clean-db/%s" % self .project_key )
0 commit comments