Stasiek Michalski 3b66c9
{% set appservices = salt['pillar.get']('profile:matrix:appservices') %}
Stasiek Michalski 73f0a6
Stasiek Michalski 3b66c9
appservice_pgks:
Stasiek Michalski 73f0a6
  pkg.installed:
Stasiek Michalski 73f0a6
    - pkgs:
Stasiek Michalski 73f0a6
      - git
Stasiek Michalski 73f0a6
      - nodejs10
Stasiek Michalski 64e281
      - npm10
Stasiek Michalski f4cc7a
      - nodejs-common
Stasiek Michalski 434eee
      - make
Stasiek Michalski 434eee
      - gcc
Stasiek Michalski 434eee
      - gcc-c++
Stasiek Michalski 73f0a6
Stasiek Michalski 3b66c9
{% for dir, data in appservices.items() %}
Stasiek Michalski 3b66c9
/var/lib/matrix-synapse/{{ dir }}:
Stasiek Michalski 73f0a6
  file.directory:
Stasiek Michalski 73f0a6
    - user: synapse
Stasiek Michalski 73f0a6
Stasiek Michalski 3b66c9
{{ data.repo }}:
Stasiek Michalski 64e281
  git.latest:
Stasiek Michalski 3b66c9
    - branch: {{ data.get('branch', 'master') }}
Stasiek Michalski 3b66c9
    - target: /var/lib/matrix-synapse/{{ dir }}
Stasiek Michalski 3b66c9
    - rev: {{ data.get('branch', 'master') }}
Stasiek Michalski 64e281
    - user: synapse
Stasiek Michalski 64e281
Stasiek Michalski 3b66c9
Stasiek Michalski 3b66c9
{{ dir }}_conf_file:
Stasiek Michalski 164e7d
  file.managed:
Stasiek Michalski 3b66c9
    - name: /var/lib/matrix-synapse/{{ dir }}/config.yaml
Stasiek Michalski 3b66c9
    - source: salt://profile/matrix/files/config-{{ dir }}.yaml
Stasiek Michalski 164e7d
    - template: jinja
Stasiek Michalski 434eee
    - user: synapse
Stasiek Michalski 164e7d
    - require:
Stasiek Michalski 3b66c9
      - file: /var/lib/matrix-synapse/{{ dir }}
Stasiek Michalski 164e7d
    - require_in:
Stasiek Michalski 3b66c9
      - service: {{ dir }}_service
Stasiek Michalski 164e7d
    - watch_in:
Stasiek Michalski 3b66c9
      - module: {{ dir }}_restart
Stasiek Michalski 164e7d
Stasiek Michalski 3b66c9
{{ dir }}_appservice_file:
Stasiek Michalski 259175
  file.managed:
Stasiek Michalski 3b66c9
    - name: /var/lib/matrix-synapse/{{ dir }}/{{ dir }}-registration.yaml
Stasiek Michalski 3b66c9
    - source: salt://profile/matrix/files/appservice-{{ dir }}.yaml
Stasiek Michalski a6d9a5
    - user: synapse
Stasiek Michalski a5a827
    - template: jinja
Stasiek Michalski 259175
    - require:
Stasiek Michalski 3b66c9
      - file: /var/lib/matrix-synapse/{{ dir }}
Stasiek Michalski 3b66c9
    - watch_in:
Stasiek Michalski 3b66c9
      - module: {{ dir }}_restart
Stasiek Michalski 3b66c9
Stasiek Michalski 3b66c9
synapse_appservice_{{ dir }}_file:
Stasiek Michalski 3b66c9
  file.managed:
Stasiek Michalski 3b66c9
    - name: /etc/matrix-synapse/appservices/appservice-{{ dir }}.yaml
Stasiek Michalski 3b66c9
    - source: salt://profile/matrix/files/appservice-{{ dir }}.yaml
Stasiek Michalski 3b66c9
    - template: jinja
Stasiek Michalski 3b66c9
    - require:
Stasiek Michalski 3b66c9
      - file: /var/lib/matrix-synapse/{{ dir }}
Stasiek Michalski 259175
    - watch_in:
Stasiek Michalski 3b66c9
      - module: {{ dir }}_restart
Stasiek Michalski 259175
Stasiek Michalski 3b66c9
{{ dir }}_boostrap:
Stasiek Michalski ddf40c
  cmd.run:
Stasiek Michalski ddf40c
    - name: npm install
Stasiek Michalski 3b66c9
    - cwd: /var/lib/matrix-synapse/{{ dir }}
Stasiek Michalski 434eee
    - runas: synapse
Stasiek Michalski 64e281
    - env:
Stasiek Michalski 56543a
      - NODE_VERSION: 10
Stasiek Michalski 73f0a6
Stasiek Michalski 3b66c9
{{ dir }}_build:
Stasiek Michalski 73f0a6
  cmd.run:
Stasiek Michalski 73f0a6
    - name: npm run build
Stasiek Michalski 3b66c9
    - cwd: /var/lib/matrix-synapse/{{ dir }}
Stasiek Michalski 434eee
    - runas: synapse
Stasiek Michalski 64e281
    - env:
Stasiek Michalski 56543a
      - NODE_VERSION: 10
Stasiek Michalski 73f0a6
Stasiek Michalski 3b66c9
{{ dir }}_systemd_file:
Stasiek Michalski 73f0a6
  file.managed:
Stasiek Michalski 3b66c9
    - name: /etc/systemd/system/{{ dir }}.service
Stasiek Michalski 3b66c9
    - template: jinja
Stasiek Michalski 3b66c9
    - context:
Stasiek Michalski 3b66c9
      dir: {{ dir }}
Stasiek Michalski 3b66c9
      port: {{ data.get('port') }}
Stasiek Michalski 3b66c9
    - source: salt://profile/matrix/files/appservice.service
Stasiek Michalski 73f0a6
    - require_in:
Stasiek Michalski 3b66c9
      - service: {{ dir }}_service
Stasiek Michalski 3b66c9
Stasiek Michalski 3b66c9
{{ dir }}_service:
Stasiek Michalski 3b66c9
  service.running:
Stasiek Michalski 3b66c9
    - name: {{ dir }}
Stasiek Michalski 3b66c9
    - enable: True
Stasiek Michalski 3b66c9
    - require:
Stasiek Michalski 3b66c9
      - service: synapse_service
Stasiek Michalski 3b66c9
Stasiek Michalski 3b66c9
{{ dir }}_restart:
Stasiek Michalski 3b66c9
  module.wait:
Stasiek Michalski 3b66c9
    - name: service.restart
Stasiek Michalski 3b66c9
    - m_name: {{ dir }}
Stasiek Michalski 3b66c9
    - require:
Stasiek Michalski 3b66c9
      - service: synapse_service
Stasiek Michalski 3b66c9
      - service: {{ dir }}_service
Stasiek Michalski 3b66c9
{% endfor %}