diff options
Diffstat (limited to 'lib/api/ml_model_packages.rb')
-rw-r--r-- | lib/api/ml_model_packages.rb | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/lib/api/ml_model_packages.rb b/lib/api/ml_model_packages.rb index 8a7a8fc9525..85c8146dda8 100644 --- a/lib/api/ml_model_packages.rb +++ b/lib/api/ml_model_packages.rb @@ -23,8 +23,8 @@ module API end authenticate_with do |accept| - accept.token_types(:personal_access_token, :deploy_token, :job_token) - .sent_through(:http_token) + accept.token_types(:personal_access_token, :job_token) + .sent_through(:http_bearer_token) end helpers do @@ -38,6 +38,15 @@ module API def max_file_size_exceeded? project.actual_limits.exceeded?(:ml_model_max_file_size, params[:file].size) end + + def find_model_version! + ::Ml::ModelVersion.by_project_id_name_and_version(project.id, params[:model_name], params[:model_version]) || + not_found! + end + + def model_version + @model_version ||= find_model_version! + end end params do @@ -88,10 +97,12 @@ module API end put do authorize_upload!(project) + not_found! unless can?(current_user, :write_model_registry, project) bad_request!('File is too large') if max_file_size_exceeded? create_package_file_params = declared(params).merge( + model_version: model_version, build: current_authenticated_job, package_name: params[:model_name], package_version: params[:model_version] @@ -123,9 +134,7 @@ module API 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! + package_file = ::Packages::PackageFileFinder.new(model_version.package, params[:file_name]).execute! present_package_file!(package_file) end |