summaryrefslogtreecommitdiff
path: root/lib/api/entities/ci
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/entities/ci')
-rw-r--r--lib/api/entities/ci/job.rb2
-rw-r--r--lib/api/entities/ci/job_request/artifacts.rb20
-rw-r--r--lib/api/entities/ci/job_request/cache.rb13
-rw-r--r--lib/api/entities/ci/job_request/credentials.rb13
-rw-r--r--lib/api/entities/ci/job_request/dependency.rb14
-rw-r--r--lib/api/entities/ci/job_request/git_info.rb16
-rw-r--r--lib/api/entities/ci/job_request/image.rb14
-rw-r--r--lib/api/entities/ci/job_request/job_info.rb14
-rw-r--r--lib/api/entities/ci/job_request/port.rb13
-rw-r--r--lib/api/entities/ci/job_request/response.rb39
-rw-r--r--lib/api/entities/ci/job_request/runner_info.rb14
-rw-r--r--lib/api/entities/ci/job_request/service.rb13
-rw-r--r--lib/api/entities/ci/job_request/step.rb13
-rw-r--r--lib/api/entities/ci/runner.rb19
-rw-r--r--lib/api/entities/ci/runner_details.rb36
-rw-r--r--lib/api/entities/ci/runner_registration_details.rb11
16 files changed, 263 insertions, 1 deletions
diff --git a/lib/api/entities/ci/job.rb b/lib/api/entities/ci/job.rb
index 76487ed01dc..cf87684ce55 100644
--- a/lib/api/entities/ci/job.rb
+++ b/lib/api/entities/ci/job.rb
@@ -7,7 +7,7 @@ module API
# artifacts_file is included in job_artifacts, but kept for backward compatibility (remove in api/v5)
expose :artifacts_file, using: ::API::Entities::Ci::JobArtifactFile, if: -> (job, opts) { job.artifacts? }
expose :job_artifacts, as: :artifacts, using: ::API::Entities::Ci::JobArtifact
- expose :runner, with: ::API::Entities::Runner
+ expose :runner, with: ::API::Entities::Ci::Runner
expose :artifacts_expire_at
expose :tag_list do |job|
job.tags.map(&:name).sort
diff --git a/lib/api/entities/ci/job_request/artifacts.rb b/lib/api/entities/ci/job_request/artifacts.rb
new file mode 100644
index 00000000000..4b09db40504
--- /dev/null
+++ b/lib/api/entities/ci/job_request/artifacts.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module Ci
+ module JobRequest
+ class Artifacts < Grape::Entity
+ expose :name
+ expose :untracked
+ expose :paths
+ expose :exclude, expose_nil: false
+ expose :when
+ expose :expire_in
+ expose :artifact_type
+ expose :artifact_format
+ end
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/ci/job_request/cache.rb b/lib/api/entities/ci/job_request/cache.rb
new file mode 100644
index 00000000000..9820719b4f0
--- /dev/null
+++ b/lib/api/entities/ci/job_request/cache.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module Ci
+ module JobRequest
+ class Cache < Grape::Entity
+ expose :key, :untracked, :paths, :policy, :when
+ end
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/ci/job_request/credentials.rb b/lib/api/entities/ci/job_request/credentials.rb
new file mode 100644
index 00000000000..57cdd9c9b19
--- /dev/null
+++ b/lib/api/entities/ci/job_request/credentials.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module Ci
+ module JobRequest
+ class Credentials < Grape::Entity
+ expose :type, :url, :username, :password
+ end
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/ci/job_request/dependency.rb b/lib/api/entities/ci/job_request/dependency.rb
new file mode 100644
index 00000000000..2c6ed417714
--- /dev/null
+++ b/lib/api/entities/ci/job_request/dependency.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module Ci
+ module JobRequest
+ class Dependency < Grape::Entity
+ expose :id, :name, :token
+ expose :artifacts_file, using: Entities::Ci::JobArtifactFile, if: ->(job, _) { job.artifacts? }
+ end
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/ci/job_request/git_info.rb b/lib/api/entities/ci/job_request/git_info.rb
new file mode 100644
index 00000000000..872c896b870
--- /dev/null
+++ b/lib/api/entities/ci/job_request/git_info.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module Ci
+ module JobRequest
+ class GitInfo < Grape::Entity
+ expose :repo_url, :ref, :sha, :before_sha
+ expose :ref_type
+ expose :refspecs
+ expose :git_depth, as: :depth
+ end
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/ci/job_request/image.rb b/lib/api/entities/ci/job_request/image.rb
new file mode 100644
index 00000000000..8e404a8fa02
--- /dev/null
+++ b/lib/api/entities/ci/job_request/image.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module Ci
+ module JobRequest
+ class Image < Grape::Entity
+ expose :name, :entrypoint
+ expose :ports, using: Entities::Ci::JobRequest::Port
+ end
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/ci/job_request/job_info.rb b/lib/api/entities/ci/job_request/job_info.rb
new file mode 100644
index 00000000000..5c3f4b08af2
--- /dev/null
+++ b/lib/api/entities/ci/job_request/job_info.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module Ci
+ module JobRequest
+ class JobInfo < Grape::Entity
+ expose :id, :name, :stage
+ expose :project_id, :project_name
+ end
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/ci/job_request/port.rb b/lib/api/entities/ci/job_request/port.rb
new file mode 100644
index 00000000000..31aa06ff843
--- /dev/null
+++ b/lib/api/entities/ci/job_request/port.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module Ci
+ module JobRequest
+ class Port < Grape::Entity
+ expose :number, :protocol, :name
+ end
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/ci/job_request/response.rb b/lib/api/entities/ci/job_request/response.rb
new file mode 100644
index 00000000000..86c945cb236
--- /dev/null
+++ b/lib/api/entities/ci/job_request/response.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module Ci
+ module JobRequest
+ class Response < Grape::Entity
+ expose :id
+ expose :token
+ expose :allow_git_fetch
+
+ expose :job_info, using: Entities::Ci::JobRequest::JobInfo do |model|
+ model
+ end
+
+ expose :git_info, using: Entities::Ci::JobRequest::GitInfo do |model|
+ model
+ end
+
+ expose :runner_info, using: Entities::Ci::JobRequest::RunnerInfo do |model|
+ model
+ end
+
+ expose :runner_variables, as: :variables
+ expose :steps, using: Entities::Ci::JobRequest::Step
+ expose :image, using: Entities::Ci::JobRequest::Image
+ expose :services, using: Entities::Ci::JobRequest::Service
+ expose :artifacts, using: Entities::Ci::JobRequest::Artifacts
+ expose :cache, using: Entities::Ci::JobRequest::Cache
+ expose :credentials, using: Entities::Ci::JobRequest::Credentials
+ expose :all_dependencies, as: :dependencies, using: Entities::Ci::JobRequest::Dependency
+ expose :features
+ end
+ end
+ end
+ end
+end
+
+API::Entities::Ci::JobRequest::Response.prepend_mod_with('API::Entities::Ci::JobRequest::Response')
diff --git a/lib/api/entities/ci/job_request/runner_info.rb b/lib/api/entities/ci/job_request/runner_info.rb
new file mode 100644
index 00000000000..96336a1080e
--- /dev/null
+++ b/lib/api/entities/ci/job_request/runner_info.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module Ci
+ module JobRequest
+ class RunnerInfo < Grape::Entity
+ expose :metadata_timeout, as: :timeout
+ expose :runner_session_url
+ end
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/ci/job_request/service.rb b/lib/api/entities/ci/job_request/service.rb
new file mode 100644
index 00000000000..f89b95c1d5c
--- /dev/null
+++ b/lib/api/entities/ci/job_request/service.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module Ci
+ module JobRequest
+ class Service < Entities::Ci::JobRequest::Image
+ expose :alias, :command
+ end
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/ci/job_request/step.rb b/lib/api/entities/ci/job_request/step.rb
new file mode 100644
index 00000000000..2a0c4cd032e
--- /dev/null
+++ b/lib/api/entities/ci/job_request/step.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module Ci
+ module JobRequest
+ class Step < Grape::Entity
+ expose :name, :script, :timeout, :when, :allow_failure
+ end
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/ci/runner.rb b/lib/api/entities/ci/runner.rb
new file mode 100644
index 00000000000..ede698696de
--- /dev/null
+++ b/lib/api/entities/ci/runner.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module Ci
+ class Runner < Grape::Entity
+ expose :id
+ expose :description
+ expose :ip_address
+ expose :active
+ expose :instance_type?, as: :is_shared
+ expose :runner_type
+ expose :name
+ expose :online?, as: :online
+ expose :status
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/ci/runner_details.rb b/lib/api/entities/ci/runner_details.rb
new file mode 100644
index 00000000000..9d44da7e5b3
--- /dev/null
+++ b/lib/api/entities/ci/runner_details.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module Ci
+ class RunnerDetails < Runner
+ expose :tag_list
+ expose :run_untagged
+ expose :locked
+ expose :maximum_timeout
+ expose :access_level
+ expose :version, :revision, :platform, :architecture
+ expose :contacted_at
+
+ # rubocop: disable CodeReuse/ActiveRecord
+ expose :projects, with: Entities::BasicProjectDetails do |runner, options|
+ if options[:current_user].admin? # rubocop: disable Cop/UserAdmin
+ runner.projects
+ else
+ options[:current_user].authorized_projects.where(id: runner.projects)
+ end
+ end
+ # rubocop: enable CodeReuse/ActiveRecord
+ # rubocop: disable CodeReuse/ActiveRecord
+ expose :groups, with: Entities::BasicGroupDetails do |runner, options|
+ if options[:current_user].admin? # rubocop: disable Cop/UserAdmin
+ runner.groups
+ else
+ options[:current_user].authorized_groups.where(id: runner.groups)
+ end
+ end
+ # rubocop: enable CodeReuse/ActiveRecord
+ end
+ end
+ end
+end
diff --git a/lib/api/entities/ci/runner_registration_details.rb b/lib/api/entities/ci/runner_registration_details.rb
new file mode 100644
index 00000000000..fa7e44c9e40
--- /dev/null
+++ b/lib/api/entities/ci/runner_registration_details.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module Ci
+ class RunnerRegistrationDetails < Grape::Entity
+ expose :id, :token
+ end
+ end
+ end
+end