98 lines
2.7 KiB
Go
98 lines
2.7 KiB
Go
|
package mlflow
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"encoding/json"
|
||
|
"net/http"
|
||
|
)
|
||
|
|
||
|
func SearchExperiments(conf Config, opts ExperimentSearchOptions) (*ExperimentSearchReply, error) {
|
||
|
resp, err := http.Post(conf.ApiURI+"/api/2.0/mlflow/experiments/search", "application/json", opts.getReader())
|
||
|
exp := ExperimentSearchReply{}
|
||
|
err = apiReadReply(resp, err, &exp)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
return &exp, nil
|
||
|
}
|
||
|
|
||
|
func GetExperiment(conf Config, id string) (*Experiment, error) {
|
||
|
resp, err := http.Get(conf.ApiURI + "/api/2.0/mlflow/experiments/get" + "?experiment_id=" + id)
|
||
|
exp := ExperimentGetReply{}
|
||
|
err = apiReadReply(resp, err, &exp)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
return &exp.Experiment, nil
|
||
|
}
|
||
|
|
||
|
func GetExperimentByName(conf Config, name string) (*Experiment, error) {
|
||
|
resp, err := http.Get(conf.ApiURI + "/api/2.0/mlflow/experiments/get-by-name" + "?experiment_name=" + name)
|
||
|
exp := ExperimentGetReply{}
|
||
|
err = apiReadReply(resp, err, &exp)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
return &exp.Experiment, nil
|
||
|
}
|
||
|
|
||
|
func DeleteExperiment(conf Config, id string) error {
|
||
|
resp, err := http.Post(conf.ApiURI+"/api/2.0/mlflow/experiments/delete", "application/json", bytes.NewReader([]byte(`{"experiment_id":"`+id+`"}`)))
|
||
|
err = apiReadReply(resp, err, nil)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func RestoreExperiment(conf Config, id string) (*Experiment, error) {
|
||
|
resp, err := http.Post(conf.ApiURI+"/api/2.0/mlflow/experiments/restore", "application/json", bytes.NewReader([]byte(`{"experiment_id":"`+id+`"}`)))
|
||
|
err = apiReadReply(resp, err, nil)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
return GetExperiment(conf, id)
|
||
|
}
|
||
|
|
||
|
func UpdateExperiment(conf Config, id string, newName string) (*Experiment, error) {
|
||
|
args := `{"experiment_id":"` + id + `","new_name":"` + newName + `"}`
|
||
|
resp, err := http.Post(conf.ApiURI+"/api/2.0/mlflow/experiments/update", "application/json", bytes.NewReader([]byte(args)))
|
||
|
err = apiReadReply(resp, err, nil)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
return GetExperiment(conf, id)
|
||
|
}
|
||
|
|
||
|
func CreateExperiment(conf Config, exp *Experiment) (*Experiment, error) {
|
||
|
resp, err := http.Post(conf.ApiURI+"/api/2.0/mlflow/experiments/create", "application/json", bytes.NewReader([]byte(exp.serialize())))
|
||
|
xp := ExperimentCreateReply{}
|
||
|
err = apiReadReply(resp, err, &xp)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
return GetExperiment(conf, xp.ExperimentId)
|
||
|
}
|
||
|
|
||
|
func SetExperimentTagTag(conf Config, opts SetExperimentTagRequest) error {
|
||
|
args, err := json.Marshal(opts)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
resp, err := http.Post(conf.ApiURI+"/api/2.0/mlflow/experiments/set-experiment-tag", "application/json", bytes.NewReader([]byte(args)))
|
||
|
err = apiReadReply(resp, err, nil)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|