---
# Cannot use win_feature to install RDS on Server 2008
- name: check if feature is availble
  win_shell: if (Get-Command -Name Add-WindowsFeature -ErrorAction SilentlyContinue) { $true } else { $false }
  changed_when: False
  register: module_available

- name: install Remote Desktop Gateway features
  when: module_available.stdout | trim | bool
  block:
  - name: ensure Remote Desktop Gateway services are installed
    win_feature:
      name:
      - RDS-Gateway
      - RDS-Licensing
      - RDS-RD-Server
      state: present
    register: rds_install

  - name: reboot server if needed
    win_reboot:
    when: rds_install.reboot_required

  # After a reboot Windows is still configuring the feature, this is a hack to wait until that is finished
  - name: wait for component servicing to be finished
    win_shell: |
      $start = Get-Date
      $path = "HKLM:\SYSTEM\CurrentControlSet\Control\Winlogon\Notifications\Components\TrustedInstaller"
      $tries = 0
      while ((Get-ItemProperty -Path $path -Name Events).Events.Contains("CreateSession")) {
          $tries += 1
          Start-Sleep -Seconds 5
          if (((Get-Date) - $start).TotalSeconds -gt 180) {
              break
          }
      }
      $tries
    changed_when: False

  - name: run win_rds_cap integration tests
    include_tasks: win_rds_cap.yml

  - name: run win_rds_rap integration tests
    include_tasks: win_rds_rap.yml

  - name: run win_rds_settings integration tests
    include_tasks: win_rds_settings.yml

  always:
  # Server 2008 R2 requires us to remove this first before the other features
  - name: remove the RDS-Gateway feature
    win_feature:
      name: RDS-Gateway
      state: absent
    register: rds_uninstall

  - name: reboot after removing RDS-Gateway feature
    win_reboot:
    when: rds_uninstall.reboot_required

  # Now remove the remaining features
  - name: remove installed RDS feature
    win_feature:
      name:
      - RDS-Licensing
      - RDS-RD-Server
      - Web-Server  # not part of the initial feature install but RDS-Gateway requires this and it breaks httptester
      state: absent
    register: rds_uninstall2

  - name: reboot after feature removal
    win_reboot:
    when: rds_uninstall2.reboot_required
