From e7d441bcff3212f2c165cea6087e219ee36e1abb Mon Sep 17 00:00:00 2001
From: stuartc Registry process to query and maintain a list of adaptors available for
writing jobs. Currently it queries NPM for all modules in the Usage Caching By default the results are cached to disk, and will be reused every start. In order to disable or configure caching pass see: The process uses Caching By default the results are cached to disk, and will be reused every start. In order to disable or configure caching pass see: The process uses Timeouts There is a 'general' timeout of 30s, this is used for GenServer calls like
Destructures an NPM style package name into module name and version. Example Destructures an NPM style package name into module name and version. Example The OpenFn CLI returns JSON formatted log lines, which are decoded and added
-to a There are two kinds of output: These are usually for general logging, and debugging. The above is the equivalent of the output of a commandapply_user_email(user, password, attrs)
Examples
-
+iex> apply_user_email(user, "valid password", %{email: ...})
-{:ok, %User{}}role: :superuser
-iex> apply_user_email(user, "invalid password", %{email: ...})
-{:error, %Ecto.Changeset{}}
iex> apply_user_email(user, "valid password", %{email: ...})
+{:ok, %User{}}role: :superuser
+iex> apply_user_email(user, "invalid password", %{email: ...})
+{:error, %Ecto.Changeset{}}
change_scheduled_deletion(user, attrs \\ %{
Examples
-
+iex> change_scheduled_deletion(user)
-%Ecto.Changeset{data: %User{}}
iex> change_scheduled_deletion(user)
+%Ecto.Changeset{data: %User{}}
change_superuser_registration(attrs \\ %{})
Examples
-
+iex> change_superuser_registration(user)
-%Ecto.Changeset{data: %User{}}
iex> change_superuser_registration(user)
+%Ecto.Changeset{data: %User{}}
change_user_email(user, attrs \\ %{})
Examples
-
+iex> change_user_email(user)
-%Ecto.Changeset{data: %User{}}
iex> change_user_email(user)
+%Ecto.Changeset{data: %User{}}
change_user_password(user, attrs \\ %{})
Examples
-
+iex> change_user_password(user)
-%Ecto.Changeset{data: %User{}}
iex> change_user_password(user)
+%Ecto.Changeset{data: %User{}}
change_user_registration(attrs \\ %{})
Examples
-
+iex> change_user_registration(user)
-%Ecto.Changeset{data: %User{}}
iex> change_user_registration(user)
+%Ecto.Changeset{data: %User{}}
delete_token(token)
Examples
-iex> delete_token(token)
-{:ok, %UserToken{}}
+
+iex> delete_token(token)
+{:error, %Ecto.Changeset{}}iex> delete_token(token)
+{:ok, %UserToken{}}
-iex> delete_token(token)
-{:error, %Ecto.Changeset{}}
delete_user(user)
Examples
-iex> delete_user(user)
-{:ok, %User{}}
+
+iex> delete_user(user)
+{:error, %Ecto.Changeset{}}iex> delete_user(user)
+{:ok, %User{}}
-iex> delete_user(user)
-{:error, %Ecto.Changeset{}}
deliver_update_email_instructions(user, cur
Examples
-
+iex> deliver_update_email_instructions(user, current_email, &Routes.user_update_email_url(conn, :edit, &1))
-{:ok, %{to: ..., body: ...}}
iex> deliver_update_email_instructions(user, current_email, &Routes.user_update_email_url(conn, :edit, &1))
+{:ok, %{to: ..., body: ...}}
deliver_user_confirmation_instructions(user
Examples
-
iex> deliver_user_confirmation_instructions(user, &Routes.user_confirmation_url(conn, :edit, &1))
-{:ok, %{to: ..., body: ...}}
+
+iex> deliver_user_confirmation_instructions(confirmed_user, &Routes.user_confirmation_url(conn, :edit, &1))
+{:error, :already_confirmed}iex> deliver_user_confirmation_instructions(user, &Routes.user_confirmation_url(conn, :edit, &1))
+{:ok, %{to: ..., body: ...}}
-iex> deliver_user_confirmation_instructions(confirmed_user, &Routes.user_confirmation_url(conn, :edit, &1))
-{:error, :already_confirmed}
deliver_user_reset_password_instructions(us
Examples
-
+iex> deliver_user_reset_password_instructions(user, &Routes.user_reset_password_url(conn, :edit, &1))
-{:ok, %{to: ..., body: ...}}
iex> deliver_user_reset_password_instructions(user, &Routes.user_reset_password_url(conn, :edit, &1))
+{:ok, %{to: ..., body: ...}}
get_token!(id)
Examples
-iex> get_token!(123)
-%UserToken{}
+
iex> get_token!(123)
+%UserToken{}
-iex> get_token!(456)
+iex> get_token!(456)
** (Ecto.NoResultsError)
get_user!(id)
Examples
-iex> get_user!(123)
-%User{}
+
@@ -1348,10 +1348,10 @@ iex> get_user!(123)
+%User{}
-iex> get_user!(456)
+iex> get_user!(456)
** (Ecto.NoResultsError)
get_user_by_email(email)
Examples
-iex> get_user_by_email("foo@example.com")
-%User{}
+
@@ -1380,10 +1380,10 @@ iex> get_user_by_email("foo@example.com")
+%User{}
-iex> get_user_by_email("unknown@example.com")
+iex> get_user_by_email("unknown@example.com")
nil
get_user_by_email_and_password(email, passw
Examples
-
iex> get_user_by_email_and_password("foo@example.com", "correct_password")
-%User{}
+
@@ -1412,10 +1412,10 @@ iex> get_user_by_email_and_password("foo@example.com", "correct_password")
+%User{}
-iex> get_user_by_email_and_password("foo@example.com", "invalid_password")
+iex> get_user_by_email_and_password("foo@example.com", "invalid_password")
nil
get_user_by_reset_password_token(token)
Examples
-iex> get_user_by_reset_password_token("validtoken")
-%User{}
+
@@ -1583,8 +1583,8 @@ iex> get_user_by_reset_password_token("validtoken")
+%User{}
-iex> get_user_by_reset_password_token("invalidtoken")
+iex> get_user_by_reset_password_token("invalidtoken")
nil
list_users()
Examples
-
+iex> list_users()
-[%User{}, ...]
iex> list_users()
+[%User{}, ...]
register_superuser(attrs)
Examples
-iex> register_superuser(%{field: value})
-{:ok, %User{}}
+
+iex> register_superuser(%{field: bad_value})
+{:error, %Ecto.Changeset{}}iex> register_superuser(%{field: value})
+{:ok, %User{}}
-iex> register_superuser(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
register_user(attrs)
Examples
-iex> register_user(%{field: value})
-{:ok, %User{}}
+
+iex> register_user(%{field: bad_value})
+{:error, %Ecto.Changeset{}}iex> register_user(%{field: value})
+{:ok, %User{}}
-iex> register_user(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
reset_user_password(user, attrs)
Examples
-iex> reset_user_password(user, %{password: "new long password", password_confirmation: "new long password"})
-{:ok, %User{}}
+
+iex> reset_user_password(user, %{password: "valid", password_confirmation: "not the same"})
+{:error, %Ecto.Changeset{}}iex> reset_user_password(user, %{password: "new long password", password_confirmation: "new long password"})
+{:ok, %User{}}
-iex> reset_user_password(user, %{password: "valid", password_confirmation: "not the same"})
-{:error, %Ecto.Changeset{}}
update_user_password(user, password, attrs)
Examples
-
iex> update_user_password(user, "valid password", %{password: ...})
-{:ok, %User{}}
+
+iex> update_user_password(user, "invalid password", %{password: ...})
+{:error, %Ecto.Changeset{}}iex> update_user_password(user, "valid password", %{password: ...})
+{:ok, %User{}}
-iex> update_user_password(user, "invalid password", %{password: ...})
-{:error, %Ecto.Changeset{}}
request(request)
Examples
-request = %HTTPoison.Request{
+
+request(request)request = %HTTPoison.Request{
method: :post,
url: "https://my.website.com",
body: "{\"foo\": 3}",
- headers: [{"Accept", "application/json"}]
-}
+ headers: [{"Accept", "application/json"}]
+}
-request(request)
request(method, url, body \\ "",
Examples
-
+request(:post, "https://my.website.com", "{\"foo\": 3}", [{"Accept", "application/json"}])
request(:post, "https://my.website.com", "{\"foo\": 3}", [{"Accept", "application/json"}])
@openfn
organization and
filters out modules that are known not to be adaptors.# Starting the process
-AdaptorRegistry.start_link()
+AdaptorRegistry.start_link()
# Getting a list of all adaptors
-Lightning.AdaptorRegistry.AdaptorRegistry.all()
start_link/1
.:continue
to return before the adaptors have been queried.
+start_link/1
.:continue
to return before the adaptors have been queried.
This does mean that the first call to the process will be delayed until
the handle_continue/2
has finished.all/1
and also internally when the modules are being queried. NPM can
@@ -411,10 +411,10 @@ resolve_package_name(package_name)
-
+iex> resolve_package_name("@openfn/language-salesforce@1.2.3")
-{ "@openfn/language-salesforce", "1.2.3" }
-iex> resolve_package_name("@openfn/language-salesforce")
-{ "@openfn/language-salesforce", nil }
iex> resolve_package_name("@openfn/language-salesforce@1.2.3")
+{ "@openfn/language-salesforce", "1.2.3" }
+iex> resolve_package_name("@openfn/language-salesforce")
+{ "@openfn/language-salesforce", nil }
create_attempt(work_order, job, reason)
Examples
-iex> create_attempt(%{field: value})
-{:ok, %Attempt{}}
+
+iex> create_attempt(%{field: bad_value})
+{:error, %Ecto.Changeset{}}iex> create_attempt(%{field: value})
+{:ok, %Attempt{}}
-iex> create_attempt(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
request(request)
Examples
-request = %HTTPoison.Request{
+
+request(request)request = %HTTPoison.Request{
method: :post,
url: "https://my.website.com",
body: "{\"foo\": 3}",
- headers: [{"Accept", "application/json"}]
-}
+ headers: [{"Accept", "application/json"}]
+}
-request(request)
request(method, url, body \\ "",
Examples
-
+request(:post, "https://my.website.com", "{\"foo\": 3}", [{"Accept", "application/json"}])
request(:post, "https://my.website.com", "{\"foo\": 3}", [{"Accept", "application/json"}])
Logs
Result
struct.{"level":"<<level>>","name":"<<module>>","message":"..."],"time":<<timestamp>>}
{"message":["<<message|filepath|output>>"]}
Result
struct.
There are two kinds of output:
{"level":"<<level>>","name":"<<module>>","message":"..."],"time":<<timestamp>>}
These are usually for general logging, and debugging.
{"message":["<<message|filepath|output>>"]}
The above is the equivalent of the output of a command
diff --git a/Lightning.CLI.html b/Lightning.CLI.html index df6bf65211..68f5da17ac 100644 --- a/Lightning.CLI.html +++ b/Lightning.CLI.html @@ -13,7 +13,7 @@ - + diff --git a/Lightning.Credentials.Audit.html b/Lightning.Credentials.Audit.html index 5429dbf28f..01cf079791 100644 --- a/Lightning.Credentials.Audit.html +++ b/Lightning.Credentials.Audit.html @@ -13,7 +13,7 @@ - + diff --git a/Lightning.Credentials.Credential.html b/Lightning.Credentials.Credential.html index 021f4bb057..b65e702877 100644 --- a/Lightning.Credentials.Credential.html +++ b/Lightning.Credentials.Credential.html @@ -13,7 +13,7 @@ - + diff --git a/Lightning.Credentials.Schema.html b/Lightning.Credentials.Schema.html index ab091c954c..0cca66a49a 100644 --- a/Lightning.Credentials.Schema.html +++ b/Lightning.Credentials.Schema.html @@ -13,7 +13,7 @@ - + diff --git a/Lightning.Credentials.SchemaDocument.html b/Lightning.Credentials.SchemaDocument.html index e8d85818b0..6444863ea3 100644 --- a/Lightning.Credentials.SchemaDocument.html +++ b/Lightning.Credentials.SchemaDocument.html @@ -13,7 +13,7 @@ - + diff --git a/Lightning.Credentials.SensitiveValues.html b/Lightning.Credentials.SensitiveValues.html index 89b31e38f3..977314f56f 100644 --- a/Lightning.Credentials.SensitiveValues.html +++ b/Lightning.Credentials.SensitiveValues.html @@ -13,7 +13,7 @@ - + diff --git a/Lightning.Credentials.html b/Lightning.Credentials.html index fdec6ce080..63b9b3cdbc 100644 --- a/Lightning.Credentials.html +++ b/Lightning.Credentials.html @@ -13,7 +13,7 @@ - + @@ -277,8 +277,8 @@iex> change_credential(credential)
-%Ecto.Changeset{data: %Credential{}}
+iex> change_credential(credential)
+%Ecto.Changeset{data: %Credential{}}
iex> create_credential(%{field: value})
-{:ok, %Credential{}}
+iex> create_credential(%{field: value})
+{:ok, %Credential{}}
-iex> create_credential(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_credential(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
iex> delete_credential(credential)
-{:ok, %Credential{}}
+iex> delete_credential(credential)
+{:ok, %Credential{}}
-iex> delete_credential(credential)
-{:error, %Ecto.Changeset{}}
+iex> delete_credential(credential)
+{:error, %Ecto.Changeset{}}
iex> get_credential!(123)
-%Credential{}
+iex> get_credential!(123)
+%Credential{}
-iex> get_credential!(456)
+iex> get_credential!(456)
** (Ecto.NoResultsError)
iex> can_credential_be_shared_to_user(credential_id, user_id)
-[]
+iex> can_credential_be_shared_to_user(credential_id, user_id)
+[]
-iex> can_credential_be_shared_to_user(credential_id, user_id)
-["52ea8758-6ce5-43d7-912f-6a1e1f11dc55"]
+iex> can_credential_be_shared_to_user(credential_id, user_id)
+["52ea8758-6ce5-43d7-912f-6a1e1f11dc55"]
iex> list_credentials()
-[%Credential{}, ...]
+iex> list_credentials()
+[%Credential{}, ...]
iex> list_credentials_for_user(123)
-[%Credential{user_id: 123}, %Credential{user_id: 123},...]
+iex> list_credentials_for_user(123)
+[%Credential{user_id: 123}, %Credential{user_id: 123},...]
iex> update_credential(credential, %{field: new_value})
-{:ok, %Credential{}}
+iex> update_credential(credential, %{field: new_value})
+{:ok, %Credential{}}
-iex> update_credential(credential, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_credential(credential, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
iex> change_dataclip(dataclip)
-%Ecto.Changeset{data: %Dataclip{}}
+iex> change_dataclip(dataclip)
+%Ecto.Changeset{data: %Dataclip{}}
iex> change_run(run)
-%Ecto.Changeset{data: %Run{}}
+iex> change_run(run)
+%Ecto.Changeset{data: %Run{}}
iex> create_dataclip(%{field: value})
-{:ok, %Dataclip{}}
+iex> create_dataclip(%{field: value})
+{:ok, %Dataclip{}}
-iex> create_dataclip(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_dataclip(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
iex> create_run(%{field: value})
-{:ok, %Run{}}
+iex> create_run(%{field: value})
+{:ok, %Run{}}
-iex> create_run(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_run(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
iex> delete_dataclip(dataclip)
-{:ok, %Dataclip{}}
+iex> delete_dataclip(dataclip)
+{:ok, %Dataclip{}}
-iex> delete_dataclip(dataclip)
-{:error, %Ecto.Changeset{}}
+iex> delete_dataclip(dataclip)
+{:error, %Ecto.Changeset{}}
iex> delete_run(run)
-{:ok, %Run{}}
+iex> delete_run(run)
+{:ok, %Run{}}
-iex> delete_run(run)
-{:error, %Ecto.Changeset{}}
+iex> delete_run(run)
+{:error, %Ecto.Changeset{}}
iex> get_dataclip("27b73932-16c7-4a72-86a3-85d805ccff98")
-%Dataclip{}
+iex> get_dataclip("27b73932-16c7-4a72-86a3-85d805ccff98")
+%Dataclip{}
-iex> get_dataclip("27b73932-16c7-4a72-86a3-85d805ccff98")
+iex> get_dataclip("27b73932-16c7-4a72-86a3-85d805ccff98")
nil
-iex> get_dataclip(%Run{id: "a uuid"})
-%Dataclip{}
+iex> get_dataclip(%Run{id: "a uuid"})
+%Dataclip{}
iex> get_dataclip!(123)
-%Dataclip{}
+iex> get_dataclip!(123)
+%Dataclip{}
-iex> get_dataclip!(456)
+iex> get_dataclip!(456)
** (Ecto.NoResultsError)
iex> get_run!(123)
-%Run{}
+iex> get_run!(123)
+%Run{}
-iex> get_run!(456)
+iex> get_run!(456)
** (Ecto.NoResultsError)
@@ -1064,8 +1064,8 @@ list_dataclips()
Examples
-iex> list_dataclips()
-[%Dataclip{}, ...]
+iex> list_dataclips()
+[%Dataclip{}, ...]
@@ -1174,8 +1174,8 @@ list_runs()
Examples
-iex> list_runs()
-[%Run{}, ...]
+iex> list_runs()
+[%Run{}, ...]
@@ -1330,11 +1330,11 @@ update_dataclip(dataclip, attrs)
Examples
-iex> update_dataclip(dataclip, %{field: new_value})
-{:ok, %Dataclip{}}
+iex> update_dataclip(dataclip, %{field: new_value})
+{:ok, %Dataclip{}}
-iex> update_dataclip(dataclip, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_dataclip(dataclip, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -1362,11 +1362,11 @@ update_run(run, attrs)
Examples
-iex> update_run(run, %{field: new_value})
-{:ok, %Run{}}
+iex> update_run(run, %{field: new_value})
+{:ok, %Run{}}
-iex> update_run(run, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_run(run, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Lightning.InvocationReason.html b/Lightning.InvocationReason.html
index ef0ec6fc59..b650799a6b 100644
--- a/Lightning.InvocationReason.html
+++ b/Lightning.InvocationReason.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.InvocationReasons.html b/Lightning.InvocationReasons.html
index eadcf594fd..6659c1e77c 100644
--- a/Lightning.InvocationReasons.html
+++ b/Lightning.InvocationReasons.html
@@ -13,7 +13,7 @@
-
+
@@ -273,11 +273,11 @@ create_reason(attrs \\ %{})
Examples
-iex> create_reason(%{field: value})
-{:ok, %InvocationReason{}}
+iex> create_reason(%{field: value})
+{:ok, %InvocationReason{}}
-iex> create_reason(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_reason(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Lightning.Jobs.Job.html b/Lightning.Jobs.Job.html
index 417450b586..cfc4929d91 100644
--- a/Lightning.Jobs.Job.html
+++ b/Lightning.Jobs.Job.html
@@ -13,7 +13,7 @@
-
+
@@ -336,17 +336,17 @@ put_workflow(changeset, workflow)
Attaches a workflow to a job, this is useful when you have an unpersisted
Workflow changeset - and want it to be created at the same time as a Job.
Example:
workflow =
- Ecto.Changeset.cast(
- %Lightning.Workflows.Workflow{},
- %{ "project_id" => attrs[:project_id], "id" => Ecto.UUID.generate() },
- [:project_id, :id]
- )
+ Ecto.Changeset.cast(
+ %Lightning.Workflows.Workflow{},
+ %{ "project_id" => attrs[:project_id], "id" => Ecto.UUID.generate() },
+ [:project_id, :id]
+ )
job =
- %Job{}
- |> Ecto.Changeset.change()
- |> Job.put_workflow(workflow)
- |> Job.changeset(attrs)
+ %Job{}
+ |> Ecto.Changeset.change()
+ |> Job.put_workflow(workflow)
+ |> Job.changeset(attrs)
iex> change_job(job)
-%Ecto.Changeset{data: %Job{}}
+iex> change_job(job)
+%Ecto.Changeset{data: %Job{}}
iex> create_job(%{field: value})
-{:ok, %Job{}}
+iex> create_job(%{field: value})
+{:ok, %Job{}}
-iex> create_job(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_job(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
iex> delete_job(job)
-{:ok, %Job{}}
+iex> delete_job(job)
+{:ok, %Job{}}
-iex> delete_job(job)
-{:error, %Ecto.Changeset{}}
+iex> delete_job(job)
+{:error, %Ecto.Changeset{}}
iex> get_job!(123)
-%Job{}
+iex> get_job!(123)
+%Job{}
-iex> get_job!(456)
+iex> get_job!(456)
** (Ecto.NoResultsError)
iex> update_job(job, %{field: new_value})
-{:ok, %Job{}}
+iex> update_job(job, %{field: new_value})
+{:ok, %Job{}}
-iex> update_job(job, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_job(job, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Lightning.MetadataService.Error.html b/Lightning.MetadataService.Error.html
index 114fbe975e..4e54d964c7 100644
--- a/Lightning.MetadataService.Error.html
+++ b/Lightning.MetadataService.Error.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.MetadataService.html b/Lightning.MetadataService.html
index 36fe6abf26..bf86b37713 100644
--- a/Lightning.MetadataService.html
+++ b/Lightning.MetadataService.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Name.html b/Lightning.Name.html
index aa037a4a06..8ba50f1031 100644
--- a/Lightning.Name.html
+++ b/Lightning.Name.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.ObanManager.html b/Lightning.ObanManager.html
index 968b3dce00..4606b8a103 100644
--- a/Lightning.ObanManager.html
+++ b/Lightning.ObanManager.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Pipeline.Runner.Handler.html b/Lightning.Pipeline.Runner.Handler.html
index 0ffa107742..696283f6eb 100644
--- a/Lightning.Pipeline.Runner.Handler.html
+++ b/Lightning.Pipeline.Runner.Handler.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Pipeline.Runner.html b/Lightning.Pipeline.Runner.html
index ecb46e2df4..131a286314 100644
--- a/Lightning.Pipeline.Runner.html
+++ b/Lightning.Pipeline.Runner.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Pipeline.StateAssembler.html b/Lightning.Pipeline.StateAssembler.html
index c3af5a4e73..8989e8f6e4 100644
--- a/Lightning.Pipeline.StateAssembler.html
+++ b/Lightning.Pipeline.StateAssembler.html
@@ -13,7 +13,7 @@
-
+
@@ -121,7 +121,7 @@ For the most common jobs, an inbound webhook will store an :http_request
type
-dataclip. The reason that is created is associated with the dataclip.
At runtime, the initial state for a Run will be in the shape of:
{ "data": <the dataclip>, "configuration": <the job's credential> }
At runtime, the initial state for a Run will be in the shape of:
{ "data": <the dataclip>, "configuration": <the job's credential> }
saved-inputs
diff --git a/Lightning.Pipeline.html b/Lightning.Pipeline.html index 5219145038..30890d1c68 100644 --- a/Lightning.Pipeline.html +++ b/Lightning.Pipeline.html @@ -13,7 +13,7 @@ - + diff --git a/Lightning.Policies.Permissions.html b/Lightning.Policies.Permissions.html index fabea69c81..ecf76a53bd 100644 --- a/Lightning.Policies.Permissions.html +++ b/Lightning.Policies.Permissions.html @@ -13,7 +13,7 @@ - + @@ -115,13 +115,13 @@This module defines a unique interface managing authorizations in Lightning.
Users in Lightning have instance-wide and project-wide roles which determine their level of access to resources in the application. Fo rmore details see the documentation.
These authorizations policies are all implemented under the lib/lightning/policies
folder. In that folder you can find 3 files:
users.ex
file has all the policies for the instances wide access levelsproject_users.ex
file has all the policies for the project wide access levelspermissions.ex
file defines the Lightning.Policies.Permissions.can/4
interface. Which is a wrapper around the Bodyguard.permit/4
function.
-We use that interface to be able to harmonize the use of policies accross the entire app.All the policies are tested in the test/lightning/policies
folder. And the test are written in a way that allows the reader to quickly who can do what in the app.
We have two variants of the Lightning.Policies.Permissions.can/4
interface:
Lightning.Policies.Permissions.can(policy, action, actor, resource)
returns :ok
if the actor can perform the action on the resource and {:error, :unauthorized}
otherwise.Lightning.Policies.Permissions.can?(policy, action, actor, resource)
returns true
if the actor can perform the action on the resource and false
otherwise.Here is an example of how we the Lightning.Policies.Permissions.can/4
interface to check if the a user can edit a job or not
can_edit_job = Lightning.Policies.ProjectUsers |> Lightning.Policies.Permissions.can?(:edit_job, socket.assigns.current_user, socket.assigns.project)
+We use that interface to be able to harmonize the use of policies accross the entire app.All the policies are tested in the test/lightning/policies
folder. And the test are written in a way that allows the reader to quickly who can do what in the app.
We have two variants of the Lightning.Policies.Permissions.can/4
interface:
Lightning.Policies.Permissions.can(policy, action, actor, resource)
returns :ok
if the actor can perform the action on the resource and {:error, :unauthorized}
otherwise.Lightning.Policies.Permissions.can?(policy, action, actor, resource)
returns true
if the actor can perform the action on the resource and false
otherwise.
Here is an example of how we the Lightning.Policies.Permissions.can/4
interface to check if the a user can edit a job or not
can_edit_job = Lightning.Policies.ProjectUsers |> Lightning.Policies.Permissions.can?(:edit_job, socket.assigns.current_user, socket.assigns.project)
-if can_edit_job do
+if can_edit_job do
# allow user to edit the job
-else
+else
# quick user out
-end
+end
iex> can(Lightning.Policies.Users, :create_workflow, user, project)
+iex> can(Lightning.Policies.Users, :create_workflow, user, project)
:ok
-iex> can(Lightning.Policies.Users, :create_project, user, %{})
-{:error, :unauthorized}
+iex> can(Lightning.Policies.Users, :create_project, user, %{})
+{:error, :unauthorized}
iex> can(Lightning.Policies.Users, :create_workflow, user, project)
+iex> can(Lightning.Policies.Users, :create_workflow, user, project)
true
-iex> can(Lightning.Policies.Users, :create_project, user, %{})
+iex> can(Lightning.Policies.Users, :create_project, user, %{})
false
iex> change_project(project)
-%Ecto.Changeset{data: %Project{}}
+iex> change_project(project)
+%Ecto.Changeset{data: %Project{}}
iex> create_project(%{field: value})
-{:ok, %Project{}}
+iex> create_project(%{field: value})
+{:ok, %Project{}}
-iex> create_project(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_project(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
iex> delete_project(project)
-{:ok, %Project{}}
+iex> delete_project(project)
+{:ok, %Project{}}
-iex> delete_project(project)
-{:error, %Ecto.Changeset{}}
+iex> delete_project(project)
+{:error, %Ecto.Changeset{}}
iex> export_project(:yaml, project_id)
-{:ok, string}
+iex> export_project(:yaml, project_id)
+{:ok, string}
iex> get_project!(123)
-%Project{}
+iex> get_project!(123)
+%Project{}
-iex> get_project!(456)
+iex> get_project!(456)
** (Ecto.NoResultsError)
iex> get_project_user!(123)
-%ProjectUser{}
+iex> get_project_user!(123)
+%ProjectUser{}
-iex> get_project_user!(456)
+iex> get_project_user!(456)
** (Ecto.NoResultsError)
@@ -824,16 +824,16 @@ get_project_user_role(user, project)
Examples
-iex> get_project_user_role(user, project)
+iex> get_project_user_role(user, project)
:admin
-iex> get_project_user_role(user, project)
+iex> get_project_user_role(user, project)
:viewer
-iex> get_project_user_role(user, project)
+iex> get_project_user_role(user, project)
:editor
-iex> get_project_user_role(user, project)
+iex> get_project_user_role(user, project)
:owner
@@ -862,10 +862,10 @@ get_project_with_users!(id)
Examples
-iex> get_project!(123)
-%Project{}
+iex> get_project!(123)
+%Project{}
-iex> get_project!(456)
+iex> get_project!(456)
** (Ecto.NoResultsError)
@@ -976,8 +976,8 @@ list_projects()
Examples
-iex> list_projects()
-[%Project{}, ...]
+iex> list_projects()
+[%Project{}, ...]
@@ -1435,11 +1435,11 @@ update_project(project, attrs)
Examples
-iex> update_project(project, %{field: new_value})
-{:ok, %Project{}}
+iex> update_project(project, %{field: new_value})
+{:ok, %Project{}}
-iex> update_project(project, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_project(project, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -1467,11 +1467,11 @@ update_project_user(project_user, attrs)
Examples
-iex> update_project_user(project_user, %{field: new_value})
-{:ok, %ProjectUser{}}
+iex> update_project_user(project_user, %{field: new_value})
+{:ok, %ProjectUser{}}
-iex> update_project_user(projectUser, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_project_user(projectUser, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -1521,8 +1521,8 @@ validate_for_deletion(project, attrs)
Examples
-iex> validate_for_deletion(project)
-%Ecto.Changeset{data: %Project{}}
+iex> validate_for_deletion(project)
+%Ecto.Changeset{data: %Project{}}
diff --git a/Lightning.Release.html b/Lightning.Release.html
index 559dedc168..e22e56b2f1 100644
--- a/Lightning.Release.html
+++ b/Lightning.Release.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Repo.html b/Lightning.Repo.html
index 651be79b6e..9bfca877f2 100644
--- a/Lightning.Repo.html
+++ b/Lightning.Repo.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.RunSearchForm.html b/Lightning.RunSearchForm.html
index f1ed2dd49d..cca1c78b41 100644
--- a/Lightning.RunSearchForm.html
+++ b/Lightning.RunSearchForm.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Runtime.ChildProcess.html b/Lightning.Runtime.ChildProcess.html
index 032605152d..307854a24a 100644
--- a/Lightning.Runtime.ChildProcess.html
+++ b/Lightning.Runtime.ChildProcess.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Runtime.Handler.html b/Lightning.Runtime.Handler.html
index 7d76b72fd3..7ee70d5da2 100644
--- a/Lightning.Runtime.Handler.html
+++ b/Lightning.Runtime.Handler.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Runtime.LogAgent.StringBuffer.html b/Lightning.Runtime.LogAgent.StringBuffer.html
index 7a161fcb73..1376b2934d 100644
--- a/Lightning.Runtime.LogAgent.StringBuffer.html
+++ b/Lightning.Runtime.LogAgent.StringBuffer.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Runtime.LogAgent.html b/Lightning.Runtime.LogAgent.html
index 9ca4ce1472..8a58d55249 100644
--- a/Lightning.Runtime.LogAgent.html
+++ b/Lightning.Runtime.LogAgent.html
@@ -13,7 +13,7 @@
-
+
@@ -115,9 +115,9 @@
Agent facility to consume STDOUT/STDERR byte by byte.
Since it works on a byte by byte basis, you will need to perform line-splitting
-yourself.
Usage:
{:ok, log} = LogAgent.start_link()
-"foo" = LogAgent.process_chunk(log, {:stdout, "foo"})
-"foobar" = LogAgent.process_chunk(log, {:stdout, "bar"})
+yourself.Usage:
{:ok, log} = LogAgent.start_link()
+"foo" = LogAgent.process_chunk(log, {:stdout, "foo"})
+"foobar" = LogAgent.process_chunk(log, {:stdout, "bar"})
diff --git a/Lightning.Runtime.Result.html b/Lightning.Runtime.Result.html
index 093010367b..27a4ad49d5 100644
--- a/Lightning.Runtime.Result.html
+++ b/Lightning.Runtime.Result.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Runtime.RunSpec.html b/Lightning.Runtime.RunSpec.html
index 47e1308436..c05291162b 100644
--- a/Lightning.Runtime.RunSpec.html
+++ b/Lightning.Runtime.RunSpec.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.SafetyString.html b/Lightning.SafetyString.html
index 3361948894..a7853783dd 100644
--- a/Lightning.SafetyString.html
+++ b/Lightning.SafetyString.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Scrubber.html b/Lightning.Scrubber.html
index e35f76f720..70feda0404 100644
--- a/Lightning.Scrubber.html
+++ b/Lightning.Scrubber.html
@@ -13,7 +13,7 @@
-
+
@@ -114,11 +114,11 @@
-Process used to scrub strings of sensitive information.
Can be started via start_link/1
.
{:ok, scrubber} =
- Lightning.Scrubber.start_link(
+Process used to scrub strings of sensitive information.
Can be started via start_link/1
.
{:ok, scrubber} =
+ Lightning.Scrubber.start_link(
samples:
- Lightning.Credentials.sensitive_values_for(credential)
- )
Takes an optional :name
key, in case you need to name the process.
+ Lightning.Credentials.sensitive_values_for(credential)
+ )
Takes an optional :name
key, in case you need to name the process.
diff --git a/Lightning.SetupUtils.html b/Lightning.SetupUtils.html
index fc70c5dd3b..f1d153d520 100644
--- a/Lightning.SetupUtils.html
+++ b/Lightning.SetupUtils.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.TaskWorker.html b/Lightning.TaskWorker.html
index f9dafcc012..89fb0d2941 100644
--- a/Lightning.TaskWorker.html
+++ b/Lightning.TaskWorker.html
@@ -13,7 +13,7 @@
-
+
@@ -117,7 +117,7 @@
A TaskWorker with concurrency limits.
A simple concurrency limiter that wraps Task.Supervisor
, which already does
have the ability to specify max_children
; it throws an error when
that limit is exceeded.
To use it, start it like any other process; ideally in your supervision tree.
...,
- {Lightning.TaskWorker, name: :cli_task_worker, max_tasks: 4}
Options
:max_tasks
Defaults to the number of system schedulers available to the vm.
+ {Lightning.TaskWorker, name: :cli_task_worker, max_tasks: 4}
Options
:max_tasks
Defaults to the number of system schedulers available to the vm.
diff --git a/Lightning.Validators.html b/Lightning.Validators.html
index af03d9f770..8c74c24ca4 100644
--- a/Lightning.Validators.html
+++ b/Lightning.Validators.html
@@ -13,7 +13,7 @@
-
+
@@ -192,10 +192,10 @@ validate_exclusive(changeset, fields, messa
Validate that only one of the fields is set at a time.
Example:
changeset
-|> validate_exclusive(
- [:source_job_id, :source_trigger_id],
+|> validate_exclusive(
+ [:source_job_id, :source_trigger_id],
"source_job_id and source_trigger_id are mutually exclusive"
-)
+)
diff --git a/Lightning.Vault.html b/Lightning.Vault.html
index 9b10c7bdad..3b75bc5cc4 100644
--- a/Lightning.Vault.html
+++ b/Lightning.Vault.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.WorkOrder.html b/Lightning.WorkOrder.html
index 29e0ebb6c2..bf550554d1 100644
--- a/Lightning.WorkOrder.html
+++ b/Lightning.WorkOrder.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.WorkOrderService.html b/Lightning.WorkOrderService.html
index 59524ed031..a11e265389 100644
--- a/Lightning.WorkOrderService.html
+++ b/Lightning.WorkOrderService.html
@@ -13,7 +13,7 @@
-
+
@@ -342,11 +342,11 @@ create_work_order(attrs \\ %{})
Examples
-iex> create_work_order(%{field: value})
-{:ok, %WorkOrder{}}
+iex> create_work_order(%{field: value})
+{:ok, %WorkOrder{}}
-iex> create_work_order(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_work_order(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Lightning.Workflows.Edge.html b/Lightning.Workflows.Edge.html
index d27afa8b3a..2a6d576bf6 100644
--- a/Lightning.Workflows.Edge.html
+++ b/Lightning.Workflows.Edge.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Workflows.Graph.html b/Lightning.Workflows.Graph.html
index 0277376206..b4eb345ccc 100644
--- a/Lightning.Workflows.Graph.html
+++ b/Lightning.Workflows.Graph.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Workflows.Workflow.html b/Lightning.Workflows.Workflow.html
index d3d469b324..a6db7379f7 100644
--- a/Lightning.Workflows.Workflow.html
+++ b/Lightning.Workflows.Workflow.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Workflows.html b/Lightning.Workflows.html
index 44c627cfd2..2697e23deb 100644
--- a/Lightning.Workflows.html
+++ b/Lightning.Workflows.html
@@ -13,7 +13,7 @@
-
+
@@ -349,8 +349,8 @@ change_workflow(workflow, attrs \\ %{})
Examples
-iex> change_workflow(workflow)
-%Ecto.Changeset{data: %Workflow{}}
+iex> change_workflow(workflow)
+%Ecto.Changeset{data: %Workflow{}}
@@ -402,11 +402,11 @@ create_workflow(attrs \\ %{})
Examples
-iex> create_workflow(%{field: value})
-{:ok, %Workflow{}}
+iex> create_workflow(%{field: value})
+{:ok, %Workflow{}}
-iex> create_workflow(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_workflow(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -434,11 +434,11 @@ delete_workflow(workflow)
Examples
-iex> delete_workflow(workflow)
-{:ok, %Workflow{}}
+iex> delete_workflow(workflow)
+{:ok, %Workflow{}}
-iex> delete_workflow(workflow)
-{:error, %Ecto.Changeset{}}
+iex> delete_workflow(workflow)
+{:error, %Ecto.Changeset{}}
@@ -539,10 +539,10 @@ get_workflow!(id)
Examples
-iex> get_workflow!(123)
-%Workflow{}
+iex> get_workflow!(123)
+%Workflow{}
-iex> get_workflow!(456)
+iex> get_workflow!(456)
** (Ecto.NoResultsError)
@@ -623,8 +623,8 @@ list_workflows()
Examples
-iex> list_workflows()
-[%Workflow{}, ...]
+iex> list_workflows()
+[%Workflow{}, ...]
@@ -654,8 +654,8 @@ mark_for_deletion(workflow, attrs \\ %{})
Examples
-iex> change_request_deletion(workflow)
-%Ecto.Changeset{data: %Workflow{}}
+iex> change_request_deletion(workflow)
+%Ecto.Changeset{data: %Workflow{}}
@@ -733,11 +733,11 @@ update_workflow(workflow, attrs)
Examples
-iex> update_workflow(workflow, %{field: new_value})
-{:ok, %Workflow{}}
+iex> update_workflow(workflow, %{field: new_value})
+{:ok, %Workflow{}}
-iex> update_workflow(workflow, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_workflow(workflow, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Lightning.Workorders.SearchParams.html b/Lightning.Workorders.SearchParams.html
index b181e91f72..721d680503 100644
--- a/Lightning.Workorders.SearchParams.html
+++ b/Lightning.Workorders.SearchParams.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.epub b/Lightning.epub
index e5bc7dbe9e24747aaff46e75cf81cd166b1258e0..592bbdb0e21dde8a2bf33d2d84e5f246ab873cb3 100644
GIT binary patch
delta 90709
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%0D``SMY_5A`fIOo
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