|
54 | 54 | import java.util.Objects; |
55 | 55 | import java.util.Optional; |
56 | 56 | import java.util.function.Function; |
| 57 | +import java.util.regex.Pattern; |
57 | 58 | import java.util.stream.Collectors; |
58 | 59 | import java.util.zip.ZipInputStream; |
59 | 60 |
|
@@ -153,6 +154,55 @@ public List<ExperimentMetadata> getAllExperiments(@NonNull String projectId) { |
153 | 154 | ArrayList::addAll); |
154 | 155 | } |
155 | 156 |
|
| 157 | + @Override |
| 158 | + public List<ExperimentMetadata> getExperiments(@NonNull String workspaceName, @NonNull String projectName) { |
| 159 | + return restApiClient.getAllExperiments(projectName, workspaceName) |
| 160 | + .doOnError(ex -> this.logger.error( |
| 161 | + "Failed to read experiments found in the project {} of workspace {}", |
| 162 | + projectName, workspaceName, ex)) |
| 163 | + .blockingGet() |
| 164 | + .getExperiments() |
| 165 | + .stream() |
| 166 | + .collect(ArrayList::new, |
| 167 | + (metadataList, metadataRest) -> metadataList.add(metadataRest.toExperimentMetadata()), |
| 168 | + ArrayList::addAll); |
| 169 | + } |
| 170 | + |
| 171 | + @Override |
| 172 | + public List<ExperimentMetadata> getExperiments(@NonNull String workspaceName) { |
| 173 | + return this.getAllProjects(workspaceName) |
| 174 | + .stream() |
| 175 | + .collect(ArrayList::new, (metadataList, project) -> this.getAllExperiments(project.getProjectId()), |
| 176 | + ArrayList::addAll); |
| 177 | + } |
| 178 | + |
| 179 | + @Override |
| 180 | + public List<ExperimentMetadata> getExperiments( |
| 181 | + @NonNull String workspaceName, String projectName, String experimentNamePattern) { |
| 182 | + |
| 183 | + if (StringUtils.isBlank(projectName)) { |
| 184 | + // no project name provided |
| 185 | + if (!StringUtils.isBlank(experimentNamePattern)) { |
| 186 | + throw new IllegalArgumentException( |
| 187 | + "you must specify projectName when experimentNamePattern is provided"); |
| 188 | + } |
| 189 | + // get experiments for all projects in the workspace |
| 190 | + return this.getExperiments(workspaceName); |
| 191 | + } |
| 192 | + |
| 193 | + if (StringUtils.isBlank(experimentNamePattern)) { |
| 194 | + // no experiment name pattern provided |
| 195 | + return this.getExperiments(workspaceName, projectName); |
| 196 | + } |
| 197 | + |
| 198 | + // return list of experiments with names matching provided regex |
| 199 | + return this.getExperiments(workspaceName, projectName) |
| 200 | + .stream() |
| 201 | + .filter(experimentMetadata -> |
| 202 | + Pattern.matches(experimentNamePattern, experimentMetadata.getExperimentName())) |
| 203 | + .collect(Collectors.toList()); |
| 204 | + } |
| 205 | + |
156 | 206 | @Override |
157 | 207 | public ModelRegistryRecord registerModel(@NonNull final Model model, @NonNull final String experimentKey) { |
158 | 208 | // get list of experiment models |
@@ -393,8 +443,8 @@ public void updateRegistryModelVersion(@NonNull String registryName, @NonNull St |
393 | 443 | Optional<ModelVersionOverview> versionOverviewOptional = this.getRegistryModelVersion( |
394 | 444 | registryName, workspace, version); |
395 | 445 | if (!versionOverviewOptional.isPresent()) { |
396 | | - throw new ModelVersionNotFoundException( |
397 | | - getString(REGISTRY_MODEL_VERSION_NOT_FOUND, version, workspace, registryName)); |
| 446 | + throw new ModelVersionNotFoundException( |
| 447 | + getString(REGISTRY_MODEL_VERSION_NOT_FOUND, version, workspace, registryName)); |
398 | 448 | } |
399 | 449 |
|
400 | 450 | // update model version details |
|
0 commit comments