---
- pause:
    prompt: |
      Enter your ACCESS token. (https://developers.linode.com/api/v4/#access-and-authentication):
    echo: false
  register: _linode_token
  when:
    - linode_token is undefined
    - lookup('env', 'LINODE_API_TOKEN')|length <= 0
  no_log: true

- name: Set the token as a fact
  set_fact:
    algo_linode_token: "{{ linode_token | default(_linode_token.user_input | default(None)) | default(lookup('env', 'LINODE_API_TOKEN'), true) }}"
  no_log: true

- name: Get regions
  uri:
    url: https://api.linode.com/v4/regions
    method: GET
    status_code: 200
  register: _linode_regions

- name: Set facts about the regions
  set_fact:
    linode_regions: "{{ _linode_regions.json.data | sort(attribute='id') }}"

- name: Set default region
  set_fact:
    default_region: >-
      {%- for r in linode_regions -%}
      {%- if r['id'] == "us-east" %}{{ loop.index }}{% endif -%}
      {%- endfor %}

- pause:
    prompt: |
      What region should the server be located in?
        {% for r in linode_regions %}
        {{ loop.index }}. {{ r['id'] }}
        {% endfor %}

      Enter the number of your desired region
      [{{ default_region }}]
  register: _algo_region
  when: region is undefined

- name: Set additional facts
  set_fact:
    algo_linode_region: >-
      {%- if region is defined -%}{{ region }}{%- elif _algo_region.user_input -%}{{ linode_regions[_algo_region.user_input | int - 1]['id'] }}{%- else -%}{{ linode_regions[default_region | int - 1]['id'] }}{%- endif -%}
    public_key: "{{ lookup('file', SSH_keys.public) }}"
