---
# Copyright 2020 Red Hat, Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

# This playbook contains things you need if you want to run tripleo_ipa tests
# locally. Note that zuul sets some of this stuff up automatically, so we don't
# need to invoke this specifically for zuul.

- name: pre prepare
  hosts: all
  gather_facts: false
  tasks:
    - name: set basic user fact
      fail:
        msg: >-
          The variable `ansible_user` set this option and try again. On the
          CLI this can be defined with "-e ansible_user=${USER}"
      when:
        - ansible_user is undefined

    - name: set basic home fact
      fail:
        msg: >-
          The variable `ansible_user_dir` set this option and try again. On
          the CLI this can be defined with "-e ansible_user_dir=${HOME}"
      when:
        - ansible_user_dir is undefined

    - name: Ensure the user has a .ssh directory
      file:
        path: "{{ ansible_user_dir }}/.ssh"
        state: directory
        owner: "{{ ansible_user }}"
        group: "{{ ansible_user }}"
        mode: "0700"

    - name: Create ssh key pair
      user:
        name: "{{ ansible_user }}"
        generate_ssh_key: true
        ssh_key_bits: 2048
        ssh_key_file: "{{ ansible_user_dir }}/.ssh/id_rsa"

    - name: Slurp pub key
      slurp:
        src: "{{ ansible_user_dir ~ '/.ssh/id_rsa.pub' }}"
      register: pub_key

    - name: Ensure can ssh to can connect to localhost
      authorized_key:
        user: "{{ ansible_user }}"
        key: "{{ pub_key['content'] | b64decode }}"

    - name: Get the zuul/zuul-jobs repo
      git:
        repo: https://opendev.org/zuul/zuul-jobs
        dest: "{{ ansible_user_dir }}/zuul-jobs"
        version: master
        force: true