---

- name: clone kubernetes source repo
  git:
    repo: "https://github.com/{{ k8s_github_fork }}/kubernetes.git"
    dest: "{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes"
    # based on kube v1.9.0-alpha.2, update as needed
    version: "{{ k8s_git_version }}"
    force: "{{ force_clone | default(False) | bool}}"

- name: install etcd
  command: "hack/install-etcd.sh"
  args:
    chdir: "{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes"

- name: build kubernetes
  make:
    chdir: "{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes"

- name: Add custom cluster service file for the e2e testing
  copy:
    dest: /etc/systemd/system/customcluster.service
    content: |
      [Unit]
      After=network-online.target
      Wants=network-online.target
      [Service]
      WorkingDirectory={{ ansible_env.GOPATH }}/src/k8s.io/kubernetes
      ExecStart=/usr/local/bin/createcluster.sh
      User=root
      [Install]
      WantedBy=multi-user.target

- name: Add create cluster background script for e2e testing
  copy:
    dest: /usr/local/bin/createcluster.sh
    content: |
      #!/bin/bash

      export PATH=/usr/local/go/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/root/bin:{{ ansible_env.GOPATH }}/bin:{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes/third_party/etcd:{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes/_output/local/bin/linux/amd64/
      export CONTAINER_RUNTIME=remote
      export CGROUP_DRIVER=systemd
      export CONTAINER_RUNTIME_ENDPOINT='{{ crio_socket }} --runtime-request-timeout=5m'
      export ALLOW_SECURITY_CONTEXT=","
      export ALLOW_PRIVILEGED=1
      export DNS_SERVER_IP={{ ansible_default_ipv4.address }}
      export API_HOST={{ ansible_default_ipv4.address }}
      export API_HOST_IP={{ ansible_default_ipv4.address }}
      export KUBE_ENABLE_CLUSTER_DNS=true
      export ENABLE_HOSTPATH_PROVISIONER=true
      export KUBE_ENABLE_CLUSTER_DASHBOARD=true
      ./hack/local-up-cluster.sh
    mode: "u=rwx,g=rwx,o=x"

- name: Set kubernetes_provider to be local
  lineinfile:
    dest: /etc/environment
    line: 'KUBERNETES_PROVIDER=local'
    regexp: 'KUBERNETES_PROVIDER='
    state: present

- name: Set KUBECONFIG
  lineinfile:
    dest: /etc/environment
    line: 'KUBECONFIG=/var/run/kubernetes/admin.kubeconfig'
    regexp: 'KUBECONFIG='
    state: present
