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_model_packages.rb')
-rw-r--r--lib/api/ml_model_packages.rb37
1 files changed, 31 insertions, 6 deletions
diff --git a/lib/api/ml_model_packages.rb b/lib/api/ml_model_packages.rb
index fec72b03ffd..35d231d9fe1 100644
--- a/lib/api/ml_model_packages.rb
+++ b/lib/api/ml_model_packages.rb
@@ -6,7 +6,7 @@ module API
include ::API::Helpers::Authentication
ML_MODEL_PACKAGES_REQUIREMENTS = {
- package_name: API::NO_SLASH_URL_PART_REGEX,
+ model_name: API::NO_SLASH_URL_PART_REGEX,
file_name: API::NO_SLASH_URL_PART_REGEX
}.freeze
@@ -47,15 +47,15 @@ module API
resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do
namespace ':id/packages/ml_models' do
params do
- requires :package_name, type: String, desc: 'Package name', regexp: Gitlab::Regex.ml_model_name_regex,
+ requires :model_name, type: String, desc: 'Model name', regexp: Gitlab::Regex.ml_model_name_regex,
file_path: true
- requires :package_version, type: String, desc: 'Package version',
+ requires :model_version, type: String, desc: 'Model version',
regexp: Gitlab::Regex.ml_model_version_regex
requires :file_name, type: String, desc: 'Package file name',
regexp: Gitlab::Regex.ml_model_file_name_regex, file_path: true
optional :status, type: String, values: ALLOWED_STATUSES, desc: 'Package status'
end
- namespace ':package_name/*package_version/:file_name', requirements: ML_MODEL_PACKAGES_REQUIREMENTS do
+ namespace ':model_name/*model_version/:file_name', requirements: ML_MODEL_PACKAGES_REQUIREMENTS do
desc 'Workhorse authorize model package file' do
detail 'Introduced in GitLab 16.1'
success code: 200
@@ -71,7 +71,7 @@ module API
end
desc 'Workhorse upload model package file' do
- detail 'Introduced in GitLab 16.1'
+ detail 'Introduced in GitLab 16.2'
success code: 201
failure [
{ code: 401, message: 'Unauthorized' },
@@ -91,7 +91,12 @@ module API
bad_request!('File is too large') if max_file_size_exceeded?
- create_package_file_params = declared(params).merge(build: current_authenticated_job)
+ create_package_file_params = declared(params).merge(
+ build: current_authenticated_job,
+ package_name: params[:model_name],
+ package_version: params[:model_version]
+ )
+
package_file = ::Packages::MlModel::CreatePackageFileService
.new(project, current_user, create_package_file_params)
.execute
@@ -104,6 +109,26 @@ module API
forbidden!
end
+
+ desc 'Download an ml_model package file' do
+ detail 'This feature was introduced in GitLab 16.2'
+ success code: 200
+ failure [
+ { code: 401, message: 'Unauthorized' },
+ { code: 403, message: 'Forbidden' },
+ { code: 404, message: 'Not Found' }
+ ]
+ tags %w[ml_model_registry]
+ end
+ get do
+ authorize_read_package!(project)
+
+ package = ::Packages::MlModel::PackageFinder.new(project)
+ .execute!(params[:model_name], params[:model_version])
+ package_file = ::Packages::PackageFileFinder.new(package, params[:file_name]).execute!
+
+ present_package_file!(package_file)
+ end
end
end
end