mirror of
https://github.com/livebook-dev/livebook.git
synced 2025-09-04 20:14:57 +08:00
219 lines
6.3 KiB
Elixir
219 lines
6.3 KiB
Elixir
defmodule Livebook.TeamsRPC do
|
|
alias Livebook.Factory
|
|
|
|
def subscribe(node, parent, deployment_group, org) do
|
|
:erpc.call(node, TeamsRPC, :subscribe, [parent, deployment_group, org])
|
|
end
|
|
|
|
# Read resource
|
|
|
|
def get_org_request!(node, id) do
|
|
:erpc.call(node, TeamsRPC, :get_org_request!, [id])
|
|
end
|
|
|
|
def get_org_request_by!(node, opts) do
|
|
:erpc.call(node, TeamsRPC, :get_org_request_by!, [opts])
|
|
end
|
|
|
|
def get_org_key!(node, id) do
|
|
:erpc.call(node, TeamsRPC, :get_org_key!, [id])
|
|
end
|
|
|
|
def get_deployment_group!(node, id) do
|
|
:erpc.call(node, TeamsRPC, :get_deployment_group!, [id])
|
|
end
|
|
|
|
def get_auth_request_by_code!(node, code) do
|
|
:erpc.call(node, TeamsRPC, :get_auth_request_by_code!, [code])
|
|
end
|
|
|
|
def get_apps_metadatas(node, id) do
|
|
:erpc.call(node, TeamsRPC, :get_apps_metadatas, [id])
|
|
end
|
|
|
|
# Create resource
|
|
|
|
def create_user(node, attrs \\ []) do
|
|
:erpc.call(node, TeamsRPC, :create_user, [attrs])
|
|
end
|
|
|
|
def create_secret(node, team, org_key, attrs \\ []) do
|
|
attrs = Keyword.merge(attrs, hub_id: team.id)
|
|
secret = Factory.build(:secret, attrs)
|
|
|
|
derived_key = Livebook.Teams.derive_key(team.teams_key)
|
|
value = Livebook.Teams.encrypt(secret.value, derived_key)
|
|
|
|
attrs =
|
|
%{
|
|
name: secret.name,
|
|
value: value,
|
|
org_key: org_key
|
|
}
|
|
|
|
:erpc.call(node, TeamsRPC, :create_secret, [attrs])
|
|
secret
|
|
end
|
|
|
|
def create_org(node, attrs \\ []) do
|
|
:erpc.call(node, TeamsRPC, :create_org, [attrs])
|
|
end
|
|
|
|
def create_org_key(node, attrs \\ []) do
|
|
:erpc.call(node, TeamsRPC, :create_org_key, [attrs])
|
|
end
|
|
|
|
def create_org_key_pair(node, attrs \\ []) do
|
|
:erpc.call(node, TeamsRPC, :create_org_key_pair, [attrs])
|
|
end
|
|
|
|
def create_org_request(node, attrs \\ []) do
|
|
:erpc.call(node, TeamsRPC, :create_org_request, [attrs])
|
|
end
|
|
|
|
def create_user_org(node, attrs \\ []) do
|
|
:erpc.call(node, TeamsRPC, :create_user_org, [attrs])
|
|
end
|
|
|
|
def create_file_system(node, team, org_key, file_system \\ nil) do
|
|
file_system = if file_system, do: file_system, else: Factory.build(:fs_s3)
|
|
derived_key = Livebook.Teams.derive_key(team.teams_key)
|
|
name = Livebook.FileSystem.external_metadata(file_system).name
|
|
type = Livebook.FileSystems.type(file_system)
|
|
attrs = Livebook.FileSystem.dump(file_system)
|
|
json = JSON.encode!(attrs)
|
|
value = Livebook.Teams.encrypt(json, derived_key)
|
|
|
|
attrs = %{name: name, type: String.to_atom(type), value: value, org_key: org_key}
|
|
external_id = :erpc.call(node, TeamsRPC, :create_file_system, [attrs]).id
|
|
Map.replace!(file_system, :external_id, external_id)
|
|
end
|
|
|
|
def create_deployment_group(node, attrs \\ []) do
|
|
:erpc.call(node, TeamsRPC, :create_deployment_group, [attrs])
|
|
end
|
|
|
|
def create_deployment_group_secret(node, team, org_key, deployment_group, attrs \\ []) do
|
|
attrs =
|
|
Keyword.merge(attrs,
|
|
deployment_group_id: to_string(deployment_group.id),
|
|
hub_id: team.id
|
|
)
|
|
|
|
secret = Factory.build(:secret, attrs)
|
|
|
|
derived_key = Livebook.Teams.derive_key(team.teams_key)
|
|
value = Livebook.Teams.encrypt(secret.value, derived_key)
|
|
|
|
attrs =
|
|
%{
|
|
name: secret.name,
|
|
value: value,
|
|
org_key: org_key,
|
|
deployment_group: deployment_group
|
|
}
|
|
|
|
:erpc.call(node, TeamsRPC, :create_deployment_group_secret, [attrs])
|
|
secret
|
|
end
|
|
|
|
def create_agent_key(node, attrs \\ []) do
|
|
:erpc.call(node, TeamsRPC, :create_agent_key, [attrs])
|
|
end
|
|
|
|
def create_environment_variable(node, attrs \\ []) do
|
|
:erpc.call(node, TeamsRPC, :create_environment_variable, [attrs])
|
|
end
|
|
|
|
def create_billing_subscription(node, org) do
|
|
:erpc.call(node, TeamsRPC, :create_billing_subscription, [org])
|
|
end
|
|
|
|
def create_oidc_provider(node, org) do
|
|
:erpc.call(node, TeamsRPC, :create_oidc_provider, [org])
|
|
end
|
|
|
|
def create_authorization_group(node, attrs \\ []) do
|
|
:erpc.call(node, TeamsRPC, :create_authorization_group, [attrs])
|
|
end
|
|
|
|
def create_org_token(node, attrs \\ []) do
|
|
key = :erpc.call(node, TeamsRPC, :generate_org_token, [])
|
|
{key, :erpc.call(node, TeamsRPC, :create_org_token, [key, attrs])}
|
|
end
|
|
|
|
# Update resource
|
|
|
|
def update_authorization_group(node, authorization_group, attrs) do
|
|
:erpc.call(node, TeamsRPC, :update_authorization_group, [authorization_group, attrs])
|
|
end
|
|
|
|
def update_user_info_groups(node, code, groups) do
|
|
:erpc.call(node, TeamsRPC, :update_user_info_groups, [code, groups])
|
|
end
|
|
|
|
def update_deployment_group(node, deployment_group, attrs) do
|
|
:erpc.call(node, TeamsRPC, :update_deployment_group, [deployment_group, attrs])
|
|
end
|
|
|
|
def update_billing_subscription(node, subscription, attrs) do
|
|
:erpc.call(node, TeamsRPC, :update_billing_subscription, [subscription, attrs])
|
|
end
|
|
|
|
# Delete resource
|
|
|
|
def delete_user_org(node, user_id, org_id) do
|
|
:erpc.call(node, TeamsRPC, :delete_user_org, [user_id, org_id])
|
|
end
|
|
|
|
def delete_deployment_group(node, deployment_group) do
|
|
:erpc.call(node, TeamsRPC, :delete_deployment_group, [deployment_group])
|
|
end
|
|
|
|
# Actions
|
|
|
|
def upload_app_deployment(
|
|
node,
|
|
org,
|
|
deployment_group,
|
|
livebook_app_deployment,
|
|
encrypted_content,
|
|
broadast? \\ false
|
|
) do
|
|
:erpc.call(node, TeamsRPC, :upload_app_deployment, [
|
|
org,
|
|
deployment_group,
|
|
livebook_app_deployment,
|
|
encrypted_content,
|
|
broadast?
|
|
])
|
|
end
|
|
|
|
def confirm_org_request(node, org_request, user) do
|
|
:erpc.call(node, TeamsRPC, :confirm_org_request, [org_request, user])
|
|
end
|
|
|
|
def associate_user_with_org(node, user, org) do
|
|
:erpc.call(node, TeamsRPC, :associate_user_with_org, [user, org])
|
|
end
|
|
|
|
def toggle_app_deployment(node, id, org_id) do
|
|
:erpc.call(node, TeamsRPC, :toggle_app_deployment, [id, org_id])
|
|
end
|
|
|
|
def allow_auth_request(node, token) do
|
|
:erpc.call(node, TeamsRPC, :allow_auth_request, [token])
|
|
end
|
|
|
|
def toggle_teams_authentication(node, deployment_group) do
|
|
:erpc.call(node, TeamsRPC, :toggle_teams_authentication, [deployment_group])
|
|
end
|
|
|
|
def toggle_groups_authorization(node, deployment_group) do
|
|
:erpc.call(node, TeamsRPC, :toggle_groups_authorization, [deployment_group])
|
|
end
|
|
|
|
def toggle_deployment_authorization(node, deployment_group) do
|
|
:erpc.call(node, TeamsRPC, :toggle_deployment_authorization, [deployment_group])
|
|
end
|
|
end
|