Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/ml/mlflow/api_helpers.rb')
-rw-r--r--lib/api/ml/mlflow/api_helpers.rb49
1 files changed, 43 insertions, 6 deletions
diff --git a/lib/api/ml/mlflow/api_helpers.rb b/lib/api/ml/mlflow/api_helpers.rb
index aefa156717c..66d79753110 100644
--- a/lib/api/ml/mlflow/api_helpers.rb
+++ b/lib/api/ml/mlflow/api_helpers.rb
@@ -4,6 +4,8 @@ module API
module Ml
module Mlflow
module ApiHelpers
+ OUTER_QUOTES_REGEXP = /^("|')|("|')?$/
+
def check_api_read!
not_found! unless can?(current_user, :read_model_experiments, user_project)
end
@@ -16,6 +18,10 @@ module API
not_found! unless can?(current_user, :read_model_registry, user_project)
end
+ def check_api_model_registry_write!
+ unauthorized! unless can?(current_user, :write_model_registry, user_project)
+ end
+
def resource_not_found!
render_structured_api_error!({ error_code: 'RESOURCE_DOES_NOT_EXIST' }, 404)
end
@@ -28,6 +34,10 @@ module API
render_structured_api_error!({ error_code: 'INVALID_PARAMETER_VALUE', message: message }, 400)
end
+ def update_failed!
+ render_structured_api_error!({ error_code: 'UPDATE_FAILED' }, 400)
+ end
+
def experiment_repository
::Ml::ExperimentTracking::ExperimentRepository.new(user_project, current_user)
end
@@ -75,6 +85,34 @@ module API
}
end
+ def model_order_params(params)
+ if params[:order_by].blank?
+ order_by = 'name'
+ sort = 'asc'
+ else
+ order_by, sort = params[:order_by].downcase.split(' ')
+ order_by = 'updated_at' if order_by == 'last_updated_timestamp'
+ sort ||= 'asc'
+ end
+
+ {
+ order_by: order_by,
+ sort: sort
+ }
+ end
+
+ def model_filter_params(params)
+ return {} if params[:filter].blank?
+
+ param, filter = params[:filter].split('=')
+
+ return {} unless param == 'name'
+
+ filter.gsub!(OUTER_QUOTES_REGEXP, '') unless filter.blank?
+
+ { name: filter }
+ end
+
def find_experiment!(iid, name)
experiment_repository.by_iid_or_name(iid: iid, name: name) || resource_not_found!
end
@@ -87,13 +125,12 @@ module API
::Ml::FindModelService.new(project, name).execute || resource_not_found!
end
- def packages_url
- path = api_v4_projects_packages_generic_package_version_path(
- id: user_project.id, package_name: '', file_name: ''
- )
- path = path.delete_suffix('/package_version')
+ def find_model_version(project, name, version)
+ ::Ml::ModelVersions::GetModelVersionService.new(project, name, version).execute || resource_not_found!
+ end
- expose_url(path)
+ def model
+ @model ||= find_model(user_project, params[:name])
end
end
end