#
# 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.
#

- name: Pulsar setup
  hosts: zookeeper, bookie, broker, proxy
  connection: ssh
  become: true
  tasks:
    - name: Create necessary directories
      file:
        path: "{{ item }}"
        state: directory
      with_items: ["/opt/pulsar"]
    - name: Install RPM packages
      yum:
        state: latest
        name:
          - wget
          - java
          - sysstat
          - vim
    - set_fact:
        zookeeper_servers: "{{ groups['zookeeper']|map('extract', hostvars, ['ansible_default_ipv4', 'address'])|map('regex_replace', '^(.*)$', '\\1:2181') | join(',') }}"
        service_url: "{{ pulsar_service_url }}"
        http_url: "{{ pulsar_web_url }}"
        pulsar_version: "2.8.1"
    - name: Download Pulsar binary package
      unarchive:
        src: https://archive.apache.org/dist/pulsar/pulsar-{{ pulsar_version }}/apache-pulsar-{{ pulsar_version }}-bin.tar.gz
        remote_src: yes
        dest: /opt/pulsar
        extra_opts: ["--strip-components=1"]
    - set_fact:
        max_heap_memory: "12g"
        max_direct_memory: "12g"
        cluster_name: "local"
    - name: Add pulsar_env.sh configuration file
      template:
        src: "../templates/pulsar_env.sh"
        dest: "/opt/pulsar/conf/pulsar_env.sh"

- name: Set up ZooKeeper
  hosts: zookeeper
  connection: ssh
  become: true
  tasks:
    - set_fact:
        zid: "{{ groups['zookeeper'].index(inventory_hostname) }}"
        max_heap_memory: "512m"
        max_direct_memory: "1g"
    - name: Create ZooKeeper data directory
      file:
        path: "/opt/pulsar/{{ item }}"
        state: directory
      with_items:
        - data/zookeeper
    - name: Add pulsar_env.sh configuration file
      template:
        src: "../templates/pulsar_env.sh"
        dest: "/opt/pulsar/conf/pulsar_env.sh"
    - name: Add zookeeper.conf file
      template:
        src: "../templates/zoo.cfg"
        dest: "/opt/pulsar/conf/zookeeper.conf"
    - name: Add myid file for ZooKeeper
      template:
        src: "../templates/myid"
        dest: "/opt/pulsar/data/zookeeper/myid"
    - name: Add zookeeper.service systemd file
      template:
        src: "../templates/zookeeper.service"
        dest: "/etc/systemd/system/zookeeper.service"
    - name: systemd ZooKeeper start
      systemd:
        state: restarted
        daemon_reload: yes
        name: "zookeeper"
    - name: Initialize cluster metadata
      shell: |
        bin/pulsar initialize-cluster-metadata \
          --cluster {{ cluster_name }} \
          --zookeeper localhost:2181 \
          --configuration-store localhost:2181 \
          --web-service-url {{ http_url }} \
          --broker-service-url {{ service_url }}
      args:
        chdir: /opt/pulsar
      when: groups['zookeeper'][0] == inventory_hostname

- name: Set up bookies
  hosts: bookie
  connection: ssh
  become: true
  tasks:
    - template:
        src: "../templates/bookkeeper.conf"
        dest: "/opt/pulsar/conf/bookkeeper.conf"
    - template:
        src: "../templates/bookkeeper.service"
        dest: "/etc/systemd/system/bookkeeper.service"
    - systemd:
        state: restarted
        daemon_reload: yes
        name: "bookkeeper"

- name: Set up brokers
  hosts: broker
  connection: ssh
  become: true
  tasks:
    - name: Create connectors directory
      file:
        path: "/opt/pulsar/{{ item }}"
        state: directory
      loop:
        - connectors
    - name: Download Pulsar IO packages
      get_url:
        url: https://archive.apache.org/dist/pulsar/pulsar-{{ pulsar_version }}/connectors/pulsar-io-{{ item }}-{{ pulsar_version }}.nar
        dest: /opt/pulsar/connectors/pulsar-io-{{ item }}-{{ pulsar_version }}.nar
      loop:
#        - aerospike
#        - canal
#        - cassandra
#        - data-generator
#        - debezium-mongodb
#        - debezium-mysql
#        - debezium-postgres
#        - dynamodb
#        - elastic-search
#        - file
#        - flume
#        - hbase
#        - hdfs2
#        - hdfs3
#        - influxdb
#        - jdbc-clickhouse
#        - jdbc-mariadb
#        - jdbc-postgres
#        - jdbc-sqlite
#        - http
        - kafka
#        - kafka-connect-adaptor
#        - kinesis
#        - mongo
#        - netty
#        - rabbitmq
#        - redis
#        - solr
#        - twitter
    - name: Set up broker
      template:
        src: "../templates/broker.conf"
        dest: "/opt/pulsar/conf/broker.conf"
    - name: Set up function worker
      template:
        src: "../templates/functions_worker.yml"
        dest: "/opt/pulsar/conf/functions_worker.yml"
    - template:
        src: "../templates/pulsar.broker.service"
        dest: "/etc/systemd/system/pulsar.broker.service"
    - systemd:
        state: restarted
        daemon_reload: yes
        name: "pulsar.broker"

- name: Set up Pulsar Proxy
  hosts: proxy
  connection: ssh
  become: true
  tasks:
    - name: Set up proxy
      template:
        src: "../templates/proxy.conf"
        dest: "/opt/pulsar/conf/proxy.conf"
    - template:
        src: "../templates/pulsar.proxy.service"
        dest: "/etc/systemd/system/pulsar.proxy.service"
    - systemd:
        state: restarted
        daemon_reload: yes
        name: "pulsar.proxy"

- name:  Hosts addresses
  hosts: localhost
  become: false
  tasks:
    - debug:
        msg: "Zookeeper Server {{ item }}"
      with_items: "{{ groups['zookeeper'] }}"
    - debug:
        msg: "Bookie {{ item }}"
      with_items: "{{ groups['bookie'] }}"
    - debug:
        msg: "Broker {{ item }}"
      with_items: "{{ groups['broker'] }}"
    - debug:
        msg: "Proxy {{ item }}"
      with_items: "{{ groups['proxy'] }}"
