defmodule Actors.K8s.K8sConn do @moduledoc """ Initializes the %K8s.Conn{} struct depending on the mix environment. """ @spec get!(env :: atom()) :: K8s.Conn.t() def get!(:dev) do {:ok, conn} = "KUBECONFIG" |> System.get_env("./test/integration/kubeconfig-dev.yaml") |> K8s.Conn.from_file(insecure_skip_tls_verify: true) conn end def get!(:test) do {:ok, conn} = "KUBECONFIG" |> System.get_env("./test/integration/kubeconfig-test.yaml") |> K8s.Conn.from_file(insecure_skip_tls_verify: true) conn end def get!(:prod) do kubeconfig = System.get_env("KUBECONFIG") {:ok, conn} = if not is_nil(kubeconfig) and File.exists?(kubeconfig) do K8s.Conn.from_file(kubeconfig, insecure_skip_tls_verify: true) else K8s.Conn.from_service_account(insecure_skip_tls_verify: true) end conn end def get(_) do K8s.Conn.from_service_account() |> then(fn {:ok, conn} -> conn other -> other end) end end