Skip to content

Commit

Permalink
Add images names to project/params
Browse files Browse the repository at this point in the history
  • Loading branch information
suprjinx committed Jul 12, 2024
1 parent cb4cf54 commit 44b1948
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 1 deletion.
8 changes: 7 additions & 1 deletion pkg/api/aim/api/response/project.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,12 @@ func NewProjectParamsResponse(projectParams *models.ProjectParams,
}
}

// process images
images := make(fiber.Map, len(projectParams.Images))
for _, imageName := range projectParams.Images {
images[imageName] = []fiber.Map{}
}

rsp := ProjectParamsResponse{}
if !excludeParams {
rsp.Params = &params
Expand All @@ -118,7 +124,7 @@ func NewProjectParamsResponse(projectParams *models.ProjectParams,
for _, s := range sequences {
switch s {
case "images":
rsp.Images = &fiber.Map{"images": fiber.Map{}}
rsp.Images = &images
case "texts":
rsp.Texts = &fiber.Map{}
case "figures":
Expand Down
1 change: 1 addition & 0 deletions pkg/api/aim/dao/models/project.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,5 @@ type ProjectParams struct {
Metrics []LatestMetric
TagKeys []string
ParamKeys []string
Images []string
}
31 changes: 31 additions & 0 deletions pkg/api/aim/dao/repositories/artifact.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ type ArtifactRepositoryProvider interface {
timeZoneOffset int,
req request.SearchArtifactsRequest,
) (*sql.Rows, int64, ArtifactSearchSummary, error)
GetArtifactNamesByExperiments(
ctx context.Context, namespaceID uint, experiments []int,
) ([]string, error)
}

// ArtifactRepository repository to work with `artifact` entity.
Expand Down Expand Up @@ -129,3 +132,31 @@ func (r ArtifactRepository) Search(

return rows, int64(len(runIDs)), resultSummary, nil
}

// GetArtifactNamesByExperiments will find image names in the selected experiments.
func (r ArtifactRepository) GetArtifactNamesByExperiments(
ctx context.Context, namespaceID uint, experiments []int,
) ([]string, error) {
runIDs := []string{}
if err := r.GetDB().WithContext(ctx).
Table("runs").
Joins(`INNER JOIN experiments
ON experiments.experiment_id = runs.experiment_id
AND experiments.namespace_id = ?
AND experiments.id IN ?`,
namespaceID, experiments,
).
Find(&runIDs).Error; err != nil {
return nil, eris.Wrap(err, "error finding runs for artifacts")
}

imageNames := []string{}
if err := r.GetDB().WithContext(ctx).
Distinct("name").
Table("artifacts").
Where("run_uuid IN ?", runIDs).
Find(&imageNames).Error; err != nil {
return nil, eris.Wrap(err, "error finding runs for artifact search")
}
return imageNames, nil
}
12 changes: 12 additions & 0 deletions pkg/api/aim/services/project/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ type Service struct {
paramRepository repositories.ParamRepositoryProvider
metricRepository repositories.MetricRepositoryProvider
experimentRepository repositories.ExperimentRepositoryProvider
artifactRepository repositories.ArtifactRepositoryProvider
liveUpdatesEnabled bool
}

Expand All @@ -28,6 +29,7 @@ func NewService(
paramRepository repositories.ParamRepositoryProvider,
metricRepository repositories.MetricRepositoryProvider,
experimentRepository repositories.ExperimentRepositoryProvider,
artifactRepository repositories.ArtifactRepositoryProvider,
liveUpdatesEnabled bool,
) *Service {
return &Service{
Expand Down Expand Up @@ -113,5 +115,15 @@ func (s Service) GetProjectParams(
}
projectParams.Metrics = metrics
}
if slices.Contains(req.Sequences, "images") {
// fetch images available for requested Experiments.
images, err := s.artifactRepository.GetArtifactNamesByExperiments(
ctx, namespaceID, req.Experiments,
)
if err != nil {
return nil, api.NewInternalError("error getting images: %s", err)
}
projectParams.Images = images
}
return &projectParams, nil
}
1 change: 1 addition & 0 deletions pkg/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,7 @@ func createApp(
aimRepositories.NewParamRepository(db.GormDB()),
aimRepositories.NewMetricRepository(db.GormDB()),
aimRepositories.NewExperimentRepository(db.GormDB()),
aimRepositories.NewArtifactRepository(db.GormDB()),
config.LiveUpdatesEnabled,
),
aimDashboardService.NewService(
Expand Down

0 comments on commit 44b1948

Please sign in to comment.