diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-11-15 12:15:53 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-11-15 12:15:53 +0300 |
commit | 3ff1605f7d054d6dfc360c09ba5860e81250d5e4 (patch) | |
tree | 610db341b8aaae962fc5f32c2004e6dacc3e9a39 /app | |
parent | de671a855fff66bcb0eae10b654e806b777f0751 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r-- | app/graphql/resolvers/ml/model_detail_resolver.rb | 27 | ||||
-rw-r--r-- | app/graphql/types/ml/model_type.rb | 19 | ||||
-rw-r--r-- | app/graphql/types/ml/model_version_links_type.rb | 17 | ||||
-rw-r--r-- | app/graphql/types/ml/model_version_type.rb | 22 | ||||
-rw-r--r-- | app/graphql/types/query_type.rb | 6 | ||||
-rw-r--r-- | app/views/groups/settings/_permissions.html.haml | 1 |
6 files changed, 92 insertions, 0 deletions
diff --git a/app/graphql/resolvers/ml/model_detail_resolver.rb b/app/graphql/resolvers/ml/model_detail_resolver.rb new file mode 100644 index 00000000000..01c025c1d8a --- /dev/null +++ b/app/graphql/resolvers/ml/model_detail_resolver.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +module Resolvers + module Ml + class ModelDetailResolver < Resolvers::BaseResolver + extension ::Gitlab::Graphql::Limit::FieldCallCount, limit: 1 + + type ::Types::Ml::ModelType, null: true + + argument :id, ::Types::GlobalIDType[::Ml::Model], + required: true, + description: 'ID of the model.' + + def resolve(id:) + Gitlab::Graphql::Lazy.with_value(find_object(id: id)) do |ml_model| + ml_model if current_user.can?(:read_model_registry, ml_model&.project) + end + end + + private + + def find_object(id:) + GitlabSchema.find_by_gid(id) + end + end + end +end diff --git a/app/graphql/types/ml/model_type.rb b/app/graphql/types/ml/model_type.rb new file mode 100644 index 00000000000..2d686b185dd --- /dev/null +++ b/app/graphql/types/ml/model_type.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module Types + module Ml + # rubocop: disable Graphql/AuthorizeTypes -- authorization in ModelDetailsResolver + class ModelType < ::Types::BaseObject + graphql_name 'MlModel' + description 'Machine learning model in the model registry' + + field :id, ::Types::GlobalIDType[::Ml::Model], null: false, description: 'ID of the model.' + + field :name, ::GraphQL::Types::String, null: false, description: 'Name of the model.' + + field :versions, ::Types::Ml::ModelVersionType.connection_type, null: true, + description: 'Versions of the model.' + end + # rubocop: enable Graphql/AuthorizeTypes + end +end diff --git a/app/graphql/types/ml/model_version_links_type.rb b/app/graphql/types/ml/model_version_links_type.rb new file mode 100644 index 00000000000..142f62bfad2 --- /dev/null +++ b/app/graphql/types/ml/model_version_links_type.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module Types + module Ml + # rubocop: disable Graphql/AuthorizeTypes -- authorization in ModelDetailsResolver + class ModelVersionLinksType < BaseObject + graphql_name 'MLModelVersionLinks' + description 'Represents links to perform actions on the model version' + + present_using ::Ml::ModelVersionPresenter + + field :show_path, GraphQL::Types::String, + null: true, description: 'Path to the details page of the model version.', method: :path + end + # rubocop: enable Graphql/AuthorizeTypes + end +end diff --git a/app/graphql/types/ml/model_version_type.rb b/app/graphql/types/ml/model_version_type.rb new file mode 100644 index 00000000000..15c36a7a0d8 --- /dev/null +++ b/app/graphql/types/ml/model_version_type.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module Types + module Ml + # rubocop: disable Graphql/AuthorizeTypes -- authorization in ModelDetailsResolver + class ModelVersionType < ::Types::BaseObject + graphql_name 'MlModelVersion' + description 'Version of a machine learning model' + + connection_type_class Types::LimitedCountableConnectionType + + field :id, ::Types::GlobalIDType[::Ml::ModelVersion], null: false, description: 'ID of the model version.' + + field :created_at, Types::TimeType, null: false, description: 'Date of creation.' + field :version, ::GraphQL::Types::String, null: false, description: 'Name of the version.' + + field :_links, ::Types::Ml::ModelVersionLinksType, null: false, method: :itself, + description: 'Map of links to perform actions on the model version.' + end + # rubocop: enable Graphql/AuthorizeTypes + end +end diff --git a/app/graphql/types/query_type.rb b/app/graphql/types/query_type.rb index 173e877d86c..6b7814754a4 100644 --- a/app/graphql/types/query_type.rb +++ b/app/graphql/types/query_type.rb @@ -212,6 +212,12 @@ module Types description: 'Abuse report labels.', resolver: Resolvers::AbuseReportLabelsResolver + field :ml_model, ::Types::Ml::ModelType, + null: true, + alpha: { milestone: '16.7' }, + description: 'Find machine learning models.', + resolver: Resolvers::Ml::ModelDetailResolver + def design_management DesignManagementObject.new(nil) end diff --git a/app/views/groups/settings/_permissions.html.haml b/app/views/groups/settings/_permissions.html.haml index 8ea80700340..b1fa63dbf56 100644 --- a/app/views/groups/settings/_permissions.html.haml +++ b/app/views/groups/settings/_permissions.html.haml @@ -44,6 +44,7 @@ = render 'groups/settings/subgroup_creation_level', f: f, group: @group = render_if_exists 'groups/settings/prevent_forking', f: f, group: @group = render_if_exists 'groups/settings/service_access_tokens_expiration_enforced', f: f, group: @group + = render_if_exists 'groups/settings/enforce_ssh_certificates', f: f, group: @group = render 'groups/settings/two_factor_auth', f: f, group: @group = render_if_exists 'groups/personal_access_token_expiration_policy', f: f, group: @group = render 'groups/settings/membership', f: f, group: @group |