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
path: root/app
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-11-15 12:15:53 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-11-15 12:15:53 +0300
commit3ff1605f7d054d6dfc360c09ba5860e81250d5e4 (patch)
tree610db341b8aaae962fc5f32c2004e6dacc3e9a39 /app
parentde671a855fff66bcb0eae10b654e806b777f0751 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r--app/graphql/resolvers/ml/model_detail_resolver.rb27
-rw-r--r--app/graphql/types/ml/model_type.rb19
-rw-r--r--app/graphql/types/ml/model_version_links_type.rb17
-rw-r--r--app/graphql/types/ml/model_version_type.rb22
-rw-r--r--app/graphql/types/query_type.rb6
-rw-r--r--app/views/groups/settings/_permissions.html.haml1
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