Skip to content

Instantly share code, notes, and snippets.

@obmarg
Created October 19, 2018 19:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save obmarg/1f25161cd72d219e906c6befbe23e0f0 to your computer and use it in GitHub Desktop.
Save obmarg/1f25161cd72d219e906c6befbe23e0f0 to your computer and use it in GitHub Desktop.
Kazan.Watcher GenServer example
# To use this you'd just go
{:ok, pid} = ExampleWatcher.start_link(nil)
defmodule ExampleWatcher do
@moduledoc """
A simple gen server that starts up App processes under the AppsSupervisor
"""
use GenServer
require Logger
alias Kazan.Watcher.WatchEvent
def start_link(arg) do
GenServer.start_link(__MODULE__, arg)
end
def init(_arg) do
server = Kazan.Server.from_kubeconfig("/home/rdesousa/.kube/config")
{:ok, res} =
Kazan.Apis.Core.V1.list_namespaced_pod!("test")
|> Kazan.run(server: server)
version = List.last(res.items).metadata.resource_version
Kazan.Apis.Core.V1.watch_namespaced_pod_list!("test")
|> Kazan.Watcher.start_link(server: server, send_to: self(), resource_version: version)
{:ok, nil}
end
def handle_info(%WatchEvent{} = event, state) do
# events come in here
{:noreply, state}
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment