---
#
# 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 Log Analytics workspace
# 2. Create dashboard and workbook using json templates
# 3. Update az_logs_id and az_logs_key in muchos.props
# 
#

- import_tasks: log_analytics_ws_common.yml
     
- name: Deploy log analytics workspace and performance counters
  azure_rm_deployment:
    resource_group_name: "{{ resource_group }}"
    state: present
    location: "{{ location }}"
    parameters:
       deployment-prefix:
           value: "{{ monitor_name.stdout }}"
    template: "{{ lookup('file', 'roles/azure/templates/azureDeployLinuxCounters.json') }}"

- name: Gather information about log analytics workspace
  azure_rm_loganalyticsworkspace_info:
    resource_group: "{{ resource_group }}"
    name: "{{ log_workspace_name }}" 
    show_shared_keys: True
  retries: 20
  delay: 15
  until: logs_workspace.workspaces|map(attribute='customer_id')|list is defined
  register: logs_workspace

- name: Retrieve the workspace ID
  set_fact:
    az_logs_ws_id: "{{ logs_workspace.workspaces|map(attribute='customer_id')|list|join('') }}"

- name: Retrieve the workspace key
  set_fact:
    az_logs_ws_key: "{{ logs_workspace.workspaces|map(attribute='shared_keys')|map(attribute='primary_shared_key')|list|join('') }}"

- name: Update az_logs_id in muchos.props
  lineinfile:
    path: "{{ deploy_path }}/conf/muchos.props"
    regexp: '^az_logs_id\s*=\s*|^[#]az_logs_id\s*=\s*'
    line: "az_logs_id = {{ az_logs_ws_id }}"

- name: Update az_logs_key in muchos.props
  lineinfile:
    path: "{{ deploy_path }}/conf/muchos.props"
    regexp: '^az_logs_key\s*=\s*|^[#]az_logs_key\s*=\s*'
    line: "az_logs_key = {{ az_logs_ws_key }}"

- name: Create Dashboard
  azure_rm_deployment:
    resource_group_name: "{{ resource_group }}"
    state: present
    location: "{{ location }}"
    parameters:
       LogAnalyticsWorkspaceName:
          value: "{{ log_workspace_name }}"
       DashboardName:
          value: "{{ dashboard_name }}"
    template: "{{ lookup('file', 'roles/azure/templates/dashboardTemplate.json') }}"

- name: Create Workbook
  azure_rm_deployment:
    resource_group_name: "{{ resource_group }}"
    state: present
    location: "{{ location }}"
    parameters:
       LogAnalyticsWorkspaceName:
          value: "{{ log_workspace_name }}"
       workbookDisplayName:
          value: "{{ workbook_name }}"
    template: "{{ lookup('file', 'roles/azure/templates/workbookTemplate.json') }}"
  when: workbook_exists is undefined
