Skip to content

Commit bff4fad

Browse files
Fix bundle representation for experiments (#3681)
## Changes This PR changes the experiments resource definition to use `ml.CreateExperiment` instead of using `ml.Experiment`. ## Why This removes output only fields from the resource schema. Those fields were never settable in the first place. for reference, here are the structs: ``` type CreateExperiment struct { // Location where all artifacts for the experiment are stored. If not // provided, the remote server will select an appropriate default. ArtifactLocation string `json:"artifact_location,omitempty"` // Experiment name. Name string `json:"name"` // A collection of tags to set on the experiment. Maximum tag size and // number of tags per request depends on the storage backend. All storage // backends are guaranteed to support tag keys up to 250 bytes in size and // tag values up to 5000 bytes in size. All storage backends are also // guaranteed to support up to 20 tags per request. Tags []ExperimentTag `json:"tags,omitempty"` ForceSendFields []string `json:"-" url:"-"` } ``` ``` // An experiment and its metadata. type Experiment struct { // Location where artifacts for the experiment are stored. ArtifactLocation string `json:"artifact_location,omitempty"` // Creation time CreationTime int64 `json:"creation_time,omitempty"` // Unique identifier for the experiment. ExperimentId string `json:"experiment_id,omitempty"` // Last update time LastUpdateTime int64 `json:"last_update_time,omitempty"` // Current life cycle stage of the experiment: "active" or "deleted". // Deleted experiments are not returned by APIs. LifecycleStage string `json:"lifecycle_stage,omitempty"` // Human readable name that identifies the experiment. Name string `json:"name,omitempty"` // Tags: Additional metadata key-value pairs. Tags []ExperimentTag `json:"tags,omitempty"` ForceSendFields []string `json:"-" url:"-"` } ``` ## Tests New integration tests are being added in https://github.com/databricks/cli/pull/3669/files provide coverage. Just looking at the structs though is enough to confirm that no input fields are being lost.
1 parent ec8c903 commit bff4fad

File tree

11 files changed

+23
-35
lines changed

11 files changed

+23
-35
lines changed

bundle/config/mutator/initialize_urls_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ func TestInitializeURLs(t *testing.T) {
3737
},
3838
Experiments: map[string]*resources.MlflowExperiment{
3939
"experiment1": {
40-
BaseResource: resources.BaseResource{ID: "4"},
41-
Experiment: ml.Experiment{Name: "experiment1"},
40+
BaseResource: resources.BaseResource{ID: "4"},
41+
CreateExperiment: ml.CreateExperiment{Name: "experiment1"},
4242
},
4343
},
4444
Models: map[string]*resources.MlflowModel{

bundle/config/mutator/resourcemutator/apply_target_mode_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ func mockBundle(mode config.Mode) *bundle.Bundle {
9696
"pipeline1": {CreatePipeline: pipelines.CreatePipeline{Name: "pipeline1", Continuous: true}},
9797
},
9898
Experiments: map[string]*resources.MlflowExperiment{
99-
"experiment1": {Experiment: ml.Experiment{Name: "/Users/[email protected]/experiment1"}},
100-
"experiment2": {Experiment: ml.Experiment{Name: "experiment2"}},
99+
"experiment1": {CreateExperiment: ml.CreateExperiment{Name: "/Users/[email protected]/experiment1"}},
100+
"experiment2": {CreateExperiment: ml.CreateExperiment{Name: "experiment2"}},
101101
},
102102
Models: map[string]*resources.MlflowModel{
103103
"model1": {CreateModelRequest: ml.CreateModelRequest{Name: "model1"}},
@@ -232,7 +232,7 @@ func TestProcessTargetModeDevelopment(t *testing.T) {
232232
// Experiment 1
233233
assert.Equal(t, "/Users/[email protected]/[dev lennart] experiment1", b.Config.Resources.Experiments["experiment1"].Name)
234234
assert.Contains(t, b.Config.Resources.Experiments["experiment1"].Tags, ml.ExperimentTag{Key: "dev", Value: "lennart"})
235-
assert.Equal(t, "dev", b.Config.Resources.Experiments["experiment1"].Experiment.Tags[0].Key)
235+
assert.Equal(t, "dev", b.Config.Resources.Experiments["experiment1"].CreateExperiment.Tags[0].Key)
236236

237237
// Experiment 2
238238
assert.Equal(t, "[dev lennart] experiment2", b.Config.Resources.Experiments["experiment2"].Name)

bundle/config/resources/mlflow_experiment.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ type MlflowExperimentPermission struct {
2424

2525
type MlflowExperiment struct {
2626
BaseResource
27-
ml.Experiment
27+
ml.CreateExperiment
2828

2929
Permissions []MlflowExperimentPermission `json:"permissions,omitempty"`
3030
}

bundle/config/resources_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ func TestResourcesBindSupport(t *testing.T) {
131131
},
132132
Experiments: map[string]*resources.MlflowExperiment{
133133
"my_experiment": {
134-
Experiment: ml.Experiment{},
134+
CreateExperiment: ml.CreateExperiment{},
135135
},
136136
},
137137
RegisteredModels: map[string]*resources.RegisteredModel{

bundle/deploy/terraform/convert_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ func TestBundleToTerraformModelPermissions(t *testing.T) {
360360

361361
func TestBundleToTerraformExperiment(t *testing.T) {
362362
src := resources.MlflowExperiment{
363-
Experiment: ml.Experiment{
363+
CreateExperiment: ml.CreateExperiment{
364364
Name: "name",
365365
},
366366
}
@@ -383,7 +383,7 @@ func TestBundleToTerraformExperiment(t *testing.T) {
383383

384384
func TestBundleToTerraformExperimentPermissions(t *testing.T) {
385385
src := resources.MlflowExperiment{
386-
Experiment: ml.Experiment{
386+
CreateExperiment: ml.CreateExperiment{
387387
Name: "name",
388388
},
389389
Permissions: []resources.MlflowExperimentPermission{

bundle/deploy/terraform/tfdyn/convert_experiment_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515

1616
func TestConvertExperiment(t *testing.T) {
1717
src := resources.MlflowExperiment{
18-
Experiment: ml.Experiment{
18+
CreateExperiment: ml.CreateExperiment{
1919
Name: "name",
2020
},
2121
Permissions: []resources.MlflowExperimentPermission{

bundle/internal/schema/testdata/pass/ml.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ resources:
3535
experiments:
3636
myexperiment:
3737
artifact_location: /dbfs/myexperiment
38-
last_update_time: ${var.complexvar.key2}
39-
lifecycle_stage: ${var.simplevar}
38+
name: ${var.simplevar}
39+
tags: ${var.complexvar.key1}
4040
permissions:
4141
- service_principal_name: myserviceprincipal
4242
level: CAN_MANAGE

bundle/internal/validation/generated/required_fields.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bundle/permissions/workspace_root_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ func TestApplyWorkspaceRootPermissions(t *testing.T) {
4646
"model_2": {},
4747
},
4848
Experiments: map[string]*resources.MlflowExperiment{
49-
"experiment_1": {Experiment: ml.Experiment{}},
50-
"experiment_2": {Experiment: ml.Experiment{}},
49+
"experiment_1": {CreateExperiment: ml.CreateExperiment{}},
50+
"experiment_2": {CreateExperiment: ml.CreateExperiment{}},
5151
},
5252
ModelServingEndpoints: map[string]*resources.ModelServingEndpoint{
5353
"endpoint_1": {CreateServingEndpoint: serving.CreateServingEndpoint{}},
@@ -106,8 +106,8 @@ func TestApplyWorkspaceRootPermissionsForAllPaths(t *testing.T) {
106106
"model_2": {},
107107
},
108108
Experiments: map[string]*resources.MlflowExperiment{
109-
"experiment_1": {Experiment: ml.Experiment{}},
110-
"experiment_2": {Experiment: ml.Experiment{}},
109+
"experiment_1": {CreateExperiment: ml.CreateExperiment{}},
110+
"experiment_2": {CreateExperiment: ml.CreateExperiment{}},
111111
},
112112
ModelServingEndpoints: map[string]*resources.ModelServingEndpoint{
113113
"endpoint_1": {CreateServingEndpoint: serving.CreateServingEndpoint{}},

bundle/schema/jsonschema.json

Lines changed: 3 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)