---
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.
#
#
# These Ansible tasks only run on the client machine where Muchos runs
# At a high level, the various sections in this file do the following:
# 1. Create (if not already existing): an Azure resource group, virtual network / subnet
# 2. Optionally (if the user specified) create a VM and related resources to use as a proxy host
# 3. Create the Azure VMSS to support the nodes for use with Muchos
# 4. Automatically populate the hosts file and associated [nodes] section in muchos.props
#
# SECTION 2: Optionally create a VM with a public IP which can act as a proxy host
#
- name: Create public IP address
  azure_rm_publicipaddress:
    resource_group: "{{ resource_group }}"
    allocation_method: Static
    name: "{{ azure_proxy_host }}-ip"
  register: azure_proxy_public_ip
  when: azure_proxy_host is defined and azure_proxy_host and azure_proxy_host != None

- name: Create Network Security Group that allows SSH
  azure_rm_securitygroup:
    resource_group: "{{ resource_group }}"
    name: "{{ azure_proxy_host }}-nsg"
    rules:
      - name: SSH
        protocol: Tcp
        destination_port_range: 22
        access: Allow
        priority: 1001
        direction: Inbound
  when: azure_proxy_host is defined and azure_proxy_host and azure_proxy_host != None

- name: Create NIC
  azure_rm_networkinterface:
    resource_group: "{{ resource_group }}"
    name: "{{ azure_proxy_host }}-nic"
    virtual_network: "{{ vnet }}"
    subnet_name: "{{ subnet }}"
    ip_configurations:
      - name: default
        public_ip_address_name: "{{ azure_proxy_host }}-ip"
        primary: True
    security_group: "{{ azure_proxy_host }}-nsg"
    enable_accelerated_networking: "{{ True if azure_proxy_host_vm_sku in accnet_capable_skus else False }}"
  when: azure_proxy_host is defined and azure_proxy_host and azure_proxy_host != None

- name: Create azure proxy virtual machine
  azure_rm_virtualmachine:
    resource_group: "{{ resource_group }}"
    name: "{{ azure_proxy_host }}"
    network_interface_names:
      - "{{ azure_proxy_host }}-nic"
    vm_size: "{{ azure_proxy_host_vm_sku }}"
    admin_username: "{{ cluster_user }}"
    ssh_password_enabled: false
    ssh_public_keys:
      - path: /home/{{ cluster_user }}/.ssh/authorized_keys
        key_data: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
    os_disk_caching: ReadWrite
    image:
      offer: "{{ image_offer if image_offer else omit }}"
      publisher: "{{ image_publisher if image_publisher else omit }}"
      sku: "{{ image_sku if image_sku else omit }}"
      version: "{{ image_version if image_version else omit }}"
    managed_disk_type: "{{ osdisk_sku }}"
    data_disks:
     - lun: 0
       disk_size_gb: 64
       managed_disk_type: "{{ data_disk_sku }}"
  vars:
  - image_offer: "{{ azure_proxy_image_reference.split('|')[0] }}"
  - image_publisher: "{{ azure_proxy_image_reference.split('|')[1] }}"
  - image_sku: "{{ azure_proxy_image_reference.split('|')[2] }}"
  - image_version: "{{ azure_proxy_image_reference.split('|')[3] }}"
  - osdisk_sku: "{{ 'Premium_LRS' if azure_proxy_host_vm_sku in premiumio_capable_skus else 'Standard_LRS' }}"
  when: azure_proxy_host is defined and azure_proxy_host and azure_proxy_host != None
