Skip to content

Commit 8e5001a

Browse files
Ensure console repository is created on plural instances (#1440)
1 parent 5f7aca2 commit 8e5001a

File tree

5 files changed

+48
-2
lines changed

5 files changed

+48
-2
lines changed

apps/core/lib/core/services/cloud.ex

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,30 @@ defmodule Core.Services.Cloud do
266266
end
267267
end
268268

269+
def ensure_console_repository() do
270+
case Repositories.get_repository_by_name("console") do
271+
nil -> create_console_repository()
272+
%Core.Schema.Repository{} = repo -> {:ok, repo}
273+
end
274+
end
275+
276+
defp create_console_repository() do
277+
with %User{} = user <- Users.get_user_by_email!(Core.conf(:initial_user)),
278+
%Core.Schema.Publisher{} = publisher <- Users.get_publisher_by_owner(user.id) do
279+
Repositories.create_repository(%{
280+
name: "console",
281+
category: :devops,
282+
git_url: "https://github.com/pluralsh/console",
283+
oauth_settings: %{
284+
auth_method: :post,
285+
uri_format: "https://{domain}/oauth/callback"
286+
}
287+
}, publisher.id, user)
288+
else
289+
_ -> {:error, "failed to create console repository"}
290+
end
291+
end
292+
269293
defp aes_key() do
270294
:crypto.strong_rand_bytes(32)
271295
|> Base.url_encode64()
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import Botanist
2+
3+
seed do
4+
Core.Services.Cloud.ensure_console_repository()
5+
end

apps/core/test/services/cloud_test.exs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,4 +261,19 @@ defmodule Core.Services.CloudTest do
261261
end
262262
end
263263
end
264+
265+
describe "#ensure_console_repository/0" do
266+
test "it will create the console repository if it doesn't exist" do
267+
user = insert(:user, email: Core.conf(:initial_user))
268+
insert(:publisher, owner: user)
269+
270+
{:ok, repo} = Cloud.ensure_console_repository()
271+
272+
assert repo.name == "console"
273+
assert repo.category == :devops
274+
assert repo.git_url == "https://github.com/pluralsh/console"
275+
assert repo.oauth_settings.auth_method == :post
276+
assert repo.oauth_settings.uri_format == "https://{domain}/oauth/callback"
277+
end
278+
end
264279
end

config/config.exs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,8 @@ config :core,
154154
cloud_domain: "cloud.plural.sh",
155155
base_stripe_product: "test-base",
156156
metered_stripe_product: "test-metered",
157-
cluster_meter_name: "pro_clusters"
157+
cluster_meter_name: "pro_clusters",
158+
initial_user: "[email protected]"
158159

159160
config :briefly,
160161
directory: [{:system, "TMPDIR"}, {:system, "TMP"}, {:system, "TEMP"}, "/tmp"],

rel/config/config.exs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,8 @@ config :core,
101101
cloud_domain: get_env("CONSOLE_CLOUD_DOMAIN") || "cloud.plural.sh",
102102
base_stripe_product: get_env("STRIPE_PRO_PRODUCT"),
103103
metered_stripe_product: get_env("STRIPE_PRO_CLUSTER_PRODUCT"),
104-
cluster_meter_name: get_env("CLUSTER_METER_NAME") || "pro_clusters"
104+
cluster_meter_name: get_env("CLUSTER_METER_NAME") || "pro_clusters",
105+
initial_user: get_env("ADMIN_EMAIL") || "[email protected]"
105106

106107

107108
if get_env("VAULT_HOST") do

0 commit comments

Comments
 (0)