BigW Consortium Gitlab

kubernetes_helpers.rb 1.45 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
module KubernetesHelpers
  include Gitlab::Kubernetes

  def kube_discovery_body
    { "kind" => "APIResourceList",
      "resources" => [
        { "name" => "pods", "namespaced" => true, "kind" => "Pod" },
      ],
    }
  end

  def kube_pods_body(*pods)
    { "kind" => "PodList",
      "items" => [ kube_pod ],
    }
  end

  # This is a partial response, it will have many more elements in reality but
  # these are the ones we care about at the moment
  def kube_pod(app: "valid-pod-label")
    { "metadata" => {
        "name" => "kube-pod",
        "creationTimestamp" => "2016-11-25T19:55:19Z",
        "labels" => { "app" => app },
      },
      "spec" => {
        "containers" => [
          { "name" => "container-0" },
          { "name" => "container-1" },
        ],
      },
      "status" => { "phase" => "Running" },
    }
  end

  def kube_terminals(service, pod)
    pod_name = pod['metadata']['name']
    containers = pod['spec']['containers']

    containers.map do |container|
      terminal = {
        selectors: { pod: pod_name, container: container['name'] },
        url:  container_exec_url(service.api_url, service.namespace, pod_name, container['name']),
        subprotocols: ['channel.k8s.io'],
        headers: { 'Authorization' => ["Bearer #{service.token}"] },
        created_at: DateTime.parse(pod['metadata']['creationTimestamp'])
      }
      terminal[:ca_pem] = service.ca_pem if service.ca_pem.present?
      terminal
    end
  end
end