Packages
k8s
2.6.2
2.8.0
2.7.0
2.6.2
2.6.1
2.6.0
2.5.0
2.4.2
2.4.1
2.4.0
2.3.0
2.2.0
2.1.1
2.1.0
2.0.3
2.0.2
2.0.1
2.0.0
2.0.0-rc.6
2.0.0-rc.5
2.0.0-rc.4
2.0.0-rc.3
2.0.0-rc.2
2.0.0-rc.1
2.0.0-rc.0
1.2.1
1.2.0
1.1.10
1.1.9
1.1.8
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.0
1.0.0-rc1
0.5.2
0.5.1
0.5.0
0.5.0-rc.2
0.5.0-rc.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
retired
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.3
Kubernetes API Client for Elixir
Current section
Files
Jump to
Current section
Files
lib/k8s/discovery.ex
defmodule K8s.Discovery do
@moduledoc "Kubernetes API Discovery"
alias K8s.{Conn, Operation}
@behaviour K8s.Discovery.Driver
@impl true
@doc "Kubernetes API Resources supported by the cluster."
def resources(api_version, %K8s.Conn{discovery_driver: driver} = conn, opts \\ []) do
driver.resources(api_version, conn, opts)
end
@impl true
@doc "Kubernetes API Versions supported by the cluster."
def versions(%K8s.Conn{discovery_driver: driver} = conn, opts \\ []) do
driver.versions(conn, opts)
end
@doc """
Discovery the URL for a `K8s.Conn` and `K8s.Operation`
## Examples
iex> {:ok, conn} = K8s.Conn.from_file("./test/support/kube-config.yaml")
...> op = K8s.Operation.build(:get, "apps/v1", :deployments, [namespace: "default", name: "nginx"])
...> K8s.Discovery.url_for(conn, op)
{:ok, "https://localhost:6443/apis/apps/v1/namespaces/default/deployments/nginx"}
"""
@spec url_for(Conn.t(), Operation.t()) :: {:ok, String.t()} | {:error, K8s.Discovery.Error.t()}
def url_for(%Conn{} = conn, %Operation{api_version: api_version, name: name, verb: _} = op) do
with {:ok, name} <-
K8s.Discovery.ResourceFinder.resource_name_for_kind(conn, api_version, name),
op <- Map.put(op, :name, name),
{:ok, path} <- Operation.to_path(op) do
{:ok, Path.join(conn.url, path)}
end
end
@spec default_driver() :: module()
@deprecated "Use K8s.default_discovery_driver/0 instead"
def default_driver, do: K8s.default_discovery_driver()
@deprecated "Use K8s.default_discovery_opts/0 instead"
@spec default_opts() :: Keyword.t()
def default_opts, do: K8s.default_discovery_opts()
end