Packages
step_flow
1.7.2-rc2
1.9.0-rc2
1.9.0-rc1
1.9.0-rc0
1.8.2
1.8.1
1.8.1-rc8
1.8.1-rc7
1.8.1-rc6
1.8.1-rc5
1.8.1-rc4
1.8.1-rc3
1.8.1-rc2
1.8.1-rc1
1.8.1-rc0
1.8.0
1.8.0-rc3
1.8.0-rc2
1.8.0-rc1
1.8.0-rc0
1.7.3
1.7.3-rc4
1.7.3-rc3
1.7.3-rc2
1.7.3-rc1
1.7.3-rc0
1.7.2
1.7.2-rc4
1.7.2-rc3
1.7.2-rc2
1.7.2-rc1
1.7.2-rc0
1.7.1
1.7.0
1.7.0-rc1
1.7.0-rc0
1.6.1
1.6.1-rc1
1.6.1-rc0
1.6.0
1.6.0-rc9
1.6.0-rc8
1.6.0-rc7
1.6.0-rc6
1.6.0-rc5
1.6.0-rc4
1.6.0-rc3
1.6.0-rc20
1.6.0-rc2
1.6.0-rc19
1.6.0-rc18
1.6.0-rc17
1.6.0-rc16
1.6.0-rc15
1.6.0-rc14
1.6.0-rc13
1.6.0-rc12
1.6.0-rc11
1.6.0-rc10
1.6.0-rc1
1.5.0
1.5.0-rc1
1.4.2-rc2
1.4.2-rc1
1.4.1
1.4.1-rc1
1.4.0
1.4.0-rc4
1.4.0-rc3
1.4.0-rc2
1.4.0-rc1
1.3.1
1.3.0
1.3.0-rc
1.2.0
1.1.0
1.0.0
1.0.0-rc9
1.0.0-rc8
1.0.0-rc7
1.0.0-rc6
1.0.0-rc5
1.0.0-rc1
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.4
0.0.3
0.0.2
0.0.1
Step flow manager for Elixir applications
Current section
Files
Jump to
Current section
Files
lib/step_flow/web_controllers/job.ex
defmodule StepFlow.WebController.Job do
use StepFlow, :controller
use OpenApiSpex.ControllerSpecs
alias StepFlow.Jobs
alias StepFlow.Repo
alias StepFlow.WebController.Helpers
alias StepFlow.WebController.OpenApiSchemas
alias StepFlow.Workflows
@moduledoc false
tags ["Jobs"]
security [%{"authorization" => %OpenApiSpex.SecurityScheme{type: "http", scheme: "bearer"}}]
action_fallback(ExBackendWeb.WebController.Fallback)
operation :index,
summary: "List jobs",
description: "List jobs",
type: :object,
parameters: [
workflow_id: [
in: :query,
description: "Workflow identifier",
type: :string,
example: "my_workflow"
],
job_type: [
in: :query,
description: "Job type",
type: :string,
example: "transfer"
],
name: [
in: :query,
description: "Job name",
type: :string,
example: "my_job"
],
step_id: [
in: :query,
description: "Step ID",
type: :integer,
example: 2
],
status: [
in: :query,
description: "Status",
type: :string,
example: "completed"
]
],
responses: [
ok: {"Jobs", "application/json", OpenApiSchemas.Jobs.Jobs},
forbidden: "Forbidden"
]
def index(%Plug.Conn{assigns: %{current_user: user}} = conn, params) do
jobs =
params
|> Map.put("roles", user.roles)
|> Jobs.list_jobs()
conn
|> put_view(StepFlow.JobView)
|> render("index.json", jobs: jobs)
end
def index(conn, _) do
conn
|> put_status(:forbidden)
|> put_view(StepFlow.JobView)
|> render("error.json",
errors: %{reason: "Forbidden to view jobs."}
)
end
operation :show,
summary: "Show job",
description: "Show job by id",
type: :object,
parameters: [
id: [
in: :path,
description: "Job ID",
type: :integer,
example: 1
]
],
responses: [
ok: {"Job", "application/json", OpenApiSchemas.Jobs.Job},
forbidden: "Forbidden",
not_found: "Not Found"
]
def show(%Plug.Conn{assigns: %{current_user: user}} = conn, %{"id" => id}) do
job =
Jobs.get_job!(id)
|> Repo.preload([:status, child_workflow: [:jobs, :artifacts, :status]])
workflow = Workflows.get_workflow_for_job!(id)
if Helpers.has_right?("workflow::" <> workflow.identifier, user, "view") do
conn
|> put_view(StepFlow.JobView)
|> render("show.json", job: job)
else
conn
|> put_status(:forbidden)
|> put_view(StepFlow.JobView)
|> render("error.json",
errors: %{reason: "Forbidden to view this job."}
)
end
end
def show(conn, _) do
conn
|> put_status(:forbidden)
|> put_view(StepFlow.WorkflowDefinitionView)
|> render("error.json",
errors: %{reason: "Forbidden to show workflow with this identifier"}
)
end
operation :create, false
end