Bugfix/MPMXKD-23

main
Ketelsen, Sven 2 years ago committed by Hoan To
parent 37092f8014
commit e65a560b82

@ -1,104 +0,0 @@
---
# creates database backup
# - postgres
# - executed on stage specific server: {{ shared_service_postgres_primary }}
# - creates database backup for specific database
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# tenant_id := (unique key for the tenant, e.g. customer)
# cluster_name := (business name for the cluster, e.g. product, department )
# cluster_size := (WIP node count for the cluster)
# cluster_service := (service to setup, e.g. 'connect', ...)
# cluster_features := (optional features to use, e.g. ['wordpress', 'resubmission', ...])
# custom_backup_name := defines a substring for backup file => {{ stage }}_{{ tenant_id }}_{{ cluster_name }}_{{ cluster_service }}__gehtdichnixan.sql
# smardigo message callback
# scope_id := (scope id of the management process)
# process_instance_id := (process instance id of the management process)
# smardigo_management_action := (smardigo management action anme of the management process)
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
- hosts: localhost
connection: local
gather_facts: false
pre_tasks:
- name: "Import constraints check"
import_tasks: tasks/constraints_check.yml
become: false
tags:
- always
# add virtual server to load stage specific variables as context
- name: "Add <{{ stage }}-virtual-host-to-read-groups-vars> to hosts"
add_host:
name: "{{ stage }}-virtual-host-to-read-groups-vars"
groups:
- "stage_{{ stage }}"
changed_when: False
tasks:
- name: "Add postgres servers to hosts if necessary"
add_host:
name: "{{ shared_service_postgres_primary }}"
groups:
- "stage_{{ stage }}"
- "{{ item }}"
changed_when: False
with_items: "{{ cluster_features }}"
when: item in ['connect', 'management_connect', 'keycloak', 'gitea']
- name: "Add maria servers to hosts if necessary"
add_host:
name: "{{ shared_service_maria_primary }}"
groups:
- "stage_{{ stage }}"
- "{{ item }}"
changed_when: False
with_items: "{{ cluster_features }}"
when: item in ['connect_wordpress']
#############################################################
# Creating database backups for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
remote_user: root
vars:
database_backup_state: dump
ansible_ssh_host: "{{ stage_server_domain }}"
roles:
- role: connect_postgres
when: "'connect' in group_names"
- role: gitea_postgres
when: "'gitea' in group_names"
- role: keycloak_postgres
when: "'keycloak' in group_names"
- role: connect_wordpress_maria
when: "'connect_wordpress' in group_names"
#############################################################
# Sending smardigo management message to process
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
run_once: true
vars:
connect_jwt_username: "{{ management_admin_username }}"
tasks:
- name: "Sending smardigo management message to <{{ shared_service_url_management }}>"
include_tasks: tasks/smardigo_management_message.yml

@ -1,114 +0,0 @@
---
# creates databases on shared service servers
# - postgres
# - executed on stage specific server: {{ shared_service_postgres_primary }}
# - creates databases to work with connect: {{ connect_postgres_database }}
# - creates databases to work with management connect: {{ management_connect_postgres_database }}
# - creates databases to work with shared keycloak: {{ keycloak_postgres_database }}
# - maria
# - executed on stage specific server: {{ shared_service_maria_primary }}
# - creates databases to work with connect wordpress: {{ connect_wordpress_maria_database }}
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# tenant_id := (unique key for the tenant, e.g. customer)
# cluster_name := (business name for the cluster, e.g. product, department )
# cluster_size := (WIP node count for the cluster)
# cluster_service := (service to setup, e.g. 'connect', ...)
# cluster_features := (optional features to use, e.g. ['wordpress', 'resubmission', ...])
# smardigo message callback
# scope_id := (scope id of the management process)
# process_instance_id := (process instance id of the management process)
# smardigo_management_action := (smardigo management action anme of the management process)
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
- hosts: localhost
gather_facts: false
connection: local
pre_tasks:
- name: "Import constraints check"
import_tasks: tasks/constraints_check.yml
become: false
tags:
- always
# add virtual server to load stage specific variables as context
- name: "Add <{{ stage }}-virtual-host-to-read-groups-vars> to hosts"
add_host:
name: "{{ stage }}-virtual-host-to-read-groups-vars"
groups:
- "stage_{{ stage }}"
changed_when: False
tasks:
- name: "Add postgres servers to hosts if necessary"
add_host:
name: "{{ shared_service_postgres_primary }}"
groups:
- "stage_{{ stage }}"
- "{{ item }}"
changed_when: False
with_items: "{{ cluster_features }}"
when: item in ['connect', 'management_connect', 'keycloak', 'gitea']
- name: "Add maria servers to hosts if necessary"
add_host:
name: "{{ shared_service_maria_primary }}"
groups:
- "stage_{{ stage }}"
- "{{ item }}"
changed_when: False
with_items: "{{ cluster_features }}"
when: item in ['connect_wordpress']
#############################################################
# Creating databases for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
remote_user: root
vars:
ansible_ssh_host: "{{ stage_server_domain }}"
pre_tasks:
- name: "Import autodiscover pre-tasks"
import_tasks: tasks/autodiscover_pre_tasks.yml
become: false
tags:
- always
roles:
- role: connect_postgres
when: "'connect' in group_names"
- role: gitea_postgres
when: "'gitea' in group_names"
- role: keycloak_postgres
when: "'keycloak' in group_names"
- role: connect_wordpress_maria
when: "'connect_wordpress' in group_names"
#############################################################
# Sending smardigo management message to process
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
run_once: true
vars:
connect_jwt_username: "{{ management_admin_username }}"
tasks:
- name: "Sending smardigo management message to <{{ shared_service_url_management }}>"
include_tasks: tasks/smardigo_management_message.yml

@ -1,241 +0,0 @@
---
# creates elastic objetcs for smardigo instances
# to empower dudes to find relevant logmessages faster and
# reduce/abolish "monkey business" in creating needed ES-related objects for (devops|admin)-dudes
# - executed on stage specific server: {{ stage }}-elastic-stack-kibana-01-kibana
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# tenant_id := (unique key for the tenant, e.g. customer)
# cluster_name := (business name for the cluster, e.g. product, department )
# cluster_size := (WIP node count for the cluster)
# cluster_service := (service to setup, e.g. 'connect', ...)
# cluster_features := (optional features to use, e.g. ['wordpress', 'resubmission', ...])
# smardigo message callback
# scope_id := (scope id of the management process)
# process_instance_id := (process instance id of the management process)
# smardigo_management_action := (smardigo management action anme of the management process)
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
- hosts: localhost
gather_facts: false
connection: local
pre_tasks:
- name: "Import constraints check"
import_tasks: tasks/constraints_check.yml
become: false
tags:
- always
# add virtual server to load stage specific variables as context
- name: "Add <{{ stage }}-virtual-host-to-read-groups-vars> to hosts"
add_host:
name: "{{ stage }}-virtual-host-to-read-groups-vars"
groups:
- "stage_{{ stage }}"
changed_when: False
#############################################################
# Creating kibana search objects for created inventory
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: no
remote_user: root
vars:
ansible_connection: local
ansible_ssh_host: "{{ stage_server_domain }}"
elastic_state: present
elastic_users:
-
username: '{{ stage }}-{{ tenant_id }}'
roles:
- '{{ stage }}-{{ tenant_id }}'
full_name: ''
password: '{{ password | default( stage + "-" + tenant_id ) }}'
email: '{{ email | default("") }}'
enabled: true
elastic_state: '{{ elastic_state }}'
elastic_roles:
-
elastic_state: '{{ elastic_state }}'
name: '{{ stage }}-{{ tenant_id }}'
elasticsearch:
cluster: []
indices:
- names:
- '{{ stage }}-{{ tenant_id }}-*'
privileges:
- read
- read_cross_cluster
- view_index_metadata
allow_restricted_indices: false
run_as: []
kibana:
- base: []
feature:
advancedSettings:
- all
dashboard:
- all
dev_tools:
- all
discover:
- all
indexPatterns:
- all
savedObjectsManagement:
- all
visualize:
- all
spaces:
- '{{ stage }}-{{ tenant_id }}'
elastic_spaces:
-
elastic_state: '{{ elastic_state }}'
id: &es_space_name '{{ stage }}-{{ tenant_id }}'
name: '{{ stage }}-{{ tenant_id }}'
description: ''
disabledFeatures:
- canvas
- maps
- ml
- visualize
- enterpriseSearch
- logs
- infrastructure
- apm
- uptime
- observabilityCases
- siem
- monitoring
- fleet
- stackAlerts
- actions
- osquery
- savedObjectsTagging
tasks:
- name: "Create Index Pattern for <{{ stage }}-{{ tenant_id }}-*>"
set_fact:
es_index_pattern_tenant: '{{ stage }}-{{ tenant_id }}-*'
elastic_index_patterns:
- id: "{{ stage }}-{{ tenant_id }}-*"
name: "{{ stage }}-{{ tenant_id }}"
search_name: "{{ stage }}-{{ tenant_id }}-*"
dashboard_name: "{{ stage }}-{{ tenant_id }}-*"
with_container_filter: false
when:
- cluster_name is not defined
- cluster_service is not defined
- name: "Create Index Pattern for <{{ stage }}-{{ tenant_id }}-{{ cluster_name }}>"
set_fact:
es_index_pattern_tenant: '{{ stage }}-{{ tenant_id }}-*'
elastic_index_patterns:
- id: "{{ stage }}-{{ tenant_id }}-*"
name: "{{ stage }}-{{ tenant_id }}"
search_name: "{{ stage }}-{{ tenant_id }}-*"
dashboard_name: "{{ stage }}-{{ tenant_id }}-*"
- id: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-*"
name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}"
search_name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-*"
dashboard_name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-*"
when:
- cluster_name is defined
- cluster_service is not defined
- name: "Create Index Pattern for <{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-{{ cluster_service }}>"
set_fact:
es_index_pattern_tenant: ''
elastic_index_patterns:
- id: "{{ stage }}-{{ tenant_id }}-*"
name: "{{ stage }}-{{ tenant_id }}"
search_name: "{{ stage }}-{{ tenant_id }}-*"
dashboard_name: "{{ stage }}-{{ tenant_id }}-*"
- id: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-*"
name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}"
search_name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-*"
dashboard_name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-*"
- id: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-*-{{ cluster_service }}-*"
name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-{{ cluster_service }}"
search_name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-{{ cluster_service }}-*"
dashboard_name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-{{ cluster_service }}-*"
when:
- cluster_service is defined
- cluster_name is defined
- name: "Do some stuff in elastic with spaces ... "
include_role:
name: kibana
tasks_from: _configure_spaces.yml
apply:
tags:
- es-spaces
loop: "{{ elastic_spaces }}"
loop_control:
loop_var: elastic_space
tags:
- es-spaces
- name: "Do some stuff in elastic with roles ..."
include_role:
name: kibana
tasks_from: _configure_roles.yml
apply:
tags:
- es-roles
loop: "{{ elastic_roles }}"
loop_control:
loop_var: elastic_role
tags:
- es-roles
- name: "Do some stuff in elastic with users ..."
include_role:
name: kibana
tasks_from: _configure_users.yml
apply:
tags:
- es-users
loop: "{{ elastic_users }}"
loop_control:
loop_var: elastic_user
tags:
- es-users
- name: "Do some stuff in elastic with spaces ..."
include_role:
name: kibana
tasks_from: _import_savedobjects.yml
apply:
tags:
- es-importobjects
vars:
es_space: *es_space_name
es_indexpattern_title: '{{ es_indexpattern_name }}'
es_panel_uuid: "{{ 'panel_' + elastic_dashboard_name | to_uuid }}"
tags:
- es-importobjects
#############################################################
# Sending smardigo management message to process
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
run_once: true
vars:
connect_jwt_username: "{{ management_admin_username }}"
tasks:
- name: "Sending smardigo management message to <{{ shared_service_url_management }}>"
include_tasks: tasks/smardigo_management_message.yml

@ -1,94 +0,0 @@
---
# creates realm/clients on shared keycloak service
# - connect_realm: configuration to use with connect/wordpress
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# tenant_id := (unique key for the tenant, e.g. customer)
# cluster_name := (business name for the cluster, e.g. product, department )
# cluster_size := (WIP node count for the cluster)
# cluster_service := (service to setup, e.g. 'connect', ...)
# cluster_features := (optional features to use, e.g. ['wordpress', 'resubmission', ...])
# playbook roles (keycloak / oidc)
# current_realm_name :=
# current_realm_display_name :=
# smardigo message callback
# scope_id := (scope id of the management process)
# process_instance_id := (process instance id of the management process)
# smardigo_management_action := (smardigo management action anme of the management process)
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
- hosts: localhost
gather_facts: false
connection: local
pre_tasks:
- name: "Import constraints check"
import_tasks: tasks/constraints_check.yml
become: false
tags:
- always
# add virtual server to load stage specific variables as context
- name: "Add <{{ stage }}-virtual-host-to-read-groups-vars> to hosts"
add_host:
name: "{{ stage }}-virtual-host-to-read-groups-vars"
groups:
- "stage_{{ stage }}"
changed_when: False
tasks:
- name: Add hosts
add_host:
name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-{{ '%02d' | format(item|int) }}"
groups: "{{ ['stage_' + stage ] + [cluster_service] + cluster_features }}"
with_sequence: start=1 end={{ cluster_size | default(1) }}
changed_when: False
#############################################################
# Creating realms for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
collections:
- hetzner.hcloud
- community.general
pre_tasks:
- name: "Import autodiscover pre-tasks"
import_tasks: tasks/autodiscover_pre_tasks.yml
become: false
tags:
- always
roles:
- role: connect_realm
when: '"connect" in group_names'
- role: gitea_realm
when: '"gitea" in group_names'
#############################################################
# Sending smardigo management message to process
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
run_once: true
vars:
connect_jwt_username: "{{ management_admin_username }}"
tasks:
- name: "Sending smardigo management message to <{{ shared_service_url_management }}>"
include_tasks: tasks/smardigo_management_message.yml

@ -1,167 +0,0 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# tenant_id := (unique key for the tenant, e.g. customer)
# cluster_name := (business name for the cluster, e.g. product, department )
# cluster_size := (WIP node count for the cluster)
# cluster_service := (service to setup, e.g. 'connect', ...)
# smardigo message callback
# scope_id := (scope id of the management process)
# process_instance_id := (process instance id of the management process)
# smardigo_management_action := (smardigo management action anme of the management process)
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
- hosts: localhost
gather_facts: false
connection: local
pre_tasks:
- name: "Import constraints check"
import_tasks: tasks/constraints_check.yml
become: false
tags:
- always
# add virtual server to load stage specific variables as context
- name: "Add <{{ stage }}-virtual-host-to-read-groups-vars> to hosts"
add_host:
name: "{{ stage }}-virtual-host-to-read-groups-vars"
groups:
- "stage_{{ stage }}"
changed_when: False
tasks:
- name: Add hosts
add_host:
name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-{{ '%02d' | format(item|int) }}"
groups:
- "stage_{{ stage }}"
- "{{ cluster_service }}"
- hcloud
with_sequence: start=1 end={{ cluster_size | default(1) }}
changed_when: False
#############################################################
# Creating servers for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(5) }}"
remote_user: root
gather_facts: false
pre_tasks:
- name: Get all Firewalls from Hetzner
uri:
url: "https://api.hetzner.cloud/v1/firewalls"
headers:
accept: application/json
authorization: Bearer {{ hetzner_authentication_ansible }}
return_content: yes
register: hetzner_firewalls_response
delegate_to: 127.0.0.1
tags:
- update_networks
- name: Save firewall entries as variable (fact)
set_fact:
hetzner_firewalls_response_json: "{{ hetzner_firewalls_response.json }}"
tags:
- update_networks
- name: Parse firewall entries
set_fact:
firewall_records: "{{ hetzner_firewalls_response_json.firewalls | json_query(jmesquery) }}"
vars:
jmesquery: '[*].{id: id, name: name}'
tags:
- update_networks
- name: Print firewall entries
debug:
msg: "{{ firewall_records }}"
tags:
- update_networks
roles:
- role: hetzner-ansible-hcloud
- role: hetzner-ansible-dns
vars:
record_data: "{{ stage_server_ip }}"
record_name: "{{ inventory_hostname }}"
#############################################################
# Provisioning servers for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
remote_user: root
vars:
ansible_ssh_host: "{{ stage_server_domain }}"
pre_tasks:
- name: Remove outdated dependencies
apt:
name: [
'docker',
'docker-client',
'docker-client-latest',
'docker-common',
'docker-latest',
'docker-latest-logrotate',
'docker-logrotate',
'docker-engine',
'smartmontools',
'mc',
]
state: 'absent'
when: ansible_distribution == "Ubuntu"
- name: "Import autodiscover pre-tasks"
import_tasks: tasks/autodiscover_pre_tasks.yml
become: false
tags:
- always
roles:
- role: ansible-role-docker
when:
- docker_enabled
- role: hetzner-ansible-common
- role: devsec.hardening.ssh_hardening
tags:
- ssh_hardening
- role: hetzner-ansible-filebeat
when: filebeat_enabled | default(True)
- role: hetzner-ansible-node-exporter
when: node_exporter_enabled | default(True)
- role: hetzner-ansible-traefik
when: traefik_enabled | default(True)
#############################################################
# Sending smardigo management message to process
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
run_once: true
vars:
connect_jwt_username: "{{ management_admin_username }}"
tasks:
- name: "Sending smardigo management message to <{{ shared_service_url_management }}>"
include_tasks: tasks/smardigo_management_message.yml

@ -1,86 +0,0 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# tenant_id := (unique key for the tenant, e.g. customer)
# cluster_name := (business name for the cluster, e.g. product, department )
# cluster_size := (WIP node count for the cluster)
# cluster_service := (service to setup, e.g. 'connect', ...)
# cluster_features := (optional features to use, e.g. ['wordpress', 'resubmission', ...])
# smardigo message callback
# scope_id := (scope id of the management process)
# process_instance_id := (process instance id of the management process)
# smardigo_management_action := (smardigo management action anme of the management process)
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
- hosts: localhost
gather_facts: false
connection: local
pre_tasks:
- name: "Import constraints check"
import_tasks: tasks/constraints_check.yml
become: false
tags:
- always
# add virtual server to load stage specific variables as context
- name: "Add <{{ stage }}-virtual-host-to-read-groups-vars> to hosts"
add_host:
name: "{{ stage }}-virtual-host-to-read-groups-vars"
groups:
- "stage_{{ stage }}"
changed_when: False
tasks:
- name: Add hosts
add_host:
name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-{{ '%02d' | format(item|int) }}"
groups: "{{ ['stage_' + stage ] + [cluster_service] + cluster_features }}"
with_sequence: start=1 end={{ cluster_size | default(1) }}
changed_when: False
#############################################################
# Creating services for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
remote_user: root
vars:
ansible_ssh_host: "{{ stage_server_domain }}"
connect_version: "{{ connect_image_version }}" # backwards compatibility
pre_tasks:
- name: "Import autodiscover pre-tasks"
import_tasks: tasks/autodiscover_pre_tasks.yml
become: false
tags:
- always
roles:
- role: connect
when: "'connect' in group_names"
- role: connect_wordpress
when: "'connect_wordpress' in group_names"
#############################################################
# Sending smardigo management message to process
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
run_once: true
vars:
connect_jwt_username: "{{ management_admin_username }}"
tasks:
- name: "Sending smardigo management message to <{{ shared_service_url_management }}>"
include_tasks: tasks/smardigo_management_message.yml

@ -1,95 +0,0 @@
---
# This playbook dumps all ip addresses from Hetzner Cloud saving it into local file.
# A prefix "route" will be added, to easily use it within custom ovpn configuration.
#
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# Example:
# STAGE=ext && ansible-playbook dump-hcloud-ips.yml -e "stage=${STAGE}" --vault-password-file=~/.ansible-vault-pass-${STAGE}
#############################################################
# Creating inventory dynamically for given parameters #
#############################################################
- hosts: localhost
connection: local
gather_facts: false
pre_tasks:
- name: "Import constraints check"
import_tasks: tasks/constraints_check.yml
become: false
tags:
- always
# Add virtual server to load stage specific variables as context
- name: "Add <{{ stage }}-virtual-host-to-read-groups-vars> to hosts"
add_host:
name: "{{ stage }}-virtual-host-to-read-groups-vars"
groups:
- "stage_{{ stage }}"
changed_when: False
#############################################################
# Dumping ip addresses from hcloud with given stage #
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
pre_tasks:
- name: "Reading current server groups from hetzner"
include_role:
name: hetzner-ansible-hcloud
tasks_from: _read_server_infos
with_items: [
{
name: "all",
label_selector: "stage={{ stage }}",
}
]
loop_control:
loop_var: current_server_group
- name: "Reading info about current loadbalancers from hetzner"
include_role:
name: hetzner-ansible-hcloud
tasks_from: _read_load_balancer_infos
with_items: [
{
name: "all",
#label_selector: "stage={{ stage }}", # There are no useful labels at the moment. Todo: Create labels for load balancers like stage=dev
}
]
loop_control:
loop_var: current_load_balancer_group
tasks:
- name: 'Save Hetzner Server ip adresses in ~/hcloud_ip_addresses.txt'
blockinfile:
marker: "## {mark} managed by ansible (hosts config for {{ stage }}) ##"
path: '~/hcloud_ip_addresses.txt'
state: present
create: yes
block: |
{% for host in server_group_infos_all %}
# {{ host.name }}
route {{ host.ip }}
{% endfor %}
- name: 'Save Hetzner loadbalancer ip adresses in ~/hcloud_ip_addresses.txt'
blockinfile:
marker: "## {mark} managed by ansible (load balancer config for {{ stage }}) ##"
path: '~/hcloud_ip_addresses.txt'
state: present
create: yes
block: |
{% for host in load_balancer_group_infos_all %}
# {{ host.name }}
route {{ host.ip }}
{% endfor %}

@ -1,98 +0,0 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# tenant_id := (unique key for the tenant, e.g. customer)
# cluster_name := (business name for the cluster, e.g. product, department )
# cluster_size := (WIP node count for the cluster)
# cluster_service := (service to setup, e.g. 'connect', ...)
# cluster_features := (optional features to use, e.g. ['wordpress', 'resubmission', ...])
# database_backup_file := the dump file to export, has to be on the database server under /tmp (e.g. wordpress_portal.sql)
# target_database := (optional) the database to export into ( see {{ connect_wordpress_maria_database }})
# smardigo message callback
# scope_id := (scope id of the management process)
# process_instance_id := (process instance id of the management process)
# smardigo_management_action := (smardigo management action anme of the management process)
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
- hosts: localhost
connection: local
gather_facts: false
pre_tasks:
- name: "Import constraints check"
import_tasks: tasks/constraints_check.yml
become: false
tags:
- always
# add virtual server to load stage specific variables as context
- name: "Add <{{ stage }}-virtual-host-to-read-groups-vars> to hosts"
add_host:
name: "{{ stage }}-virtual-host-to-read-groups-vars"
groups:
- "stage_{{ stage }}"
changed_when: False
tasks:
- name: Add maria servers to hosts if necessary
add_host:
name: "{{ shared_service_maria_primary }}"
groups:
- "stage_{{ stage }}"
- "{{ item }}"
changed_when: False
with_items: "{{ cluster_features }}"
when: item in ['connect_wordpress']
#############################################################
# exporting database backups for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
remote_user: root
vars:
ansible_ssh_host: "{{ stage_server_domain }}"
pre_tasks:
- name: "Import autodiscover pre-tasks"
import_tasks: tasks/autodiscover_pre_tasks.yml
become: false
tags:
- always
roles:
- role: export_maria_database
vars:
database_backup_file: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-wordpress.sql.gz"
when:
- "'connect_wordpress' in group_names"
- "target_database is defined"
- role: export_maria_database
vars:
target_database: "{{ connect_wordpress_maria_database }}"
database_backup_file: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-wordpress.sql.gz"
when:
- "'connect_wordpress' in group_names"
#############################################################
# Sending smardigo management message to process
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
run_once: true
vars:
connect_jwt_username: "{{ management_admin_username }}"
tasks:
- name: "Sending smardigo management message to <{{ shared_service_url_management }}>"
include_tasks: tasks/smardigo_management_message.yml

@ -22,10 +22,6 @@ smardigo_auth_token_name: "Smardigo-User-Token"
smardigo_default_theme: "/themes/netgo.json"
connect_wordpress_buergerportal_username: "buergerportal"
# initial credentials, keycloak forces password update on first login
connect_wordpress_buergerportal_password: "Buerger?P0rtal."
# digital ocean dns service (-> dns-challenge)
connect_customer_urls_digitalocean: []
# hetzner dns service (-> dns-challenge)

@ -12,7 +12,6 @@ management_oidc_admin_email: "{{ devops_email_address }}"
management_configurations:
- pmci
- backup
- provisioning # legacy
connect_connection_teams_url: "{{ netgo_msteams_hook_cd }}"
connect_connection_awx_url: "{{ shared_service_kube_url_awx }}/"

@ -150,6 +150,7 @@ grafana_admin_email: "{{ devops_email_address }}"
grafana_smardigo_email: "{{ devops_email_address }}"
harbor_oidc_admin_email: "{{ devops_email_address }}"
argocd_admin_email: "{{ devops_email_address }}"
wordpress_admin_email: "{{ devops_email_address }}"
http_port: "80"
https_port: "443"

@ -26,6 +26,7 @@ traefik_version: "v2.10.3"
connect_version: "10.5"
iam_version: "10.5"
process_search_version: "1.3"
wordpress_image_version: "6.3"
ansible_minimal_version: "2.12.0"

@ -0,0 +1,2 @@
---
wordpress_image_name: "wordpress"

@ -1,6 +1,2 @@
---
management_configurations:
- pmci
- backup
connect_connection_harbor_url: "{{ shared_service_url_harbor }}/v2/prodnso/"

@ -1,109 +0,0 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# tenant_id := (unique key for the tenant, e.g. customer)
# cluster_name := (business name for the cluster, e.g. product, department )
# cluster_size := (WIP node count for the cluster)
# cluster_service := (service to setup, e.g. 'connect', ...)
# cluster_features := (optional features to use, e.g. ['wordpress', 'resubmission', ...])
# database_backup_file := the dump file to import, has to be on the database server under /tmp (e.g. wordpress_portal.sql)
# target_database := (optional) the database to import into ( see {{ connect_wordpress_maria_database }})
# smardigo message callback
# scope_id := (scope id of the management process)
# process_instance_id := (process instance id of the management process)
# smardigo_management_action := (smardigo management action anme of the management process)
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
- hosts: localhost
connection: local
gather_facts: false
pre_tasks:
- name: "Import constraints check"
import_tasks: tasks/constraints_check.yml
become: false
tags:
- always
# add virtual server to load stage specific variables as context
- name: "Add <{{ stage }}-virtual-host-to-read-groups-vars> to hosts"
add_host:
name: "{{ stage }}-virtual-host-to-read-groups-vars"
groups:
- "stage_{{ stage }}"
changed_when: False
#############################################################
# Importing database backups for created inventory
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
run_once: true
tasks:
- name: "Add maria server to hosts if necessary"
add_host:
name: "{{ shared_service_maria_primary }}"
groups:
- "stage_{{ stage }}"
- "{{ item }}"
changed_when: False
with_items: "{{ cluster_features }}"
when: item in ['connect_wordpress']
#############################################################
# Importing database backups for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
remote_user: root
vars:
ansible_ssh_host: "{{ stage_server_domain }}"
pre_tasks:
- name: "Import autodiscover pre-tasks"
import_tasks: tasks/autodiscover_pre_tasks.yml
become: false
tags:
- always
roles:
# TODO deactivate mags flavored wordpress for now
# - role: import_maria_database
# when:
# - "'connect_wordpress' in group_names"
# - "target_database is defined"
# - "database_backup_file is defined"
# TODO deactivate mags flavored wordpress for now
# - role: import_maria_database
# vars:
# target_database: "{{ connect_wordpress_maria_database }}"
# when:
# - "'connect_wordpress' in group_names"
# - "database_backup_file is defined"
#############################################################
# Sending smardigo management message to process
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
run_once: true
vars:
connect_jwt_username: "{{ management_admin_username }}"
tasks:
- name: "Sending smardigo management message to <{{ shared_service_url_management }}>"
include_tasks: tasks/smardigo_management_message.yml

@ -1 +1 @@
Subproject commit 08467ad6b3bdd5b15c33e3a63d476630766bd04a
Subproject commit d498df20db567d4a61402ab6243eb925b2a26032

@ -1,5 +1,4 @@
---
# Parameters:
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# scope_id := scope id from management process

@ -1,5 +1,4 @@
---
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
@ -15,11 +14,15 @@
remote_user: root
vars:
database_backup_state: dump
ansible_ssh_host: "{{ stage_server_domain }}"
tenant_id: "{{ tenant.key }}" # legacy paramater, backwards compatibility
cluster_name: "{{ cluster.key }}" # legacy paramater, backwards compatibility
custom_backup_name: "backup" # legacy paramater, backwards compatibility
pre_tasks:
- name: "Setting default variables pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
roles:
- role: connect_postgres
when: "'connect' in group_names"

@ -1,5 +1,4 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
@ -43,8 +42,10 @@
add_host:
name: "{{ shared_service_maria_primary }}"
groups:
- "stage_{{ stage }}"
- "{{ item }}"
- "stage_{{ stage }}"
- "pmci_database_selector"
- "pmci_database_selector_maria"
changed_when: False
with_items: "{{ cluster.features }}"
when: item in ['connect_wordpress']
@ -53,14 +54,9 @@
# Importing database backups for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
- hosts: "pmci_database_selector_maria"
serial: "{{ serial_number | default(1) }}"
remote_user: root
vars:
ansible_ssh_host: "{{ stage_server_domain }}"
tenant_id: "{{ tenant.key }}" # legacy paramater, backwards compatibility
cluster_name: "{{ cluster.key }}" # legacy paramater, backwards compatibility
database_backup_file: "{{ data.database.backup_file }}" # legacy paramater, backwards compatibility
pre_tasks:
- name: "Import autodiscover pre-tasks"
@ -69,6 +65,12 @@
tags:
- always
- name: "Setting default variables pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
roles:
- role: import_maria_database
when:

@ -1,5 +1,4 @@
---
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
@ -15,11 +14,15 @@
remote_user: root
vars:
database_backup_state: restore
ansible_ssh_host: "{{ stage_server_domain }}"
tenant_id: "{{ tenant.key }}" # legacy paramater, backwards compatibility
cluster_name: "{{ cluster.key }}" # legacy paramater, backwards compatibility
custom_backup_name: "backup" # legacy paramater, backwards compatibility
pre_tasks:
- name: "Setting default variables pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
roles:
- role: connect_postgres
when: "'connect' in group_names"

@ -1,5 +1,4 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
@ -28,10 +27,6 @@
- hosts: "pmci_database_selector"
serial: "{{ serial_number | default(1) }}"
remote_user: root
vars:
ansible_ssh_host: "{{ stage_server_domain }}"
tenant_id: "{{ tenant.key }}" # legacy paramater, backwards compatibility
cluster_name: "{{ cluster.key }}" # legacy paramater, backwards compatibility
pre_tasks:
- name: "Import autodiscover pre-tasks"
@ -40,6 +35,12 @@
tags:
- always
- name: "Setting default variables pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
roles:
- role: connect_postgres
when: "'connect' in group_names"

@ -1,5 +1,4 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
@ -30,9 +29,6 @@
remote_user: root
vars:
database_state: absent
ansible_ssh_host: "{{ stage_server_domain }}"
tenant_id: "{{ tenant.key }}" # legacy paramater, backwards compatibility
cluster_name: "{{ cluster.key }}" # legacy paramater, backwards compatibility
pre_tasks:
- name: "Import autodiscover pre-tasks"
@ -41,6 +37,12 @@
tags:
- always
- name: "Setting default variables pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
roles:
- role: connect_postgres
when: "'connect' in group_names"

@ -1,5 +1,4 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
@ -25,7 +24,7 @@
# Running the PMCI roles
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
- hosts: "pmci_server_selector"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
@ -37,6 +36,12 @@
tags:
- always
- name: "Setting default variables pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
roles:
#############################################################

@ -1,5 +1,4 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
@ -28,6 +27,7 @@
become: false
when:
- cluster is defined
- name: "Print given variables <data>"
debug:
msg: "{{ data }}"
@ -53,7 +53,7 @@
- name: "Add hosts for given cluster"
add_host:
name: "{{ stage }}-{{ tenant.key }}-{{ cluster.key }}-{{ '%02d' | format(item|int) }}"
groups: "{{ ['hcloud'] + ['stage_' + stage ] + [cluster.service] + (cluster.features | default([])) }}"
groups: "{{ ['hcloud'] + ['stage_' + stage ] + ['pmci_server_selector'] + [cluster.service] + (cluster.features | default([])) }}"
with_sequence: start=1 end={{ cluster.size | default(1) }}
changed_when: False
when:

@ -1,5 +1,4 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
@ -62,6 +61,7 @@
- "{{ item }}"
- "stage_{{ stage }}"
- "pmci_database_selector"
- "pmci_database_selector_postgres"
changed_when: False
with_items: "{{ ['hcloud'] + ['stage_' + stage ] + [cluster.service] + (cluster.features | default([])) }}"
when: item in ['connect', 'management_connect', 'keycloak', 'gitea']
@ -73,6 +73,7 @@
- "{{ item }}"
- "stage_{{ stage }}"
- "pmci_database_selector"
- "pmci_database_selector_maria"
changed_when: False
with_items: "{{ ['hcloud'] + ['stage_' + stage ] + [cluster.service] + (cluster.features | default([])) }}"
when: item in ['connect_wordpress']

@ -1,5 +1,4 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
@ -25,7 +24,7 @@
# Running the PMCI roles
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
- hosts: "pmci_server_selector"
serial: "{{ serial_number | default(1) }}"
gather_facts: no
remote_user: root

@ -1,5 +1,4 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
@ -62,6 +61,7 @@
- include_role:
name: prometheus
tasks_from: _update_config
- include_role:
name: prometheus
tasks_from: _reload_config

@ -1,20 +1,4 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# tenant := object with tenant related data
# key :=
# name :=
# cluster := object with cluster specific data (optional)
# ...
# data := object with action specific data (optional)
# ...
# smardigo message callback
# scope_id := (scope id of the management process)
# process_instance_id := (process instance id of the management process)
# smardigo_management_action := (smardigo management action anme of the management process)
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
@ -25,19 +9,10 @@
# Creating realms for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
- hosts: "pmci_server_selector"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
vars:
ansible_ssh_host: "{{ stage_server_domain }}"
tenant_id: "{{ tenant.key }}" # legacy paramater, backwards compatibility
cluster_name: "{{ cluster.key }}" # legacy paramater, backwards compatibility
current_realm_name: "{{ tenant.key }}" # legacy paramater, backwards compatibility
connect_client_admin_username: "{{ data.connect.admin.username }}" # legacy paramater, backwards compatibility
connect_client_admin_password: "{{ data.connect.admin.password }}" # legacy paramater, backwards compatibility
connect_wordpress_buergerportal_username: "{{ data.wordpress.admin.username | default() }}" # legacy paramater, backwards compatibility
connect_wordpress_buergerportal_password: "{{ data.wordpress.admin.password | default() }}" # legacy paramater, backwards compatibility
pre_tasks:
- name: "Import autodiscover pre-tasks"
@ -46,13 +21,28 @@
tags:
- always
- name: "Setting default variables pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
- name: "Setting pmci connect variables"
ansible.builtin.set_fact:
connect_client_admin_password: "{{ data.connect.admin.password }}" # legacy paramater, backwards compatibility
when:
- data.connect is defined
- name: "Setting pmci wordpress variables"
ansible.builtin.set_fact:
connect_wordpress_admin_password: "{{ data.wordpress.admin.password }}" # legacy paramater, backwards compatibility
when:
- data.wordpress is defined
roles:
- role: connect_realm
when: '"connect" in group_names'
- role: gitea_realm
when: '"gitea" in group_names'
#############################################################
# Sending smardigo management message to process
#############################################################

@ -1,5 +1,4 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
@ -25,13 +24,9 @@
# Deleting client for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
- hosts: "pmci_server_selector"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
vars:
ansible_ssh_host: "{{ stage_server_domain }}"
cluster_name: "{{ cluster.key }}" # legacy paramater, backwards compatibility
current_realm_name: "{{ tenant.key }}" # legacy paramater, backwards compatibility
pre_tasks:
- name: "Import autodiscover pre-tasks"
@ -40,6 +35,12 @@
tags:
- always
- name: "Setting default variables pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
tasks:
- name: "Delete client in realm <{{ current_realm_name }}>"
include_role:

@ -1,5 +1,4 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
@ -25,7 +24,7 @@
# Creating servers for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
- hosts: "pmci_server_selector"
serial: "{{ serial_number | default(5) }}"
gather_facts: false
remote_user: root
@ -75,11 +74,9 @@
# Provisioning servers for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
- hosts: "pmci_server_selector"
serial: "{{ serial_number | default(1) }}"
remote_user: root
vars:
ansible_ssh_host: "{{ stage_server_domain }}"
pre_tasks:
- name: Remove outdated dependencies
@ -105,6 +102,12 @@
tags:
- always
- name: "Setting default variables pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
roles:
- role: ansible-role-docker
when:

@ -1,5 +1,4 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
@ -25,7 +24,7 @@
# Deleting servers/domains for created inventory
#############################################################
- hosts: "stage_{{ stage }}"
- hosts: "pmci_server_selector"
serial: "{{ serial_number | default(5) }}"
gather_facts: false

@ -1,5 +1,4 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
@ -20,24 +19,15 @@
#############################################################
- import_playbook: pmci-inventory-cluster.yml
- import_playbook: pmci-inventory-database.yml
#############################################################
# Creating services for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
- hosts: "pmci_server_selector"
serial: "{{ serial_number | default(1) }}"
remote_user: root
vars:
ansible_ssh_host: "{{ stage_server_domain }}"
tenant_id: "{{ tenant.key }}" # legacy paramater, backwards compatibility
cluster_name: "{{ cluster.key }}" # legacy paramater, backwards compatibility
current_realm_name: "{{ tenant.key }}" # legacy paramater, backwards compatibility
connect_version: "{{ data.connect.version }}" # legacy paramater, backwards compatibility
connect_client_admin_username: "{{ data.connect.admin.username }}" # legacy paramater, backwards compatibility
connect_client_admin_password: "{{ data.connect.admin.password }}" # legacy paramater, backwards compatibility
connect_wordpress_buergerportal_username: "{{ data.wordpress.admin.username }}" # legacy paramater, backwards compatibility
connect_wordpress_buergerportal_password: "{{ data.wordpress.admin.password }}" # legacy paramater, backwards compatibility
pre_tasks:
- name: "Import autodiscover pre-tasks"
@ -46,6 +36,12 @@
tags:
- always
- name: "Setting default variables pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
roles:
- role: connect
when: "'connect' in group_names"
@ -53,6 +49,33 @@
- role: connect_wordpress
when: "'connect_wordpress' in group_names"
#############################################################
# Updating databases for created inventory
#############################################################
- hosts: "pmci_database_selector_maria"
serial: "{{ serial_number | default(1) }}"
pre_tasks:
- name: "Import autodiscover pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
tasks:
- name: "Initialize wordpress admin user if necessary"
community.mysql.mysql_query:
login_db: "{{ connect_wordpress_maria_database }}"
login_user: "{{ connect_wordpress_maria_username }}"
login_password: "{{ connect_wordpress_maria_password }}"
login_unix_socket: /run/mysqld/mysqld.sock
query:
- UPDATE wp_options SET option_value = '{{ wordpress_admin_email }}' where option_name='admin_email' AND option_value='mAgmVXveeeMRgKP@netgo.de'
- UPDATE wp_users SET user_email = '{{ wordpress_admin_email }}' where user_login='wordpress-admin' AND user_email='mAgmVXveeeMRgKP@netgo.de'
- UPDATE wp_users SET user_pass = '{{ connect_wordpress_admin_password | md5 }}' where user_login='wordpress-admin' AND user_pass='$P$B1.mAgmVXveeeMRgKP.OYl5k/jJOjY.'
single_transaction: true
#############################################################
# Sending smardigo management message to process
#############################################################

@ -1,5 +1,4 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
@ -25,13 +24,9 @@
# Removing services for created inventory
#############################################################
- hosts: "stage_{{ stage }}"
- hosts: "pmci_server_selector"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
vars:
ansible_ssh_host: "{{ stage_server_domain }}"
tenant_id: "{{ tenant.key }}" # legacy paramater, backwards compatibility
cluster_name: "{{ cluster.key }}" # legacy paramater, backwards compatibility
pre_tasks:
- name: "Import autodiscover pre-tasks"
@ -40,6 +35,12 @@
tags:
- always
- name: "Setting default variables pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
tasks:
- name: "Delete DNS entry <{{ inventory_hostname }}> for <{{ domain }}>"
include_role:

@ -1,5 +1,4 @@
---
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
@ -10,13 +9,10 @@
# Stopping services for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
- hosts: "pmci_server_selector"
serial: "{{ serial_number | default(1) }}"
remote_user: root
vars:
ansible_ssh_host: "{{ stage_server_domain }}"
tenant_id: "{{ tenant.key }}" # legacy paramater, backwards compatibility
cluster_name: "{{ cluster.key }}" # legacy paramater, backwards compatibility
service_state: "{{ data.service_state | default('up') }}" # legacy paramater, backwards compatibility
pre_tasks:
@ -26,6 +22,12 @@
tags:
- always
- name: "Setting default variables pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
roles:
- role: service_state
vars:

@ -1,5 +1,4 @@
---
# Tenant maintenance
# (keycloak realm)
# (kibana space, user, role)
@ -39,12 +38,10 @@
# Running the PMCI roles
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
- hosts: "pmci_server_selector"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
vars:
management_base_url: "{{ stage }}-management-01-connect.{{ domain }}"
pre_tasks:
- name: "Import autodiscover pre-tasks"
@ -53,6 +50,12 @@
tags:
- always
- name: "Setting default variables pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
tasks:
- name: "Edit keycloak realm <{{ tenant.key }}>"
include_role:

@ -1,5 +1,4 @@
---
# Tenant creation
# (keycloak realm)
# (kibana space, user, role)
@ -39,12 +38,10 @@
# Running the PMCI roles
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
- hosts: "pmci_server_selector"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
vars:
management_base_url: "{{ stage }}-management-01-connect.{{ domain }}"
pre_tasks:
- name: "Import autodiscover pre-tasks"
@ -53,6 +50,12 @@
tags:
- always
- name: "Setting default variables pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
tasks:
- name: "Creating keycloak realm <{{ tenant.key }}>"
include_role:

@ -1,5 +1,4 @@
---
# Tenant deletion
# (keycloak realm)
# (kibana space, user, role)
@ -39,12 +38,10 @@
# Running the PMCI roles
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
- hosts: "pmci_server_selector"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
vars:
management_base_url: "{{ stage }}-management-01-connect.{{ domain }}"
pre_tasks:
- name: "Import autodiscover pre-tasks"
@ -53,6 +50,12 @@
tags:
- always
- name: "Setting default variables pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
tasks:
- name: "Delete keycloak realm <{{ tenant.key }}>"
include_role:

@ -1,5 +1,4 @@
---
# Tenant maintenance
# (keycloak realm)
# (kibana space, user, role)
@ -39,12 +38,11 @@
# Running the PMCI roles
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
- hosts: "pmci_server_selector"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
vars:
management_base_url: "{{ stage }}-management-01-connect.{{ domain }}"
sma_management_scope_id: "pmci"
sma_management_role_id: "user"
@ -55,6 +53,12 @@
tags:
- always
- name: "Setting default variables pre-tasks"
import_tasks: tasks/pmci_set_default_variables.yml
become: false
tags:
- always
tasks:
- name: "Updating assigned tenant ids for each user <{{ tenant.key }}>"
include_role:

@ -1,109 +0,0 @@
---
# deletes databases and roles on shared service servers
# - postgres
# - executed on stage specific server: {{ shared_service_postgres_primary }}
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# tenant_id := (unique key for the tenant, e.g. customer)
# cluster_name := (business name for the cluster, e.g. product, department )
# cluster_size := (WIP node count for the cluster)
# cluster_service := (service to setup, e.g. 'connect', ...)
# cluster_features := (optional features to use, e.g. ['wordpress', 'resubmission', ...])
# smardigo message callback
# scope_id := (scope id of the management process)
# process_instance_id := (process instance id of the management process)
# smardigo_management_action := (smardigo management action anme of the management process)
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
- hosts: localhost
connection: local
gather_facts: false
pre_tasks:
- name: "Import constraints check"
import_tasks: tasks/constraints_check.yml
become: false
tags:
- always
# add virtual server to load stage specific variables as context
- name: "Add <{{ stage }}-virtual-host-to-read-groups-vars> to hosts"
add_host:
name: "{{ stage }}-virtual-host-to-read-groups-vars"
groups:
- "stage_{{ stage }}"
changed_when: False
tasks:
- name: Add postgres servers to hosts if necessary
add_host:
name: "{{ shared_service_postgres_primary }}"
groups:
- "stage_{{ stage }}"
- "{{ item }}"
changed_when: False
with_items: "{{ cluster_features }}"
when: item in ['connect', 'management_connect', 'keycloak', 'gitea']
- name: Add maria servers to hosts if necessary
add_host:
name: "{{ shared_service_maria_primary }}"
groups:
- "stage_{{ stage }}"
- "{{ item }}"
changed_when: False
with_items: "{{ cluster_features }}"
when: item in ['connect_wordpress']
#############################################################
# Deleting databases for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
remote_user: root
vars:
database_state: absent
ansible_ssh_host: "{{ stage_server_domain }}"
pre_tasks:
- name: "Import autodiscover pre-tasks"
import_tasks: tasks/autodiscover_pre_tasks.yml
become: false
tags:
- always
roles:
- role: connect_postgres
when: "'connect' in group_names"
- role: gitea_postgres
when: "'gitea' in group_names"
- role: keycloak_postgres
when: "'keycloak' in group_names"
- role: connect_wordpress_maria
when: "'connect_wordpress' in group_names"
#############################################################
# Sending smardigo management message to process
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
run_once: true
vars:
connect_jwt_username: "{{ management_admin_username }}"
tasks:
- name: "Sending smardigo management message to <{{ shared_service_url_management }}>"
include_tasks: tasks/smardigo_management_message.yml

@ -1,95 +0,0 @@
---
# creates realm/clients on shared keycloak service
# - connect_realm: configuration to use with connect/wordpress
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# tenant_id := (unique key for the tenant, e.g. customer)
# cluster_name := (business name for the cluster, e.g. product, department )
# cluster_size := (WIP node count for the cluster)
# cluster_service := (service to setup, e.g. 'connect', ...)
# cluster_features := (optional features to use, e.g. ['wordpress', 'resubmission', ...])
# playbook roles (keycloak / oidc)
# current_realm_name :=
# current_realm_display_name :=
# smardigo message callback
# scope_id := (scope id of the management process)
# process_instance_id := (process instance id of the management process)
# smardigo_management_action := (smardigo management action anme of the management process)
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
- hosts: localhost
gather_facts: false
connection: local
pre_tasks:
- name: "Import constraints check"
import_tasks: tasks/constraints_check.yml
become: false
tags:
- always
# add virtual server to load stage specific variables as context
- name: "Add <{{ stage }}-virtual-host-to-read-groups-vars> to hosts"
add_host:
name: "{{ stage }}-virtual-host-to-read-groups-vars"
groups:
- "stage_{{ stage }}"
changed_when: False
tasks:
- name: Add hosts
add_host:
name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-{{ '%02d' | format(item|int) }}"
groups: "{{ ['stage_' + stage ] + [cluster_service] + cluster_features }}"
with_sequence: start=1 end={{ cluster_size | default(1) }}
changed_when: False
#############################################################
# Deleting client for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
collections:
- hetzner.hcloud
- community.general
pre_tasks:
- name: "Import autodiscover pre-tasks"
import_tasks: tasks/autodiscover_pre_tasks.yml
become: false
tags:
- always
tasks:
- name: "Delete client in realm <{{ current_realm_name }}>"
include_role:
name: keycloak
tasks_from: _delete_client
vars:
realm_name: "{{ current_realm_name }}"
client_name: "{{ cluster_name }}"
#############################################################
# Sending smardigo management message to process
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
run_once: true
vars:
connect_jwt_username: "{{ management_admin_username }}"
tasks:
- name: "Sending smardigo management message to <{{ shared_service_url_management }}>"
include_tasks: tasks/smardigo_management_message.yml

@ -1,94 +0,0 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# tenant_id := (unique key for the tenant, e.g. customer)
# cluster_name := (business name for the cluster, e.g. product, department )
# cluster_size := (WIP node count for the cluster)
# cluster_service := (service to setup, e.g. 'connect', ...)
# smardigo message callback
# scope_id := (scope id of the management process)
# process_instance_id := (process instance id of the management process)
# smardigo_management_action := (smardigo management action anme of the management process)
# Es wurde ein neues Playbook erstellt "remove_server", die für das löschen eines Servers zuständig ist.
# Es wurde eine Variable server_state initialisiert mir dem Defaultwert "present".
# Falls der Server gelöscht werden soll wird die variable in Playbook auf "absent" gesetzt
# Der Task "_set_server_state" prüft den Status und fährt den Server runter oder hoch anhand dem Wert der variable "server_state"
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
- hosts: localhost
gather_facts: false
connection: local
pre_tasks:
- name: "Import constraints check"
import_tasks: tasks/constraints_check.yml
become: false
tags:
- always
# add virtual server to load stage specific variables as context
- name: "Add <{{ stage }}-virtual-host-to-read-groups-vars> to hosts"
add_host:
name: "{{ stage }}-virtual-host-to-read-groups-vars"
groups:
- "stage_{{ stage }}"
changed_when: False
tasks:
- name: Add hosts
add_host:
name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-{{ '%02d' | format(item|int) }}"
groups:
- "stage_{{ stage }}"
- "{{ cluster_service }}"
with_sequence: start=1 end={{ cluster_size | default(1) }}
changed_when: False
when:
- tenant_id is defined
- cluster_name is defined
- cluster_service is defined
#############################################################
# Deleting servers/domains for created inventory
#############################################################
- hosts: "stage_{{ stage }}"
serial: "{{ serial_number | default(5) }}"
gather_facts: false
tasks:
- name: "Delete server <{{ inventory_hostname }}>"
include_role:
name: hetzner-ansible-hcloud
tasks_from: _set_server_state
vars:
- server_state: "absent"
- name: "Delete DNS entry <{{ inventory_hostname }}> for <{{ domain }}>"
include_role:
name: hetzner-ansible-dns
tasks_from: _remove_dns
vars:
record_to_remove: '{{ inventory_hostname }}'
#############################################################
# Sending smardigo management message to process
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
run_once: true
vars:
connect_jwt_username: "{{ management_admin_username }}"
tasks:
- name: "Sending smardigo management message to <{{ shared_service_url_management }}>"
include_tasks: tasks/smardigo_management_message.yml

@ -1,93 +0,0 @@
---
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# tenant_id := (unique key for the tenant, e.g. customer)
# cluster_name := (business name for the cluster, e.g. product, department )
# cluster_size := (WIP node count for the cluster)
# cluster_service := (service to setup, e.g. 'connect', ...)
# cluster_features := (optional features to use, e.g. ['wordpress', 'resubmission', ...])
# smardigo message callback
# scope_id := (scope id of the management process)
# process_instance_id := (process instance id of the management process)
# smardigo_management_action := (smardigo management action anme of the management process)
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
- hosts: localhost
gather_facts: false
connection: local
pre_tasks:
- name: "Import constraints check"
import_tasks: tasks/constraints_check.yml
become: false
tags:
- always
# add virtual server to load stage specific variables as context
- name: "Add <{{ stage }}-virtual-host-to-read-groups-vars> to hosts"
add_host:
name: "{{ stage }}-virtual-host-to-read-groups-vars"
groups:
- "stage_{{ stage }}"
changed_when: False
tasks:
- name: Add hosts
add_host:
name: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-{{ '%02d' | format(item|int) }}"
groups: "{{ ['stage_' + stage ] + [cluster_service] + cluster_features }}"
with_sequence: start=1 end={{ cluster_size | default(1) }}
changed_when: False
#############################################################
# Removing services for created inventory
#############################################################
- hosts: "stage_{{ stage }}"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
pre_tasks:
- name: "Import autodiscover pre-tasks"
import_tasks: tasks/autodiscover_pre_tasks.yml
become: false
tags:
- always
tasks:
- name: "Delete DNS entry <{{ inventory_hostname }}> for <{{ domain }}>"
include_role:
name: hetzner-ansible-dns
tasks_from: _remove_dns
vars:
record_to_remove: '{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-01-connect'
when: "'connect' in group_names"
- name: "Delete DNS entry <{{ inventory_hostname }}> for <{{ domain }}>"
include_role:
name: hetzner-ansible-dns
tasks_from: _remove_dns
vars:
record_to_remove: '{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-01-wordpress'
when: "'connect_wordpress' in group_names"
#############################################################
# Sending smardigo management message to process
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
run_once: true
vars:
connect_jwt_username: "{{ management_admin_username }}"
tasks:
- name: "Sending smardigo management message to <{{ shared_service_url_management }}>"
include_tasks: tasks/smardigo_management_message.yml

@ -1,90 +0,0 @@
---
# restores a database backup
# - postgres
# - executed on stage specific server: {{ shared_service_postgres_primary }}
# - restores a database backup
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# tenant_id := (unique key for the tenant, e.g. customer)
# cluster_name := (business name for the cluster, e.g. product, department )
# cluster_service := (service to setup, e.g. 'connect', ...)
# cluster_features := (optional features to use, e.g. ['wordpress', 'resubmission', ...])
# custom_backup_name := defines a substring for backup file => {{ stage }}_{{ tenant_id }}_{{ cluster_name }}_{{ cluster_service }}__gehtdichnixan.sql
# smardigo message callback
# scope_id := (scope id of the management process)
# process_instance_id := (process instance id of the management process)
# smardigo_management_action := (smardigo management action anme of the management process)
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
- hosts: localhost
connection: local
gather_facts: false
pre_tasks:
- name: "Import constraints check"
import_tasks: tasks/constraints_check.yml
become: false
tags:
- always
# add virtual server to load stage specific variables as context
- name: "Add <{{ stage }}-virtual-host-to-read-groups-vars> to hosts"
add_host:
name: "{{ stage }}-virtual-host-to-read-groups-vars"
groups:
- "stage_{{ stage }}"
changed_when: False
tasks:
- name: "Add postgres servers to hosts if necessary"
add_host:
name: "{{ shared_service_postgres_primary }}"
groups:
- "stage_{{ stage }}"
- "{{ item }}"
changed_when: False
with_items: "{{ cluster_features }}"
when: item in ['connect', 'management_connect', 'keycloak', 'gitea']
#############################################################
# Restoring databases for created inventory
#############################################################
- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
remote_user: root
vars:
database_backup_state: restore
ansible_ssh_host: "{{ stage_server_domain }}"
roles:
- role: connect_postgres
when: "'connect' in group_names"
- role: gitea_postgres
when: "'gitea' in group_names"
- role: keycloak_postgres
when: "'keycloak' in group_names"
#############################################################
# Sending smardigo management message to process
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
run_once: true
vars:
connect_jwt_username: "{{ management_admin_username }}"
tasks:
- name: "Sending smardigo management message to <{{ shared_service_url_management }}>"
include_tasks: tasks/smardigo_management_message.yml

@ -26,9 +26,8 @@ current_realm_users_base:
- username: "{{ connect_client_admin_username }}"
password: "{{ connect_client_admin_password }}"
current_realm_users_wordpress:
- username: "{{ connect_wordpress_buergerportal_username | default() }}"
password: "{{ connect_wordpress_buergerportal_password | default() }}"
# TODO wordpress does not use keycloak/oidc yet
current_realm_users_wordpress: []
current_realm_users: >-
{%- if 'connect_wordpress' in groups -%}

@ -1,4 +0,0 @@
---
wordpress_image_name: "{{ shared_service_hostname_harbor }}/smardigo/wordpress"
wordpress_image_version: "6.1.0.1"

@ -6,7 +6,7 @@
- name: "Creating smardigo user token"
smardigo_user_token:
secret: "{{ connect_jwt_secret }}"
user_id: "{{ connect_wordpress_buergerportal_username }}"
user_id: "{{ wordpress_connect_username }}"
register: smardigo_user_token_result
delegate_to: 127.0.0.1
become: false

@ -1,4 +1,5 @@
---
wordpress_db_host: "{{ shared_service_maria_primary }}:{{ wordpress_mysql_port | default('3306') }}"
wordpress_labels:
- '"traefik.enable=true"'
@ -32,7 +33,7 @@ wordpress_docker:
image_version: "{{ wordpress_image_version }}"
labels: "{{ wordpress_labels + ( wordpress_labels_additional | default([])) }}"
environment:
- "WORDPRESS_DB_HOST: \"{{ shared_service_maria_primary }}:{{ wordpress_mysql_port | default('3306') }}\""
- "WORDPRESS_DB_HOST: \"{{ wordpress_db_host }}\""
- "WORDPRESS_DB_USER: \"{{ connect_wordpress_maria_username }}\""
- "WORDPRESS_DB_PASSWORD: \"{{ connect_wordpress_maria_password }}\""
- "WORDPRESS_DB_NAME: \"{{ connect_wordpress_maria_database }}\""
@ -46,7 +47,8 @@ wordpress_docker:
- "SMARDIGO_AUTH_TOKEN_NAME: \"{{ smardigo_auth_token_name }}\""
- "SMARDIGO_AUTH_TOKEN_VALUE: \"{{ smardigo_auth_token_value }}\""
volumes:
- '"{{ wordpress_id }}-content:/var/www/html/wp-content"'
- '"{{ wordpress_id }}-content:/var/www/html"'
- './config/config.ini:/usr/local/etc/php/conf.d/config.ini'
networks:
- '"back-tier"'
- '"front-tier"'

@ -1,15 +1,17 @@
---
### tags:
- name: 'Ensures <{{ upload_directory }}> directory exists'
file:
ansible.builtin.file:
state: directory
path: '{{ upload_directory }}'
owner: '{{ upload_owner }}'
group: '{{ upload_group }}'
mode: 0755
- name: "Copy file to remote <{{ upload_directory }}/{{ upload_file | basename }}>"
copy:
ansible.builtin.copy:
src: "{{ upload_file }}"
dest: "{{ upload_directory }}/{{ upload_file | basename }}"
owner: '{{ upload_owner }}'
group: '{{ upload_group }}'
mode: 0644

@ -1,8 +1,5 @@
#!/bin/bash
rm -f provisioning.zip
zip -r provisioning.zip provisioning/
rm -f template.zip
zip -r template.zip template/

@ -36,8 +36,6 @@
</tr>
<tr th:if="${wordpress_admin != null}">
<td>Wordpress</td>
<td th:text="${ wordpress_admin.username }">some-username</td>
<td th:text="${ wordpress_admin.password }">some-password</td>
<td th:text="'https://' + ${ service.name } + '-01-wordpress.smardigo.digital'">some-link</td>
</tr>
<tr>

File diff suppressed because it is too large Load Diff

@ -37,11 +37,10 @@
</bpmn2:task>
<bpmn2:sequenceFlow id="Flow_11ki58f" sourceRef="Activity_0poyoeb" targetRef="Activity_1t227a4" />
<bpmn2:sequenceFlow id="Flow_1eku1o4" sourceRef="Activity_1t227a4" targetRef="Activity_12drjd3" />
<bpmn2:sequenceFlow id="Flow_0pvr263" sourceRef="Activity_12drjd3" targetRef="Activity_02j0299" />
<bpmn2:sequenceFlow id="Flow_0pvr263" sourceRef="Activity_12drjd3" targetRef="Activity_13dxxan" />
<bpmn2:sequenceFlow id="Flow_1f0iyrk" sourceRef="Activity_02j0299" targetRef="Activity_1hpnorc" />
<bpmn2:sequenceFlow id="Flow_11k5c1y" sourceRef="Activity_1hpnorc" targetRef="Activity_0f5w8ui" />
<bpmn2:sequenceFlow id="Flow_1r4otto" sourceRef="Activity_0f5w8ui" targetRef="Activity_05mqkaj" />
<bpmn2:sequenceFlow id="Flow_1u7vy0j" sourceRef="Activity_05mqkaj" targetRef="Activity_1f023c1" />
<bpmn2:sequenceFlow id="Flow_1r4otto" sourceRef="Activity_0f5w8ui" targetRef="Activity_1f023c1" />
<bpmn2:sequenceFlow id="Flow_19vs5q0" sourceRef="Activity_1f023c1" targetRef="Activity_0wo4c94" />
<bpmn2:sequenceFlow id="Flow_022fwic" sourceRef="Activity_0wo4c94" targetRef="Event_09hkg8k" />
<bpmn2:sequenceFlow id="Flow_1p27woa" sourceRef="Activity_0e0vefu" targetRef="Activity_0kyjwnh" />
@ -112,7 +111,7 @@
<camunda:in source="simulation" target="simulation" />
<camunda:in source="in_data" target="data" />
</bpmn2:extensionElements>
<bpmn2:incoming>Flow_0pvr263</bpmn2:incoming>
<bpmn2:incoming>Flow_1khr5z7</bpmn2:incoming>
<bpmn2:outgoing>Flow_1f0iyrk</bpmn2:outgoing>
</bpmn2:callActivity>
<bpmn2:callActivity id="Activity_1hpnorc" name="pmci-service-create" calledElement="smardigo-management-action">
@ -146,7 +145,7 @@
<bpmn2:incoming>Flow_11k5c1y</bpmn2:incoming>
<bpmn2:outgoing>Flow_1r4otto</bpmn2:outgoing>
</bpmn2:callActivity>
<bpmn2:callActivity id="Activity_05mqkaj" name="pmci-database-backup-import" calledElement="smardigo-management-action">
<bpmn2:callActivity id="Activity_13dxxan" name="pmci-database-backup-import" calledElement="smardigo-management-action">
<bpmn2:extensionElements>
<camunda:in businessKey="#{execution.processBusinessKey}" />
<camunda:in variables="all" />
@ -161,9 +160,10 @@
</camunda:inputOutput>
<camunda:in source="simulation" target="simulation" />
</bpmn2:extensionElements>
<bpmn2:incoming>Flow_1r4otto</bpmn2:incoming>
<bpmn2:outgoing>Flow_1u7vy0j</bpmn2:outgoing>
<bpmn2:incoming>Flow_0pvr263</bpmn2:incoming>
<bpmn2:outgoing>Flow_1khr5z7</bpmn2:outgoing>
</bpmn2:callActivity>
<bpmn2:sequenceFlow id="Flow_1khr5z7" sourceRef="Activity_13dxxan" targetRef="Activity_02j0299" />
<bpmn2:callActivity id="Activity_1f023c1" name="pmci-monitoring-update" calledElement="smardigo-management-action">
<bpmn2:extensionElements>
<camunda:in businessKey="#{execution.processBusinessKey}" />
@ -176,7 +176,7 @@
</camunda:inputOutput>
<camunda:in source="simulation" target="simulation" />
</bpmn2:extensionElements>
<bpmn2:incoming>Flow_1u7vy0j</bpmn2:incoming>
<bpmn2:incoming>Flow_1r4otto</bpmn2:incoming>
<bpmn2:outgoing>Flow_19vs5q0</bpmn2:outgoing>
</bpmn2:callActivity>
<bpmn2:callActivity id="Activity_0wo4c94" name="sma-mgmt-mail service-setup" calledElement="smardigo-management-mail">
@ -206,45 +206,45 @@
<bpmn2:text>create data object</bpmn2:text>
</bpmn2:textAnnotation>
<bpmn2:association id="Association_16yj1cc" sourceRef="Activity_0kyjwnh" targetRef="TextAnnotation_0ft6ox2" />
<bpmn2:textAnnotation id="TextAnnotation_0ctnzyu">
<bpmn2:text>Server erstellen</bpmn2:text>
<bpmn2:textAnnotation id="TextAnnotation_0zn8zwz">
<bpmn2:text>with data object</bpmn2:text>
</bpmn2:textAnnotation>
<bpmn2:association id="Association_1y7k0s3" sourceRef="Activity_1t227a4" targetRef="TextAnnotation_0ctnzyu" />
<bpmn2:textAnnotation id="TextAnnotation_0xh2sya">
<bpmn2:text>Datenbank(en) erstellen</bpmn2:text>
<bpmn2:association id="Association_0u5uqdi" sourceRef="Activity_02j0299" targetRef="TextAnnotation_0zn8zwz" />
<bpmn2:textAnnotation id="TextAnnotation_0m2zdxg">
<bpmn2:text>with data object</bpmn2:text>
</bpmn2:textAnnotation>
<bpmn2:association id="Association_1oefb0g" sourceRef="Activity_12drjd3" targetRef="TextAnnotation_0xh2sya" />
<bpmn2:association id="Association_10pkzhp" sourceRef="Activity_1hpnorc" targetRef="TextAnnotation_0m2zdxg" />
<bpmn2:textAnnotation id="TextAnnotation_0w6hfjw">
<bpmn2:text>Datenbank(en) Backup importieren</bpmn2:text>
</bpmn2:textAnnotation>
<bpmn2:association id="Association_09q4fwc" sourceRef="Activity_13dxxan" targetRef="TextAnnotation_0w6hfjw" />
<bpmn2:textAnnotation id="TextAnnotation_0839rkw">
<bpmn2:text>Realm/Client erstellen</bpmn2:text>
</bpmn2:textAnnotation>
<bpmn2:textAnnotation id="TextAnnotation_0zn8zwz">
<bpmn2:text>with data object</bpmn2:text>
</bpmn2:textAnnotation>
<bpmn2:association id="Association_1s93ss1" sourceRef="Activity_02j0299" targetRef="TextAnnotation_0839rkw" />
<bpmn2:association id="Association_0u5uqdi" sourceRef="Activity_02j0299" targetRef="TextAnnotation_0zn8zwz" />
<bpmn2:textAnnotation id="TextAnnotation_0jg0jwa">
<bpmn2:text>Service erstellen</bpmn2:text>
</bpmn2:textAnnotation>
<bpmn2:textAnnotation id="TextAnnotation_0m2zdxg">
<bpmn2:text>with data object</bpmn2:text>
</bpmn2:textAnnotation>
<bpmn2:association id="Association_13sjaxt" sourceRef="Activity_1hpnorc" targetRef="TextAnnotation_0jg0jwa" />
<bpmn2:association id="Association_10pkzhp" sourceRef="Activity_1hpnorc" targetRef="TextAnnotation_0m2zdxg" />
<bpmn2:textAnnotation id="TextAnnotation_09t161d">
<bpmn2:text>Kibana Zugriff konfigurieren</bpmn2:text>
</bpmn2:textAnnotation>
<bpmn2:association id="Association_0t6ii13" sourceRef="Activity_0f5w8ui" targetRef="TextAnnotation_09t161d" />
<bpmn2:textAnnotation id="TextAnnotation_0w6hfjw">
<bpmn2:text>Datenbank(en) Backup importieren</bpmn2:text>
<bpmn2:textAnnotation id="TextAnnotation_0xh2sya">
<bpmn2:text>Datenbank(en) erstellen</bpmn2:text>
</bpmn2:textAnnotation>
<bpmn2:association id="Association_09q4fwc" sourceRef="Activity_05mqkaj" targetRef="TextAnnotation_0w6hfjw" />
<bpmn2:association id="Association_1oefb0g" sourceRef="Activity_12drjd3" targetRef="TextAnnotation_0xh2sya" />
<bpmn2:textAnnotation id="TextAnnotation_0ctnzyu">
<bpmn2:text>Server erstellen</bpmn2:text>
</bpmn2:textAnnotation>
<bpmn2:association id="Association_1y7k0s3" sourceRef="Activity_1t227a4" targetRef="TextAnnotation_0ctnzyu" />
<bpmn2:textAnnotation id="TextAnnotation_19we2s6">
<bpmn2:text>Monitoring aktualisieren</bpmn2:text>
</bpmn2:textAnnotation>
<bpmn2:association id="Association_0kqrljp" sourceRef="Activity_1f023c1" targetRef="TextAnnotation_19we2s6" />
<bpmn2:textAnnotation id="TextAnnotation_1rb2giz">
<bpmn2:text>with data object</bpmn2:text>
</bpmn2:textAnnotation>
<bpmn2:association id="Association_0kqrljp" sourceRef="Activity_1f023c1" targetRef="TextAnnotation_19we2s6" />
<bpmn2:association id="Association_19otigu" sourceRef="Activity_0wo4c94" targetRef="TextAnnotation_1rb2giz" />
</bpmn2:process>
<bpmn2:signal id="Signal_0kz05aq" name="antrag-abgeschlossen-${execution.getProcessInstanceId()}" />
@ -253,51 +253,47 @@
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_1f4hb0y">
<bpmndi:BPMNShape id="Participant_19lpjee_di" bpmnElement="Participant_19lpjee" isHorizontal="true">
<dc:Bounds x="152" y="400" width="2138" height="430" />
<dc:Bounds x="152" y="400" width="2088" height="430" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="TextAnnotation_0ft6ox2_di" bpmnElement="TextAnnotation_0ft6ox2">
<dc:Bounds x="480" y="720" width="100" height="41" />
<bpmndi:BPMNShape id="TextAnnotation_0zn8zwz_di" bpmnElement="TextAnnotation_0zn8zwz">
<dc:Bounds x="1280" y="720" width="100" height="30" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="TextAnnotation_0ctnzyu_di" bpmnElement="TextAnnotation_0ctnzyu">
<dc:Bounds x="820" y="535" width="100" height="30" />
<bpmndi:BPMNShape id="TextAnnotation_0m2zdxg_di" bpmnElement="TextAnnotation_0m2zdxg">
<dc:Bounds x="1450" y="720" width="100" height="30" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="TextAnnotation_0xh2sya_di" bpmnElement="TextAnnotation_0xh2sya">
<dc:Bounds x="990" y="530" width="100" height="39" />
<bpmndi:BPMNShape id="TextAnnotation_0w6hfjw_di" bpmnElement="TextAnnotation_0w6hfjw">
<dc:Bounds x="1140" y="510" width="100" height="55" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="TextAnnotation_0839rkw_di" bpmnElement="TextAnnotation_0839rkw">
<dc:Bounds x="1160" y="530" width="100" height="39" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="TextAnnotation_0zn8zwz_di" bpmnElement="TextAnnotation_0zn8zwz">
<dc:Bounds x="1160" y="720" width="100" height="30" />
<dc:Bounds x="1280" y="510" width="100" height="39" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="TextAnnotation_0jg0jwa_di" bpmnElement="TextAnnotation_0jg0jwa">
<dc:Bounds x="1330" y="530" width="100" height="41" />
<dc:Bounds x="1450" y="509" width="100" height="41" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="TextAnnotation_0m2zdxg_di" bpmnElement="TextAnnotation_0m2zdxg">
<dc:Bounds x="1330" y="720" width="100" height="30" />
<bpmndi:BPMNShape id="TextAnnotation_09t161d_di" bpmnElement="TextAnnotation_09t161d">
<dc:Bounds x="1620" y="510" width="100" height="39" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="TextAnnotation_09t161d_di" bpmnElement="TextAnnotation_09t161d">
<dc:Bounds x="1500" y="530" width="100" height="39" />
<bpmndi:BPMNShape id="TextAnnotation_0xh2sya_di" bpmnElement="TextAnnotation_0xh2sya">
<dc:Bounds x="990" y="510" width="100" height="39" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="TextAnnotation_0w6hfjw_di" bpmnElement="TextAnnotation_0w6hfjw">
<dc:Bounds x="1670" y="530" width="100" height="55" />
<bpmndi:BPMNShape id="TextAnnotation_0ctnzyu_di" bpmnElement="TextAnnotation_0ctnzyu">
<dc:Bounds x="820" y="510" width="100" height="30" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="TextAnnotation_19we2s6_di" bpmnElement="TextAnnotation_19we2s6">
<dc:Bounds x="1830" y="530" width="100" height="41" />
<dc:Bounds x="1780" y="530" width="100" height="41" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="TextAnnotation_1rb2giz_di" bpmnElement="TextAnnotation_1rb2giz">
<dc:Bounds x="2000" y="720" width="100" height="30" />
<dc:Bounds x="1950" y="720" width="100" height="30" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_0icoemn_di" bpmnElement="Event_0icoemn">
@ -326,76 +322,76 @@
<dc:Bounds x="990" y="600" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="TextAnnotation_0ft6ox2_di" bpmnElement="TextAnnotation_0ft6ox2">
<dc:Bounds x="480" y="720" width="100" height="41" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_02j0299_di" bpmnElement="Activity_02j0299" bioc:stroke="rgb(67, 160, 71)" bioc:fill="rgb(200, 230, 201)">
<dc:Bounds x="1160" y="600" width="100" height="80" />
<dc:Bounds x="1280" y="600" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1hpnorc_di" bpmnElement="Activity_1hpnorc" bioc:stroke="rgb(67, 160, 71)" bioc:fill="rgb(200, 230, 201)">
<dc:Bounds x="1330" y="600" width="100" height="80" />
<dc:Bounds x="1450" y="600" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0f5w8ui_di" bpmnElement="Activity_0f5w8ui" bioc:stroke="#43a047" bioc:fill="#c8e6c9" color:background-color="#c8e6c9" color:border-color="#43a047">
<dc:Bounds x="1500" y="600" width="100" height="80" />
<dc:Bounds x="1620" y="600" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_05mqkaj_di" bpmnElement="Activity_05mqkaj" bioc:stroke="rgb(67, 160, 71)" bioc:fill="rgb(200, 230, 201)">
<dc:Bounds x="1670" y="600" width="100" height="80" />
<bpmndi:BPMNShape id="BPMNShape_0ew3zw5" bpmnElement="Activity_13dxxan" bioc:stroke="rgb(67, 160, 71)" bioc:fill="rgb(200, 230, 201)">
<dc:Bounds x="1140" y="600" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0s4omfn" bpmnElement="Activity_1f023c1" bioc:stroke="#000000" bioc:fill="#ffffff" color:background-color="#ffffff" color:border-color="#000000">
<dc:Bounds x="1830" y="600" width="100" height="80" />
<dc:Bounds x="1780" y="600" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0f6z7ac_di" bpmnElement="Activity_0wo4c94" bioc:stroke="rgb(67, 160, 71)" bioc:fill="rgb(200, 230, 201)">
<dc:Bounds x="2000" y="600" width="100" height="80" />
<dc:Bounds x="1950" y="600" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_1fpt8h9_di" bpmnElement="Event_09hkg8k">
<dc:Bounds x="2172" y="622" width="36" height="36" />
<dc:Bounds x="2122" y="622" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Association_16yj1cc_di" bpmnElement="Association_16yj1cc">
<di:waypoint x="530" y="680" />
<di:waypoint x="530" y="720" />
<bpmndi:BPMNEdge id="Association_0u5uqdi_di" bpmnElement="Association_0u5uqdi">
<di:waypoint x="1330" y="680" />
<di:waypoint x="1330" y="720" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Association_1y7k0s3_di" bpmnElement="Association_1y7k0s3">
<di:waypoint x="870" y="600" />
<di:waypoint x="870" y="565" />
<bpmndi:BPMNEdge id="Association_10pkzhp_di" bpmnElement="Association_10pkzhp">
<di:waypoint x="1500" y="680" />
<di:waypoint x="1500" y="720" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Association_1oefb0g_di" bpmnElement="Association_1oefb0g">
<di:waypoint x="1040" y="600" />
<di:waypoint x="1040" y="569" />
<bpmndi:BPMNEdge id="Association_09q4fwc_di" bpmnElement="Association_09q4fwc">
<di:waypoint x="1190" y="600" />
<di:waypoint x="1190" y="565" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Association_1s93ss1_di" bpmnElement="Association_1s93ss1">
<di:waypoint x="1210" y="600" />
<di:waypoint x="1210" y="569" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Association_0u5uqdi_di" bpmnElement="Association_0u5uqdi">
<di:waypoint x="1210" y="680" />
<di:waypoint x="1210" y="720" />
<di:waypoint x="1330" y="600" />
<di:waypoint x="1330" y="549" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Association_13sjaxt_di" bpmnElement="Association_13sjaxt">
<di:waypoint x="1380" y="600" />
<di:waypoint x="1380" y="571" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Association_10pkzhp_di" bpmnElement="Association_10pkzhp">
<di:waypoint x="1380" y="680" />
<di:waypoint x="1380" y="720" />
<di:waypoint x="1500" y="600" />
<di:waypoint x="1500" y="550" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Association_0t6ii13_di" bpmnElement="Association_0t6ii13">
<di:waypoint x="1550" y="600" />
<di:waypoint x="1550" y="569" />
<di:waypoint x="1670" y="600" />
<di:waypoint x="1670" y="549" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Association_09q4fwc_di" bpmnElement="Association_09q4fwc">
<di:waypoint x="1720" y="600" />
<di:waypoint x="1720" y="585" />
<bpmndi:BPMNEdge id="Association_1oefb0g_di" bpmnElement="Association_1oefb0g">
<di:waypoint x="1040" y="600" />
<di:waypoint x="1040" y="549" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Association_1y7k0s3_di" bpmnElement="Association_1y7k0s3">
<di:waypoint x="870" y="600" />
<di:waypoint x="870" y="540" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Association_0kqrljp_di" bpmnElement="Association_0kqrljp">
<di:waypoint x="1880" y="600" />
<di:waypoint x="1880" y="571" />
<di:waypoint x="1830" y="600" />
<di:waypoint x="1830" y="571" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Association_19otigu_di" bpmnElement="Association_19otigu">
<di:waypoint x="2050" y="680" />
<di:waypoint x="2050" y="720" />
<di:waypoint x="2000" y="680" />
<di:waypoint x="2000" y="720" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_17vb4ef_di" bpmnElement="Flow_17vb4ef">
<di:waypoint x="250" y="640" />
@ -411,31 +407,27 @@
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0pvr263_di" bpmnElement="Flow_0pvr263">
<di:waypoint x="1090" y="640" />
<di:waypoint x="1160" y="640" />
<di:waypoint x="1140" y="640" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1f0iyrk_di" bpmnElement="Flow_1f0iyrk">
<di:waypoint x="1260" y="640" />
<di:waypoint x="1330" y="640" />
<di:waypoint x="1380" y="640" />
<di:waypoint x="1450" y="640" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_11k5c1y_di" bpmnElement="Flow_11k5c1y">
<di:waypoint x="1430" y="640" />
<di:waypoint x="1500" y="640" />
<di:waypoint x="1550" y="640" />
<di:waypoint x="1620" y="640" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1r4otto_di" bpmnElement="Flow_1r4otto">
<di:waypoint x="1600" y="640" />
<di:waypoint x="1670" y="640" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1u7vy0j_di" bpmnElement="Flow_1u7vy0j">
<di:waypoint x="1770" y="640" />
<di:waypoint x="1830" y="640" />
<di:waypoint x="1720" y="640" />
<di:waypoint x="1780" y="640" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_19vs5q0_di" bpmnElement="Flow_19vs5q0">
<di:waypoint x="1930" y="640" />
<di:waypoint x="2000" y="640" />
<di:waypoint x="1880" y="640" />
<di:waypoint x="1950" y="640" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_022fwic_di" bpmnElement="Flow_022fwic">
<di:waypoint x="2100" y="640" />
<di:waypoint x="2172" y="640" />
<di:waypoint x="2050" y="640" />
<di:waypoint x="2122" y="640" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1p27woa_di" bpmnElement="Flow_1p27woa">
<di:waypoint x="410" y="640" />
@ -445,6 +437,14 @@
<di:waypoint x="580" y="640" />
<di:waypoint x="650" y="640" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Association_16yj1cc_di" bpmnElement="Association_16yj1cc">
<di:waypoint x="530" y="680" />
<di:waypoint x="530" y="720" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1khr5z7_di" bpmnElement="Flow_1khr5z7">
<di:waypoint x="1240" y="640" />
<di:waypoint x="1280" y="640" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn2:definitions>

@ -15,6 +15,7 @@
def data = [:]
/**** create connect admin user ****/
def connect_admin = [:]
connect_admin["username"] = service.cluster.key + "-connect-admin"
if (binding.hasVariable('connect_admin_password')) {
@ -27,6 +28,7 @@ data["connect"] = connect
execution.setVariable('connect_admin', connect_admin)
/**** create wordpress admin user ****/
if (service.connect_features.contains("connect_wordpress")) {
def wordpress_admin = [:]
wordpress_admin["username"] = service.cluster.key + "-wordpress-admin"

File diff suppressed because one or more lines are too long

@ -1,23 +0,0 @@
{
"name": "awx-job-plain",
"restApi": true,
"configKey": "awx-job-plain",
"payloadType": "REST",
"config": [
{
"name": "connection",
"type": "CONNECTION",
"value": "awx"
},
{
"name": "resource",
"type": "STRING",
"value": "api/v2/jobs/${id}/"
},
{
"name": "sqlStatement",
"type": "STRING",
"value": "SELECT id,status,failed,created,started,finished,name,description,elapsed,scm_revision FROM default_table"
}
]
}

@ -1,19 +0,0 @@
{
"name" : "awx-job-templates-plain",
"restApi" : true,
"configKey" : "awx-job-templates-plain",
"payloadType" : "REST",
"config" : [ {
"name" : "connection",
"type" : "CONNECTION",
"value" : "awx"
}, {
"name" : "resource",
"type" : "STRING",
"value" : "api/v2/job_templates?search=${name}"
}, {
"name" : "sqlStatement",
"type" : "STRING",
"value" : "SELECT results FROM default_table"
} ]
}

@ -1,15 +0,0 @@
{
"name" : "awx-job-templates",
"restApi" : true,
"configKey" : "awx-job-templates",
"payloadType" : "POST_PROCESSING",
"config" : [ {
"name" : "datasource_key",
"type" : "STRING",
"value" : "awx-job-templates-plain"
}, {
"name" : "groovy_script",
"type" : "STRING",
"value" : "def result = []\ndata.each{templates ->\n templates.results.each{ template ->\n if (parameters['name'] == template.name) {\n result.add([id: template.id, name: template.name])\n }\n }\n}\nresult"
} ]
}

@ -1,18 +0,0 @@
{
"name": "awx-job",
"restApi": true,
"configKey": "awx-job",
"payloadType": "POST_PROCESSING",
"config": [
{
"name": "datasource_key",
"type": "STRING",
"value": "awx-job-plain"
},
{
"name": "groovy_script",
"type": "STRING",
"value": "def result = []\ndata.each{job ->\n if (parameters['stage']) {\n job.stage = parameters.stage\n }\n result.add(job)\n}\nresult"
}
]
}

@ -1 +0,0 @@
{"name":"connect-features","restApi":true,"configKey":"connect-features","payloadType":"EXCEL","config":[{"name":"file","type":"FILE","value":"connect-features.xlsx"},{"name":"columnNames","type":"STRING","value":""},{"name":"sqlStatement","type":"STRING","value":"select * from features where default in (${default})"},{"name":"columnNameLineNumber","type":"INT","value":1},{"name":"skipEmptyLines","type":"BOOLEAN","value":false},{"name":"skipEmptyColumns","type":"BOOLEAN","value":false}]}

@ -1,17 +0,0 @@
{
"name" : "Mandanten",
"restApi" : true,
"configKey" : "tenants",
"payloadType" : "ENTITY",
"config" : [ {
"name" : "entityId",
"type" : "STRING",
"value" : "tenants"
}, {
"name" : "propertyFilterKey",
"type" : "STRING"
}, {
"name" : "propertyFilterValue",
"type" : "STRING"
} ]
}

@ -1,21 +0,0 @@
{
"name" : "whitelabel-docker-image-tags-plain",
"restApi" : true,
"configKey" : "whitelabel-docker-image-tags-plain",
"payloadType" : "REST",
"config" : [ {
"name" : "connection",
"type" : "CONNECTION",
"value" : "harbor"
},
{
"name" : "resource",
"type" : "STRING",
"value" : "/smardigo/connect-whitelabel-app/tags/list"
},
{
"name" : "sqlStatement",
"type" : "STRING",
"value" : "SELECT * FROM default_table"
} ]
}

@ -1,16 +0,0 @@
{
"name" : "whitelabel-docker-image-tags",
"restApi" : true,
"configKey" : "whitelabel-docker-image-tags",
"payloadType" : "POST_PROCESSING",
"config" : [ {
"name" : "datasource_key",
"type" : "STRING",
"value" : "whitelabel-docker-image-tags-plain"
},
{
"name" : "groovy_script",
"type" : "STRING",
"value" : "def result = []\ndata.each{values ->\n values.tags.each{ value ->\n result.add([value: value, label: value])\n }\n}\nresult"
} ]
}

@ -1,178 +0,0 @@
{
"name" : "Dialog zur Freigabe",
"configKey" : "approve",
"display" : "form",
"page" : 0,
"components" : [ {
"label" : "Entscheidung",
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "select",
"input" : true,
"key" : "antrag_decission",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : "",
"required" : true,
"select" : false,
"custom" : "",
"customPrivate" : false
},
"conditional" : {
"show" : "",
"when" : "",
"json" : "",
"eq" : ""
},
"data" : {
"custom" : "values = [\n { \"label\": \"Antrag ablehnen\", \"value\": \"antragAblehnen\" }\n];\nif (true) {\n values.splice(1, 0, { \"label\": \"Antrag genehmigen\", \"value\": \"antragGenehmigen\" });\n}",
"values" : [ ],
"json" : "",
"url" : "",
"resource" : ""
},
"valueProperty" : "value",
"selectThreshold" : 0.3,
"encrypted" : false,
"properties" : { },
"customConditional" : "",
"logic" : [ ],
"tags" : [ ],
"dataSrc" : "custom",
"searchEnabled" : false,
"tabs" : null,
"reorder" : false,
"lazyLoad" : false,
"selectValues" : "",
"disableLimit" : false,
"sort" : "",
"reference" : false,
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"protected" : false,
"unique" : false,
"persistent" : true,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelPosition" : "top",
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"widget" : null,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"limit" : 100,
"filter" : "",
"searchField" : "",
"minSearch" : 0,
"readOnlyValue" : false,
"authenticate" : false,
"template" : "<span>{{ item.label }}</span>",
"selectFields" : "",
"customSearchCriteria" : "",
"searchThreshold" : 0.3,
"fuseOptions" : { },
"customOptions" : { },
"infiniteScroll" : false,
"clearValueIfNotInItems" : false,
"clientSideFilter" : "",
"id" : "e9osarl"
}, {
"label" : "Bitte hinterlegen Sie einen Kommentar",
"isUploadEnabled" : false,
"showWordCount" : false,
"showCharCount" : false,
"autofocus" : true,
"tableView" : true,
"alwaysEnabled" : false,
"wysiwyg" : "",
"rows" : 5,
"type" : "textarea",
"input" : true,
"key" : "approve_comment:createComment",
"defaultValue" : "",
"validate" : {
"unique" : false,
"json" : "",
"required" : false,
"custom" : "",
"customPrivate" : false,
"minLength" : "",
"maxLength" : "",
"minWords" : "",
"maxWords" : "",
"pattern" : ""
},
"properties" : { },
"tags" : [ ],
"inputFormat" : "plain",
"spellcheck" : true,
"conditional" : {
"show" : "",
"when" : "",
"json" : "",
"eq" : ""
},
"encrypted" : false,
"logic" : [ ],
"customConditional" : "",
"uploadUrl" : "",
"uploadOptions" : "",
"uploadDir" : "",
"reorder" : false,
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"protected" : false,
"unique" : false,
"persistent" : true,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelPosition" : "top",
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"widget" : {
"format" : "yyyy-MM-dd hh:mm a",
"dateFormat" : "yyyy-MM-dd hh:mm a",
"saveAs" : "text"
},
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"mask" : false,
"inputType" : "text",
"inputMask" : "",
"editor" : "",
"id" : "e3y1fri"
} ]
}

@ -1,87 +0,0 @@
{
"name" : "Anhänge",
"configKey" : "attachments",
"page" : 0,
"components" : [ {
"dropzoneConfig" : {
"maxFilesize" : "10",
"dictDefaultMessage" : "Dateien zum Anhängen/Hochladen ablegen oder durchsuchen",
"dictHelpText" : "Maximale Dateigröße: {{config.maxFilesize}}MB. Akzeptierte Dateitypen: Office-Dokumente und Bilder.",
"acceptedFiles" : ".pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx, image/*, .csv, .xml, .txt",
"paramName" : "content",
"url" : "api/scope/{{context.scopeId}}/process/{{context.processId}}/attachment"
},
"columns" : [ {
"name" : "Name",
"property" : "name",
"value" : "",
"type" : "filename",
"width" : "20%"
}, {
"name" : "Erstellt am",
"property" : "creationDate",
"type" : "date",
"value" : "{{moment(creationDate).format('DD.MM.YYYY HH:mm:ss')}}",
"width" : "80%"
} ],
"label" : "Anlagen",
"deleteUrl" : "api/scope/{{context.scopeId}}/process/{{context.processId}}/attachment/{{attachmentId}}",
"downloadUrl" : "api/scope/{{context.scopeId}}/process/{{context.processId}}/attachment-data/{{attachmentId}}",
"resolveUserDataURL" : "api/scope/{{context.scopeId}}/process/{{context.processId}}/users?id.equals={{userId}}",
"csrfCookiePath" : "XSRF-TOKEN",
"taggingExpression" : "",
"button" : {
"iconOnly" : true,
"removeVisibleWhen" : "return false;",
"showVersion" : false,
"showOnlyCurrentVersion" : false,
"showCheckboxCurrentVersion" : false
},
"mask" : false,
"tableView" : true,
"type" : "attachments",
"input" : true,
"key" : "anlagen",
"components" : [ ],
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"defaultValue" : null,
"protected" : false,
"unique" : false,
"persistent" : true,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelPosition" : "top",
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : true,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"widget" : null,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"validate" : {
"required" : false,
"custom" : "",
"customPrivate" : false
},
"conditional" : {
"show" : null,
"when" : null,
"eq" : ""
},
"id" : "e9zp29e"
} ]
}

@ -1,168 +0,0 @@
{
"name" : "Current Job Left",
"configKey" : "current-job-left",
"page" : 0,
"components" : [ {
"label" : "Current Job",
"hideLabel" : true,
"persistent" : false,
"mask" : false,
"disabled" : true,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "datasourcecontainer",
"input" : true,
"key" : "job",
"defaultValue" : {
"tenant" : {
"id" : ""
}
},
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"data" : {
"url" : "api/v1/scopes/{{context.scopeId}}/tags/{{context.scopeTag}}/datasources/awx-job-plain/query?id={{data.current_job_id}}",
"method" : "GET",
"values" : [ { } ]
},
"components" : [ {
"label" : "Current Job",
"hideLabel" : true,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "container",
"input" : true,
"key" : "job",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"components" : [ {
"label" : "Name",
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "name",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"properties" : { },
"inputFormat" : "plain",
"encrypted" : false,
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
}, {
"label" : "Beschreibung",
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "description",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"properties" : { },
"inputFormat" : "plain",
"encrypted" : false,
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
}, {
"label" : "Status",
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "status",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"properties" : { },
"inputFormat" : "plain",
"encrypted" : false,
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
} ],
"tabs" : null,
"properties" : { },
"tags" : [ ],
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"reorder" : false
} ],
"tabs" : null,
"properties" : { },
"datapath" : "0",
"encrypted" : false,
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"reorder" : false
} ],
"display" : "form"
}

@ -1,138 +0,0 @@
{
"name" : "Current Job Right",
"configKey" : "current-job-right",
"page" : 0,
"components" : [ {
"label" : "Current Job",
"hideLabel" : true,
"persistent" : false,
"mask" : false,
"disabled" : true,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "datasourcecontainer",
"input" : true,
"key" : "job",
"defaultValue" : {
"tenant" : {
"id" : ""
}
},
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"data" : {
"url" : "api/v1/scopes/{{context.scopeId}}/tags/{{context.scopeTag}}/datasources/awx-job-plain/query?id={{data.current_job_id}}",
"method" : "GET",
"values" : [ { } ]
},
"components" : [ {
"label" : "Current Job",
"hideLabel" : true,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "container",
"input" : true,
"key" : "job",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"components" : [ {
"label" : "HTML",
"labelPosition" : "left-left",
"className" : "",
"attrs" : [ {
"attr" : "",
"value" : ""
} ],
"content" : "<div class=\"h2\">\n <!-- pending, running, successful, error, failed, canceled -->\n <span style=\"display: {{ data.status == 'pending' ? '' : 'none' }}\" class=\"badge badge-info\">{{ data.status }}</span>\n <span style=\"display: {{ data.status == 'running' ? '' : 'none' }}\" class=\"badge badge-primary\">{{ data.status }}</span>\n <span style=\"display: {{ data.status == 'successful' ? '' : 'none' }}\" class=\"badge badge-success\">{{ data.status }}</span>\n <span style=\"display: {{ data.status == 'error' ? '' : 'none' }}\" class=\"badge badge-danger\">{{ data.status }}</span>\n <span style=\"display: {{ data.status == 'failed' ? '' : 'none' }}\" class=\"badge badge-warning\">{{ data.status }}</span>\n <span style=\"display: {{ data.status == 'canceled' ? '' : 'none' }}\" class=\"badge badge-warning\">{{ data.status }}</span>\n</div>",
"refreshOnChange" : true,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "htmlelement",
"input" : false,
"key" : "html",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"encrypted" : false,
"properties" : { },
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"refreshOn" : "data",
"reorder" : false
}, {
"label" : "Status",
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"hidden" : true,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "status",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"properties" : { },
"inputFormat" : "plain",
"encrypted" : false,
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
} ],
"tabs" : null,
"properties" : { },
"tags" : [ ],
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"reorder" : false
} ],
"tabs" : null,
"properties" : { },
"datapath" : "0",
"encrypted" : false,
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"reorder" : false
} ],
"display" : "form"
}

@ -1,397 +0,0 @@
{
"name" : "Current Jobs",
"configKey" : "current-jobs",
"page" : 0,
"components" : [ {
"label" : "Jobs",
"persistent" : false,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "list",
"input" : true,
"key" : "jobs",
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"components" : [ {
"label" : "job",
"mask" : false,
"hideLabel" : true,
"tableView" : true,
"alwaysEnabled" : false,
"customClass" : "pb-0",
"type" : "datasourcecontainer",
"input" : true,
"key" : "job",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"data" : {
"url" : "api/v1/scopes/{{context.scopeId}}/tags/{{context.scopeTag}}/datasources/awx-job/query?id={{ row }}&stage={{ data.cluster.stage }}",
"method" : "GET",
"values" : [ { } ]
},
"components" : [ {
"label" : "job",
"hideLabel" : true,
"customClass" : "pb-0",
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "container",
"input" : true,
"key" : "job",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"components" : [ {
"label" : "Columns",
"hideLabel" : true,
"columns" : [ {
"components" : [ {
"label" : "Name",
"hideLabel" : true,
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "name",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"properties" : { },
"tags" : [ ],
"inputFormat" : "plain",
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
} ],
"width" : 4,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"hideOnChildrenHidden" : false,
"key" : "column",
"tableView" : true,
"label" : "Column"
}, {
"components" : [ {
"label" : "Name",
"hideLabel" : true,
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "description",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"properties" : { },
"tags" : [ ],
"inputFormat" : "plain",
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
} ],
"width" : 4,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"hideOnChildrenHidden" : false,
"key" : "column",
"tableView" : true,
"label" : "Column"
}, {
"width" : 2,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"hideOnChildrenHidden" : false,
"key" : "column",
"tableView" : true,
"label" : "Column",
"components" : [ {
"label" : "Name",
"hideLabel" : true,
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"clearOnHide" : false,
"hidden" : true,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "status",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"properties" : { },
"tags" : [ ],
"inputFormat" : "plain",
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
}, {
"label" : "HTML",
"labelPosition" : "left-left",
"tag" : "div",
"className" : "pb-0",
"attrs" : [ {
"attr" : "",
"value" : ""
} ],
"content" : "<div class=\"h4\">\n <!-- pending, running, successful, error, failed, canceled -->\n <span style=\"display: {{ data.status == 'pending' ? '' : 'none' }}\" class=\"badge badge-info\">{{ data.status }}</span>\n <span style=\"display: {{ data.status == 'running' ? '' : 'none' }}\" class=\"badge badge-primary\">{{ data.status }}</span>\n <span style=\"display: {{ data.status == 'successful' ? '' : 'none' }}\" class=\"badge badge-success\">{{ data.status }}</span>\n <span style=\"display: {{ data.status == 'error' ? '' : 'none' }}\" class=\"badge badge-danger\">{{ data.status }}</span>\n <span style=\"display: {{ data.status == 'failed' ? '' : 'none' }}\" class=\"badge badge-warning\">{{ data.status }}</span>\n <span style=\"display: {{ data.status == 'canceled' ? '' : 'none' }}\" class=\"badge badge-warning\">{{ data.status }}</span>\n</div>",
"refreshOnChange" : true,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "htmlelement",
"input" : false,
"key" : "html",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"encrypted" : false,
"properties" : { },
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"refreshOn" : "data",
"reorder" : false
} ]
}, {
"width" : 2,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"hideOnChildrenHidden" : false,
"key" : "column",
"tableView" : true,
"label" : "Column",
"components" : [ {
"label" : "Id",
"hideLabel" : true,
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"clearOnHide" : false,
"hidden" : true,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "id",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"properties" : { },
"tags" : [ ],
"inputFormat" : "plain",
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
}, {
"label" : "Stage",
"hideLabel" : true,
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"clearOnHide" : false,
"hidden" : true,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "stage",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"properties" : { },
"tags" : [ ],
"inputFormat" : "plain",
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
}, {
"label" : "HTML",
"labelPosition" : "left-left",
"tag" : "div",
"className" : "pb-0",
"attrs" : [ {
"attr" : "",
"value" : ""
} ],
"content" : "<div class=\"h4\">\n <a href=\"https://{{ data.stage }}-awx.smardigo.digital/#/jobs/playbook/{{ data.id }}/output\" target=\"awx_job_{{ data.id }}\">öffnen</a>\n</div>",
"refreshOnChange" : true,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "htmlelement",
"input" : false,
"key" : "html2",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"encrypted" : false,
"properties" : { },
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"refreshOn" : "data",
"reorder" : false
} ]
} ],
"customClass" : "pb-0",
"mask" : false,
"tableView" : false,
"alwaysEnabled" : false,
"type" : "columns",
"input" : false,
"key" : "columns",
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"properties" : { },
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"reorder" : false
} ],
"tabs" : null,
"properties" : { },
"tags" : [ ],
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"reorder" : false
} ],
"tabs" : null,
"properties" : { },
"tags" : [ ],
"datapath" : "0",
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"reorder" : false
} ],
"tabs" : null,
"customConditional" : "",
"properties" : { },
"tags" : [ ],
"logic" : [ ],
"reorder" : false
} ],
"display" : "form"
}

@ -1,509 +0,0 @@
{
"name" : "Kopfzeile",
"configKey" : "header",
"page" : 0,
"components" : [ {
"input" : false,
"tableView" : false,
"columns" : [ {
"components" : [ {
"labelPosition" : "left-right",
"label" : "Ersteller",
"mask" : false,
"disabled" : true,
"tableView" : true,
"type" : "select",
"input" : true,
"key" : "creation_user_id",
"validate" : {
"unique" : false,
"customMessage" : "",
"json" : "",
"required" : false,
"custom" : "",
"customPrivate" : false
},
"data" : {
"headers" : [ {
"key" : "",
"value" : ""
} ],
"url" : "api/v1/scopes/{{context.scopeId}}/processes/{{context.processId}}/users?id.equals={{data.creation_user_id}}",
"values" : [ ],
"json" : "",
"resource" : "",
"custom" : ""
},
"properties" : { },
"tags" : [ ],
"defaultValue" : "",
"dataSrc" : "url",
"lazyLoad" : false,
"valueProperty" : "id",
"selectValues" : "",
"disableLimit" : false,
"template" : "<span>{{[item.firstName, item.lastName].filter(Boolean).join(' ')}}</span>",
"searchEnabled" : false,
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"protected" : false,
"unique" : false,
"persistent" : true,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"widget" : null,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"conditional" : {
"show" : null,
"when" : null,
"eq" : ""
},
"limit" : 100,
"filter" : "",
"searchField" : "",
"minSearch" : 0,
"readOnlyValue" : false,
"authenticate" : false,
"selectFields" : "",
"customSearchCriteria" : "",
"searchThreshold" : 0.3,
"fuseOptions" : { },
"customOptions" : { },
"infiniteScroll" : false,
"clearValueIfNotInItems" : false,
"clientSideFilter" : "",
"id" : "evydmbo"
} ],
"width" : 4,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"key" : "column1",
"tableView" : true,
"label" : "",
"hideOnChildrenHidden" : false,
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"defaultValue" : null,
"protected" : false,
"unique" : false,
"persistent" : true,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelPosition" : "top",
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"widget" : null,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"validate" : {
"required" : false,
"custom" : "",
"customPrivate" : false
},
"conditional" : {
"show" : null,
"when" : null,
"eq" : ""
},
"id" : "e9u3jbf"
}, {
"components" : [ {
"labelPosition" : "left-right",
"label" : "Erstellt am",
"format" : "dd.MM.yyyy",
"mask" : false,
"tableView" : true,
"type" : "datetime",
"input" : true,
"key" : "creation_date",
"suffix" : true,
"widget" : {
"type" : "calendar",
"displayInTimezone" : "viewer",
"language" : "en",
"useLocaleSettings" : false,
"allowInput" : true,
"mode" : "single",
"enableTime" : true,
"noCalendar" : false,
"format" : "dd.MM.yyyy",
"defaultDate" : "",
"hourIncrement" : 1,
"minuteIncrement" : 1,
"time_24hr" : false,
"minDate" : null,
"maxDate" : null,
"icons" : "fontawesome",
"i18n" : {
"lng" : "en",
"resources" : {
"de" : {
"translation" : {
"complete" : "Eingabe vollständig",
"error" : "Bitte beheben Sie vor dem Abschicken folgende Fehler.",
"required" : "{{field}} ist ein Pflichtfeld",
"pattern" : "{{field}} entspricht nicht dem Muster {{pattern}}",
"minLength" : "{{field}} muss länger als {{length}} Zeichen sein.",
"maxLength" : "{{field}} muss kürzer als {{length}} Zeichen sein.",
"min" : "{{field}} darf nicht kleiner als {{min}} sein.",
"max" : "{{field}} darf nicht größer als {{max}} sein.",
"invalid_email" : "{{field}} ist keine valide E-Mail-Adresse.",
"invalid_regex" : "{{field}} entspricht nicht dem Muster {{regex}}.",
"invalid_date" : "{{field}} ist kein valides Datum.",
"mask" : "{{field}} entspricht nicht der Maske.",
"stripe" : "{{stripe}}",
"month" : "Monat",
"day" : "Tag",
"year" : "Jahr",
"january" : "Januar",
"february" : "Februar",
"march" : "März",
"april" : "April",
"may" : "Mai",
"june" : "Juni",
"july" : "Juli",
"august" : "August",
"september" : "September",
"october" : "Oktober",
"november" : "November",
"december" : "Dezember",
"next" : "Weiter",
"previous" : "Zurück",
"cancel" : "Abbrechen",
"submit" : "Vorgang starten",
"dualMultiselect_filterPlaceholder" : "Tippen um zu filtern.",
"dualMultiselect_labelAll" : "Alle Werte",
"dualMultiselect_labelSelected" : "Ausgewählte Werte",
"dualMultiselect_buttonSelectAll" : "Alle auswählen",
"dualMultiselect_buttonDeselectAll" : "Alle abwählen",
"listSelection_buttonSelectAriaLabel" : "Eintrag Auswählen",
"mapView_zoomInButton" : "Vergrößern",
"mapView_zoomOutButton" : "Verkleinern",
"selectComponent_searchPlaceholder" : "Tippe um zu Suchen...",
"selectComponent_noChoicesText" : "Keine Elemente zur Auswahl",
"selectComponent_noResultsText" : "Keine Ergebnisse gefunden"
}
}
}
}
},
"defaultValue" : "",
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"multiple" : false,
"protected" : false,
"unique" : false,
"persistent" : true,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"validate" : {
"required" : false,
"custom" : "",
"customPrivate" : false
},
"conditional" : {
"show" : null,
"when" : null,
"eq" : ""
},
"useLocaleSettings" : false,
"allowInput" : true,
"enableDate" : true,
"enableTime" : true,
"defaultDate" : "",
"displayInTimezone" : "viewer",
"timezone" : "",
"datepickerMode" : "day",
"datePicker" : {
"showWeeks" : true,
"startingDay" : 0,
"initDate" : "",
"minMode" : "day",
"maxMode" : "year",
"yearRows" : 4,
"yearColumns" : 5,
"minDate" : null,
"maxDate" : null
},
"timePicker" : {
"hourStep" : 1,
"minuteStep" : 1,
"showMeridian" : true,
"readonlyInput" : false,
"mousewheel" : true,
"arrowkeys" : true
},
"id" : "ef2amw"
} ],
"width" : 4,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"key" : "column2",
"tableView" : true,
"label" : "",
"hideOnChildrenHidden" : false,
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"defaultValue" : null,
"protected" : false,
"unique" : false,
"persistent" : true,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelPosition" : "top",
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"widget" : null,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"validate" : {
"required" : false,
"custom" : "",
"customPrivate" : false
},
"conditional" : {
"show" : null,
"when" : null,
"eq" : ""
},
"id" : "efau92d"
}, {
"components" : [ {
"input" : true,
"tableView" : false,
"label" : "Status",
"key" : "vorgang_status_text",
"defaultValue" : "",
"persistent" : false,
"clearOnHide" : false,
"conditional" : {
"show" : "",
"when" : null,
"eq" : ""
},
"type" : "textfield",
"labelPosition" : "left-right",
"tags" : [ ],
"properties" : {
"" : ""
},
"labelWidth" : 40,
"disabled" : true,
"lockKey" : true,
"widget" : null,
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"protected" : false,
"unique" : false,
"hidden" : false,
"dataGridLabel" : false,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"validate" : {
"required" : false,
"custom" : "",
"customPrivate" : false,
"minLength" : "",
"maxLength" : "",
"minWords" : "",
"maxWords" : "",
"pattern" : ""
},
"mask" : false,
"inputType" : "text",
"inputMask" : "",
"id" : "ea7hs5"
} ],
"width" : 4,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"key" : "column3",
"tableView" : true,
"label" : "",
"hideOnChildrenHidden" : false,
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"defaultValue" : null,
"protected" : false,
"unique" : false,
"persistent" : true,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelPosition" : "top",
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"widget" : null,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"validate" : {
"required" : false,
"custom" : "",
"customPrivate" : false
},
"conditional" : {
"show" : null,
"when" : null,
"eq" : ""
},
"id" : "ez9z05q"
} ],
"type" : "columns",
"tags" : [ ],
"conditional" : {
"show" : "",
"when" : null,
"eq" : ""
},
"properties" : {
"" : ""
},
"label" : "Columns",
"key" : "columns",
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"defaultValue" : null,
"protected" : false,
"unique" : false,
"persistent" : false,
"hidden" : false,
"clearOnHide" : false,
"dataGridLabel" : false,
"labelPosition" : "top",
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"widget" : null,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"validate" : {
"required" : false,
"custom" : "",
"customPrivate" : false
},
"autoAdjust" : false,
"hideOnChildrenHidden" : false,
"id" : "eqtnze"
} ]
}

@ -1,98 +0,0 @@
{
"name" : "Progress Bar",
"configKey" : "progress-bar",
"page" : 0,
"components" : [ {
"label" : "HTML",
"labelPosition" : "left-left",
"className" : "",
"attrs" : [ {
"attr" : "",
"value" : ""
} ],
"content" : "<div class=\"progress\">\n <div\n class=\"progress-bar progress-bar-striped progress-bar-animated\"\n role=\"progressbar\"\n aria-valuenow=\"{{ data.progress_current }}\"\n aria-valuemin=\"0\"\n aria-valuemax=\"{{ data.progress_max }}\"\n style=\"width: {{ data.progress_current / data.progress_max * 100 }}%\">\n </div>\n</div>",
"refreshOnChange" : true,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "htmlelement",
"input" : false,
"key" : "html",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"encrypted" : false,
"properties" : { },
"tags" : null,
"customConditional" : "",
"logic" : [ ],
"refreshOn" : "data",
"reorder" : false
}, {
"label" : "progress_current",
"labelPosition" : "left-left",
"hidden" : true,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "number",
"input" : true,
"key" : "progress_current",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"delimiter" : false,
"requireDecimal" : false,
"encrypted" : false,
"properties" : { },
"tags" : [ ],
"decimalLimit" : null,
"customConditional" : "",
"logic" : [ ],
"reorder" : false
}, {
"label" : "progress_max",
"labelPosition" : "left-left",
"hidden" : true,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "number",
"input" : true,
"key" : "progress_max",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"delimiter" : false,
"requireDecimal" : false,
"encrypted" : false,
"decimalLimit" : null,
"properties" : { },
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"reorder" : false
} ],
"display" : "form"
}

@ -1,202 +0,0 @@
{
"configKey" : "select-connect-feature-set",
"name" : "select-connect-feature-set",
"components" : [ {
"label" : "Status",
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "well",
"input" : false,
"key" : "status2",
"conditional" : {
"show" : "",
"when" : "",
"json" : "",
"eq" : ""
},
"components" : [ {
"label" : "HTML",
"className" : "",
"attrs" : [ {
"attr" : "",
"value" : ""
} ],
"content" : "<h2>Features</h2>",
"refreshOnChange" : false,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "htmlelement",
"input" : false,
"key" : "html7",
"validate" : {
"customMessage" : "",
"json" : "",
"required" : false,
"custom" : "",
"customPrivate" : false
},
"conditional" : {
"show" : "",
"when" : "",
"json" : "",
"eq" : ""
},
"tabs" : null,
"encrypted" : false,
"properties" : { },
"tags" : null,
"customConditional" : "",
"logic" : [ ],
"reorder" : false,
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"defaultValue" : null,
"protected" : false,
"unique" : false,
"persistent" : false,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelPosition" : "top",
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"widget" : null,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"tag" : "p",
"id" : "e2e6mdi"
}, {
"label" : "Optionale Features",
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "dualmultiselect",
"input" : true,
"key" : "connect-features",
"defaultValue" : [ ],
"validate" : {
"customMessage" : "",
"json" : "",
"required" : false,
"custom" : "",
"customPrivate" : false
},
"conditional" : {
"show" : "",
"when" : "",
"json" : "",
"eq" : ""
},
"data" : {
"url" : "api/v1/scopes/{{ context.scopeId }}/processes/{{ context.processId }}/datasources/connect-features/query?default='0','1'",
"values" : [ { } ]
},
"template" : "{{ item.key }}",
"tabs" : null,
"properties" : { },
"tags" : [ ],
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"projection" : "key",
"reorder" : false,
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"protected" : false,
"unique" : false,
"persistent" : true,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelPosition" : "top",
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"widget" : null,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"dataSrc" : "url",
"filter" : true,
"filterPlaceholder" : "Tippen um zu filtern.",
"labelAll" : "Alle Werte",
"labelSelected" : "Ausgewählte Werte",
"buttonSelectAll" : "Alle auswählen",
"buttonDeselectAll" : "Alle abwählen",
"selectAll" : false,
"id" : "e7k5sf"
} ],
"tabs" : null,
"reorder" : false,
"properties" : { },
"tags" : null,
"customConditional" : "",
"logic" : [ ],
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"defaultValue" : null,
"protected" : false,
"unique" : false,
"persistent" : false,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelPosition" : "top",
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"widget" : null,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"validate" : {
"required" : false,
"custom" : "",
"customPrivate" : false
},
"id" : "enh5f1d"
} ]
}

@ -1,218 +0,0 @@
{
"configKey" : "select-connect-version",
"name" : "select-connect-version",
"components" : [ {
"label" : "Connect",
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "container",
"input" : true,
"key" : "connect",
"validate" : {
"customMessage" : "",
"json" : "",
"required" : false,
"custom" : "",
"customPrivate" : false
},
"conditional" : {
"show" : "",
"when" : "",
"json" : "",
"eq" : ""
},
"components" : [ {
"label" : "Connect",
"hideLabel" : true,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "well",
"input" : false,
"key" : "connect2",
"conditional" : {
"show" : "",
"when" : "",
"json" : "",
"eq" : ""
},
"components" : [ {
"label" : "Version",
"labelPosition" : "left-left",
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "select",
"input" : true,
"key" : "version",
"defaultValue" : "latest",
"validate" : {
"select" : false,
"customMessage" : "",
"json" : "",
"required" : false,
"custom" : "",
"customPrivate" : false
},
"conditional" : {
"show" : "",
"when" : "",
"json" : "",
"eq" : ""
},
"data" : {
"url" : "api/v1/scopes/{{context.scopeId}}/tags/{{context.scopeTag}}/datasources/whitelabel-docker-image-tags/query",
"headers" : [ {
"key" : "",
"value" : ""
} ],
"values" : [ ],
"json" : "",
"resource" : "",
"custom" : ""
},
"dataSrc" : "url",
"valueProperty" : "value",
"tabs" : null,
"properties" : { },
"selectThreshold" : 0.3,
"encrypted" : false,
"lazyLoad" : false,
"selectValues" : "",
"disableLimit" : false,
"sort" : "",
"tags" : null,
"customConditional" : "",
"logic" : [ ],
"customDefaultValue" : "value='latest'",
"reorder" : false,
"reference" : false,
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"protected" : false,
"unique" : false,
"persistent" : true,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"calculateValue" : "",
"allowCalculateOverride" : false,
"widget" : null,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"limit" : 100,
"filter" : "",
"searchEnabled" : true,
"searchField" : "",
"minSearch" : 0,
"readOnlyValue" : false,
"authenticate" : false,
"template" : "<span>{{ item.label }}</span>",
"selectFields" : "",
"customSearchCriteria" : "",
"searchThreshold" : 0.3,
"fuseOptions" : { },
"customOptions" : { },
"infiniteScroll" : false,
"clearValueIfNotInItems" : false,
"clientSideFilter" : "",
"id" : "e0qkvu"
} ],
"tabs" : null,
"reorder" : false,
"properties" : { },
"tags" : null,
"customConditional" : "",
"logic" : [ ],
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"defaultValue" : null,
"protected" : false,
"unique" : false,
"persistent" : false,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelPosition" : "top",
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"widget" : null,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"validate" : {
"required" : false,
"custom" : "",
"customPrivate" : false
},
"id" : "e0jo9ps"
} ],
"tabs" : null,
"encrypted" : false,
"properties" : { },
"tags" : null,
"customConditional" : "",
"logic" : [ ],
"reorder" : false,
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"defaultValue" : null,
"protected" : false,
"unique" : false,
"persistent" : true,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelPosition" : "top",
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"widget" : null,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"tree" : true,
"id" : "er94pcr"
} ]
}

@ -1,464 +0,0 @@
{
"name" : "Simple Connect Wizard",
"configKey" : "simple-connect-create",
"display" : "wizard",
"page" : 0,
"numPages" : 8,
"components" : [ {
"labelPosition" : "left",
"label" : "Auswahl Mandant",
"title" : "Auswahl Mandant",
"tableView" : false,
"type" : "panel",
"components" : [ {
"label" : "Mandant auswählen",
"hideLabel" : true,
"optionsLabelPosition" : "right",
"values" : [ {
"label" : "Mandant anlegen",
"value" : "create_new_tenant",
"shortcut" : ""
}, {
"shortcut" : "",
"label" : "Mandant auswählen",
"value" : "choose_tenant"
} ],
"inline" : false,
"persistent" : false,
"clearOnHide" : false,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "radio",
"input" : true,
"key" : "wizard_selection",
"validate" : {
"unique" : false,
"customMessage" : "",
"json" : "",
"required" : true
},
"properties" : { },
"tags" : [ ],
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"customConditional" : "",
"logic" : [ ],
"defaultValue" : "choose_tenant",
"encrypted" : false,
"tabs" : null,
"reorder" : false
}, {
"label" : "Mandant",
"hideLabel" : true,
"mask" : false,
"tableView" : true,
"type" : "container",
"input" : true,
"key" : "tenant",
"components" : [ {
"label" : "Mandant",
"customClass" : "ml-4",
"clearOnHide" : false,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "listselection",
"input" : true,
"key" : "selected_tenant",
"data" : {
"url" : "/api/v1/scopes/{{context.scopeId}}/tags/{{context.scopeTag}}/datasources/tenants/query",
"requestBody" : "",
"values" : [ { } ]
},
"columns" : [ {
"name" : "Name",
"prop" : "name",
"value" : "",
"width" : "",
"sortable" : true
}, {
"name" : "Schlüssel",
"prop" : "key",
"value" : "",
"width" : "",
"sortable" : true
} ],
"projection" : [ {
"key" : "id",
"prop" : "id"
}, {
"key" : "name",
"prop" : "name"
}, {
"key" : "key",
"prop" : "key"
} ],
"identity" : "id",
"validate" : {
"required" : true,
"unique" : false,
"customMessage" : "",
"json" : ""
},
"properties" : { },
"tags" : [ ],
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"customConditional" : "show = data.wizard_selection == 'choose_tenant';",
"logic" : [ {
"name" : "if wizard_selection = 'create_new_tenant' then clear",
"trigger" : {
"type" : "javascript",
"javascript" : "result = data.wizard_selection == 'create_new_tenant';"
},
"actions" : [ {
"name" : "clear",
"type" : "clear"
} ]
} ],
"tabs" : null,
"datapath" : "",
"defaultFilter" : "",
"encrypted" : false,
"reorder" : false
} ],
"properties" : { },
"clearOnHide" : false
}, {
"label" : "Mandant bearbeiten",
"shortcut" : "",
"customClass" : "ml-4",
"persistent" : false,
"clearOnHide" : false,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "checkbox",
"input" : true,
"key" : "edit_tenant",
"validate" : {
"unique" : false,
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"customConditional" : "show = data.wizard_selection == 'choose_tenant';",
"properties" : { },
"tags" : [ ],
"defaultValue" : false,
"tabs" : null,
"reorder" : false,
"encrypted" : false,
"logic" : [ ]
} ],
"input" : false,
"key" : "ChooseTenant",
"tags" : [ ],
"conditional" : {
"show" : ""
},
"properties" : {
"" : ""
}
}, {
"label" : "Mandant bearbeiten",
"title" : "Mandant bearbeiten",
"clearOnHide" : true,
"mask" : false,
"tableView" : false,
"type" : "panel",
"key" : "page2",
"input" : false,
"components" : [ {
"label" : "tenant",
"hideLabel" : true,
"mask" : false,
"tableView" : true,
"type" : "container",
"input" : true,
"key" : "tenant",
"components" : [ {
"labelPosition" : "left-left",
"columns" : [ {
"components" : [ {
"label" : "Name",
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"clearOnHide" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "name",
"defaultValue" : "",
"validate" : {
"unique" : false,
"customMessage" : "Zeichenkette ohne Sonderzeichen, mindestens 4 und höchstens 20 Zeichen",
"json" : "",
"required" : true,
"minLength" : null,
"maxLength" : null,
"minWords" : null,
"maxWords" : null,
"pattern" : "^[ a-zA-Z0-9-]{4,20}$"
},
"inputFormat" : "plain",
"properties" : { },
"tags" : [ ],
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
}, {
"label" : "Id",
"mask" : false,
"tableView" : true,
"type" : "hidden",
"input" : true,
"key" : "id",
"properties" : { },
"tags" : [ ]
} ],
"width" : 6,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"key" : "column1",
"tableView" : true,
"label" : "",
"clearOnHide" : false,
"hideOnChildrenHidden" : false
}, {
"components" : [ {
"label" : "Key",
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "key",
"defaultValue" : "",
"validate" : {
"customMessage" : "Zeichenkette ohne Sonderzeichen, mindestens 4 und höchstens 10 Zeichen, alles kleingeschrieben",
"json" : "",
"required" : true,
"minLength" : null,
"maxLength" : null,
"minWords" : null,
"maxWords" : null,
"pattern" : "^[a-z]{4,10}$"
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"properties" : { },
"inputFormat" : "plain",
"encrypted" : false,
"tags" : null,
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
} ],
"width" : 6,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"key" : "column2",
"tableView" : true,
"label" : "",
"clearOnHide" : false,
"hideOnChildrenHidden" : false
} ],
"label" : "Mengenrabattnr.",
"mask" : false,
"tableView" : false,
"type" : "columns",
"input" : false,
"key" : "columns"
} ],
"clearOnHide" : false
} ],
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"customConditional" : "show = data.wizard_selection == 'choose_tenant' && !!data.edit_tenant && !!data.tenant && !!data.tenant.id;"
}, {
"label" : "Mandant erfassen",
"title" : "Mandant erfassen",
"mask" : false,
"tableView" : false,
"type" : "panel",
"key" : "page2",
"input" : false,
"components" : [ {
"label" : "tenant",
"hideLabel" : true,
"mask" : false,
"tableView" : true,
"type" : "container",
"input" : true,
"key" : "tenant",
"components" : [ {
"labelPosition" : "left-left",
"columns" : [ {
"components" : [ {
"label" : "Name",
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"clearOnHide" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "name",
"defaultValue" : "",
"validate" : {
"unique" : false,
"customMessage" : "Zeichenkette ohne Sonderzeichen, mindestens 4 und höchstens 20 Zeichen",
"json" : "",
"required" : true,
"minLength" : null,
"maxLength" : null,
"minWords" : null,
"maxWords" : null,
"pattern" : "^[ a-zA-Z0-9-]{4,20}$"
},
"inputFormat" : "plain",
"properties" : { },
"tags" : [ ],
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
} ],
"width" : 6,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"key" : "column3",
"tableView" : true,
"label" : "",
"clearOnHide" : false,
"hideOnChildrenHidden" : false
}, {
"components" : [ {
"label" : "Key",
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "key",
"defaultValue" : "",
"validate" : {
"customMessage" : "Zeichenkette ohne Sonderzeichen, mindestens 4 und höchstens 10 Zeichen, alles kleingeschrieben",
"json" : "",
"required" : true,
"minLength" : null,
"maxLength" : null,
"minWords" : null,
"maxWords" : null,
"pattern" : "^[a-z]{4,10}$"
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"properties" : { },
"tags" : [ ],
"inputFormat" : "plain",
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
} ],
"width" : 6,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"key" : "column4",
"tableView" : true,
"label" : "",
"clearOnHide" : false,
"hideOnChildrenHidden" : false
} ],
"label" : "Mengenrabattnr.",
"mask" : false,
"tableView" : false,
"type" : "columns",
"input" : false,
"key" : "columns"
} ],
"clearOnHide" : false
} ],
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"customConditional" : "show = data.wizard_selection == 'create_new_tenant';",
"logic" : [ ],
"properties" : { },
"tags" : [ ]
} ]
}

@ -1,808 +0,0 @@
{
"name" : "Simple Connect",
"configKey" : "simple-connect",
"page" : 0,
"components" : [ {
"label" : "Features",
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "well",
"input" : false,
"key" : "features",
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"components" : [ {
"label" : "Optionale Features",
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "dualmultiselect",
"input" : true,
"key" : "connect-features",
"defaultValue" : [ ],
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"data" : {
"url" : "api/v1/scopes/{{ context.scopeId }}/processes/{{ context.processId }}/datasources/connect-features/query?default='0','1'",
"values" : [ { } ]
},
"template" : "{{ item.key }}",
"tabs" : null,
"properties" : { },
"tags" : [ ],
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"projection" : "key",
"reorder" : false
} ],
"tabs" : null,
"reorder" : false,
"properties" : { },
"tags" : null,
"customConditional" : "",
"logic" : [ ]
}, {
"label" : "Links",
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "well",
"input" : false,
"key" : "links",
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"components" : [ {
"label" : "Columns",
"columns" : [ {
"components" : [ {
"label" : "connect_admin_username",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"clearOnHide" : false,
"disabled" : true,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "connect_admin_username",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"inputFormat" : "plain",
"encrypted" : false,
"properties" : { },
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
}, {
"label" : "connect_admin_password",
"hideLabel" : true,
"labelPosition" : "left-left",
"showWordCount" : false,
"showCharCount" : false,
"clearOnHide" : false,
"disabled" : true,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "connect_admin_password",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"inputFormat" : "plain",
"encrypted" : false,
"properties" : { },
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
} ],
"width" : 3,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"hideOnChildrenHidden" : false,
"key" : "column",
"tableView" : true,
"label" : "Column"
}, {
"components" : [ {
"label" : "HTML",
"labelPosition" : "left-left",
"className" : "",
"attrs" : [ {
"attr" : "",
"value" : ""
} ],
"content" : "<div class=\"h5\">\n <a\n target=\"_blank\"\n href=\"{{ 'https://' + (!!(data.cluster)?data.cluster.stage:'cluster.stage') + '-' + (!!(data.tenant)?data.tenant.key:'tenant.key') + '-' + (!!(data.cluster)?data.cluster.name:'cluster.name') + '-01-connect.smardigo.digital' }}\">\n {{ 'https://' + (!!(data.cluster)?data.cluster.stage:'cluster.stage') + '-' + (!!(data.tenant)?data.tenant.key:'tenant.key') + '-' + (!!(data.cluster)?data.cluster.name:'cluster.name') + '-01-connect.smardigo.digital' }}\n </a>\n</div>",
"refreshOnChange" : true,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "htmlelement",
"input" : false,
"key" : "html2",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"encrypted" : false,
"properties" : { },
"tags" : null,
"customConditional" : "",
"logic" : [ ],
"refreshOn" : "data",
"reorder" : false
} ],
"width" : 9,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"hideOnChildrenHidden" : false,
"key" : "column",
"tableView" : true,
"label" : "Column"
}, {
"width" : 3,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"hideOnChildrenHidden" : false,
"key" : "column",
"tableView" : true,
"label" : "Column",
"components" : [ ]
}, {
"width" : 9,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"hideOnChildrenHidden" : false,
"key" : "column",
"tableView" : true,
"label" : "Column",
"components" : [ {
"label" : "HTML",
"labelPosition" : "left-left",
"className" : "",
"attrs" : [ {
"attr" : "",
"value" : ""
} ],
"content" : "<div class=\"h5\">\n <a\n target=\"_blank\"\n href=\"{{ 'https://' + (!!(data.cluster)?data.cluster.stage:'cluster.stage') + '-' + (!!(data.tenant)?data.tenant.key:'tenant.key') + '-' + (!!(data.cluster)?data.cluster.name:'cluster.name') + '-01-wordpress.smardigo.digital' }}\">\n {{ 'https://' + (!!(data.cluster)?data.cluster.stage:'cluster.stage') + '-' + (!!(data.tenant)?data.tenant.key:'tenant.key') + '-' + (!!(data.cluster)?data.cluster.name:'cluster.name') + '-01-wordpress.smardigo.digital' }}\n </a>\n</div>",
"refreshOnChange" : true,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "htmlelement",
"input" : false,
"key" : "html4",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"encrypted" : false,
"properties" : { },
"tags" : null,
"customConditional" : "show = data['connect-features'].includes(\"connect_wordpress\") ",
"logic" : [ ],
"refreshOn" : "data",
"reorder" : false
} ]
}, {
"width" : 3,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"hideOnChildrenHidden" : false,
"key" : "column",
"tableView" : true,
"label" : "Column",
"components" : [ {
"label" : "wordpress_admin_username",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"clearOnHide" : false,
"disabled" : true,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "wordpress_admin_username",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"inputFormat" : "plain",
"encrypted" : false,
"properties" : { },
"tags" : [ ],
"customConditional" : "show = data['connect-features'].includes(\"connect_wordpress\") ",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
}, {
"label" : "wordpress_admin_password",
"hideLabel" : true,
"labelPosition" : "left-left",
"showWordCount" : false,
"showCharCount" : false,
"clearOnHide" : false,
"disabled" : true,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "wordpress_admin_password",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"properties" : { },
"tags" : [ ],
"inputFormat" : "plain",
"encrypted" : false,
"customConditional" : "show = data['connect-features'].includes(\"connect_wordpress\") ",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
} ]
}, {
"width" : 9,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"hideOnChildrenHidden" : false,
"key" : "column",
"tableView" : true,
"label" : "Column",
"components" : [ {
"label" : "HTML",
"labelPosition" : "left-left",
"className" : "",
"attrs" : [ {
"attr" : "",
"value" : ""
} ],
"content" : "<div class=\"h5\">\n <a\n target=\"_blank\"\n href=\"{{ 'https://' + (!!(data.cluster)?data.cluster.stage:'cluster.stage') + '-' + (!!(data.tenant)?data.tenant.key:'tenant.key') + '-' + (!!(data.cluster)?data.cluster.name:'cluster.name') + '-01-wordpress.smardigo.digital/wp-admin' }}\">\n {{ 'https://' + (!!(data.cluster)?data.cluster.stage:'cluster.stage') + '-' + (!!(data.tenant)?data.tenant.key:'tenant.key') + '-' + (!!(data.cluster)?data.cluster.name:'cluster.name') + '-01-wordpress.smardigo.digital/wp-admin' }}\n </a>\n</div>",
"refreshOnChange" : true,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "htmlelement",
"input" : false,
"key" : "html5",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"encrypted" : false,
"properties" : { },
"tags" : null,
"customConditional" : "show = data['connect-features'].includes(\"connect_wordpress\") ",
"logic" : [ ],
"refreshOn" : "data",
"reorder" : false
} ]
}, {
"width" : 3,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"hideOnChildrenHidden" : false,
"key" : "column",
"tableView" : true,
"label" : "Column",
"components" : [ {
"label" : "keycloak_admin_username",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"clearOnHide" : false,
"disabled" : true,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "keycloak_admin_username",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"inputFormat" : "plain",
"encrypted" : false,
"properties" : { },
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
}, {
"label" : "keycloak_admin_password",
"hideLabel" : true,
"labelPosition" : "left-left",
"showWordCount" : false,
"showCharCount" : false,
"clearOnHide" : false,
"disabled" : true,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "keycloak_admin_password",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"properties" : { },
"tags" : [ ],
"inputFormat" : "plain",
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
} ]
}, {
"width" : 9,
"offset" : 0,
"push" : 0,
"pull" : 0,
"type" : "column",
"input" : false,
"hideOnChildrenHidden" : false,
"key" : "column",
"tableView" : true,
"label" : "Column",
"components" : [ {
"label" : "HTML",
"labelPosition" : "left-left",
"className" : "",
"attrs" : [ {
"attr" : "",
"value" : ""
} ],
"content" : "<div class=\"h5\">\n <a\n target=\"_blank\"\n href=\"{{ 'https://' + (!!(data.cluster)?data.cluster.stage:'cluster.stage') + '-keycloak-01.smardigo.digital/auth/admin/' + (!!(data.tenant)?data.tenant.key:'tenant.key') + '/console' }}\">\n {{ 'https://' + (!!(data.cluster)?data.cluster.stage:'cluster.stage') + '-keycloak-01.smardigo.digital/auth/admin/' + (!!(data.tenant)?data.tenant.key:'tenant.key') + '/console' }}\n </a>\n</div>",
"refreshOnChange" : true,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "htmlelement",
"input" : false,
"key" : "html3",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"encrypted" : false,
"properties" : { },
"tags" : null,
"customConditional" : "",
"logic" : [ ],
"refreshOn" : "data",
"reorder" : false
} ]
} ],
"mask" : false,
"tableView" : false,
"alwaysEnabled" : false,
"type" : "columns",
"input" : false,
"key" : "columns2",
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"properties" : { },
"tags" : null,
"customConditional" : "",
"logic" : [ ],
"reorder" : false
} ],
"tabs" : null,
"properties" : { },
"tags" : null,
"customConditional" : "",
"logic" : [ ],
"reorder" : false
}, {
"label" : "Connect",
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "container",
"input" : true,
"key" : "connect",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"components" : [ {
"label" : "Connect",
"hideLabel" : true,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "well",
"input" : false,
"key" : "connect2",
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"components" : [ {
"label" : "Version",
"labelPosition" : "left-left",
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "select",
"input" : true,
"key" : "version",
"defaultValue" : "latest",
"validate" : {
"select" : false,
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"data" : {
"url" : "api/v1/scopes/{{context.scopeId}}/tags/{{context.scopeTag}}/datasources/whitelabel-docker-image-tags/query",
"headers" : [ {
"key" : "",
"value" : ""
} ],
"values" : [ ]
},
"dataSrc" : "url",
"valueProperty" : "value",
"tabs" : null,
"properties" : { },
"selectThreshold" : 0.3,
"encrypted" : false,
"lazyLoad" : false,
"selectValues" : "",
"disableLimit" : false,
"sort" : "",
"tags" : null,
"customConditional" : "",
"logic" : [ ],
"customDefaultValue" : "value='latest'",
"reorder" : false,
"reference" : false
} ],
"tabs" : null,
"reorder" : false,
"properties" : { },
"tags" : null,
"customConditional" : "",
"logic" : [ ]
} ],
"tabs" : null,
"encrypted" : false,
"properties" : { },
"tags" : null,
"customConditional" : "",
"logic" : [ ],
"reorder" : false
}, {
"label" : "Cluster",
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "container",
"input" : true,
"key" : "cluster",
"validate" : {
"customMessage" : "",
"json" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"components" : [ {
"label" : "Cluster",
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "well",
"input" : false,
"key" : "cluster_well",
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"components" : [ {
"label" : "Stage",
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"disabled" : true,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "stage",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : "",
"required" : true,
"minLength" : null,
"maxLength" : null,
"minWords" : null,
"maxWords" : null
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"inputFormat" : "plain",
"encrypted" : false,
"properties" : { },
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
}, {
"label" : "Name",
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "name",
"defaultValue" : "",
"validate" : {
"customMessage" : "Zeichenkette ohne Sonderzeichen, mindestens 4 und höchstens 15 Zeichen, alles kleingeschrieben",
"json" : "",
"required" : true,
"minLength" : null,
"maxLength" : null,
"minWords" : null,
"maxWords" : null,
"pattern" : "^[a-z0-9]{4,15}$"
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"inputFormat" : "plain",
"encrypted" : false,
"properties" : { },
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
}, {
"label" : "Size",
"labelPosition" : "left-left",
"mask" : false,
"disabled" : true,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "number",
"input" : true,
"key" : "size",
"validate" : {
"customMessage" : "",
"json" : "",
"required" : true,
"min" : null,
"max" : null
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"properties" : { },
"tags" : [ ],
"delimiter" : false,
"requireDecimal" : false,
"encrypted" : false,
"decimalLimit" : null,
"customConditional" : "",
"logic" : [ ],
"reorder" : false
}, {
"label" : "Service",
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"disabled" : true,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "service",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : "",
"required" : true,
"minLength" : null,
"maxLength" : null,
"minWords" : null,
"maxWords" : null
},
"conditional" : {
"show" : "",
"when" : "",
"json" : ""
},
"tabs" : null,
"inputFormat" : "plain",
"encrypted" : false,
"properties" : { },
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : ""
},
"reorder" : false
} ],
"tabs" : null,
"properties" : { },
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"reorder" : false
} ],
"tabs" : null,
"encrypted" : false,
"properties" : { },
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"reorder" : false
} ],
"display" : "form"
}

@ -1,423 +0,0 @@
{
"name" : "Mandnat",
"configKey" : "tenant",
"page" : 0,
"components" : [ {
"label" : "Mandant",
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "datasourcecontainer",
"input" : true,
"key" : "tenant",
"defaultValue" : {
"tenant" : {
"id" : "",
"name" : "",
"key" : ""
}
},
"validate" : {
"customMessage" : "",
"json" : "",
"required" : false,
"custom" : "",
"customPrivate" : false
},
"conditional" : {
"show" : "",
"when" : "",
"json" : "",
"eq" : ""
},
"data" : {
"url" : "api/v1/scopes/{{context.scopeId}}/tags/{{context.scopeTag}}/datasources/tenants/query?id={{data.tenant_id}}",
"method" : "GET",
"values" : [ { } ]
},
"components" : [ {
"label" : "Mandant",
"hideLabel" : true,
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "container",
"input" : true,
"key" : "tenant",
"validate" : {
"customMessage" : "",
"json" : "",
"required" : false,
"custom" : "",
"customPrivate" : false
},
"conditional" : {
"show" : "",
"when" : "",
"json" : "",
"eq" : ""
},
"components" : [ {
"label" : "Mandant",
"mask" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "well",
"input" : false,
"key" : "tenant",
"conditional" : {
"show" : "",
"when" : "",
"json" : "",
"eq" : ""
},
"components" : [ {
"label" : "Id",
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "id",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : "",
"required" : false,
"custom" : "",
"customPrivate" : false,
"minLength" : "",
"maxLength" : "",
"minWords" : "",
"maxWords" : "",
"pattern" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : "",
"eq" : ""
},
"tabs" : null,
"properties" : { },
"inputFormat" : "plain",
"encrypted" : false,
"tags" : null,
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : "",
"format" : "yyyy-MM-dd hh:mm a",
"dateFormat" : "yyyy-MM-dd hh:mm a",
"saveAs" : "text"
},
"reorder" : false,
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"protected" : false,
"unique" : false,
"persistent" : true,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"mask" : false,
"inputType" : "text",
"inputMask" : "",
"id" : "ehjc0fj"
}, {
"label" : "Name",
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "name",
"properties" : { },
"tags" : [ ],
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : "",
"required" : false,
"custom" : "",
"customPrivate" : false,
"minLength" : "",
"maxLength" : "",
"minWords" : "",
"maxWords" : "",
"pattern" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : "",
"eq" : ""
},
"tabs" : null,
"inputFormat" : "plain",
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"widget" : {
"type" : "",
"format" : "yyyy-MM-dd hh:mm a",
"dateFormat" : "yyyy-MM-dd hh:mm a",
"saveAs" : "text"
},
"reorder" : false,
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"protected" : false,
"unique" : false,
"persistent" : true,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"mask" : false,
"inputType" : "text",
"inputMask" : "",
"id" : "ep46nvg"
}, {
"label" : "Key",
"labelPosition" : "left-left",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
"tableView" : true,
"alwaysEnabled" : false,
"type" : "textfield",
"input" : true,
"key" : "key",
"defaultValue" : "",
"validate" : {
"customMessage" : "",
"json" : "",
"required" : false,
"custom" : "",
"customPrivate" : false,
"minLength" : "",
"maxLength" : "",
"minWords" : "",
"maxWords" : "",
"pattern" : ""
},
"conditional" : {
"show" : "",
"when" : "",
"json" : "",
"eq" : ""
},
"tabs" : null,
"widget" : {
"type" : "",
"format" : "yyyy-MM-dd hh:mm a",
"dateFormat" : "yyyy-MM-dd hh:mm a",
"saveAs" : "text"
},
"properties" : { },
"reorder" : false,
"inputFormat" : "plain",
"encrypted" : false,
"tags" : null,
"customConditional" : "",
"logic" : [ ],
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"protected" : false,
"unique" : false,
"persistent" : true,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"mask" : false,
"inputType" : "text",
"inputMask" : "",
"id" : "esggboj"
} ],
"tabs" : null,
"properties" : { },
"tags" : [ ],
"reorder" : false,
"customConditional" : "",
"logic" : [ ],
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"defaultValue" : null,
"protected" : false,
"unique" : false,
"persistent" : false,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelPosition" : "top",
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"widget" : null,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"validate" : {
"required" : false,
"custom" : "",
"customPrivate" : false
},
"id" : "exeapht"
} ],
"tabs" : null,
"properties" : { },
"tags" : [ ],
"encrypted" : false,
"customConditional" : "",
"logic" : [ ],
"reorder" : false,
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"defaultValue" : null,
"protected" : false,
"unique" : false,
"persistent" : true,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelPosition" : "top",
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"widget" : null,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"tree" : true,
"id" : "embfag"
} ],
"tabs" : null,
"properties" : { },
"datapath" : "0",
"encrypted" : false,
"tags" : [ ],
"customConditional" : "",
"logic" : [ ],
"reorder" : false,
"placeholder" : "",
"prefix" : "",
"customClass" : "",
"suffix" : "",
"multiple" : false,
"protected" : false,
"unique" : false,
"persistent" : true,
"hidden" : false,
"clearOnHide" : true,
"dataGridLabel" : false,
"labelPosition" : "top",
"labelWidth" : 30,
"labelMargin" : 3,
"description" : "",
"errorLabel" : "",
"tooltip" : "",
"hideLabel" : false,
"tabindex" : "",
"disabled" : false,
"autofocus" : false,
"dbIndex" : false,
"customDefaultValue" : "",
"calculateValue" : "",
"allowCalculateOverride" : false,
"widget" : null,
"refreshOn" : "",
"clearOnRefresh" : false,
"validateOn" : "change",
"dataSrc" : "url",
"tree" : true,
"id" : "esiqho"
} ]
}

@ -1,107 +0,0 @@
{
"name" : "simple-connect",
"configKey" : "simple-connect",
"tabExpression" : "{{ data.cluster.stage }}-{{ data.tenant.key }}-{{ data.cluster.name }}",
"readonlyExpression" : "data.vorgang_status > 10",
"components" : [ {
"type" : "columns",
"key" : "dossier",
"columns" : [ {
"components" : [ {
"type" : "form",
"key" : "header",
"readonlyExpression" : "true"
}, {
"type" : "html",
"content" : "<hr>"
}, {
"type" : "columns",
"key" : "first-column",
"columns" : [ {
"components" : [ {
"type" : "page",
"key" : "dossier-page",
"toc" : "left",
"sections" : [ {
"type" : "section",
"key" : "aktionen",
"title" : "Aktionen",
"visibleExpression" : "(data.vorgang_status >= 40 && data.vorgang_status < 50)||(data.vorgang_status >= 60)",
"components" : [ {
"type" : "form",
"key" : "progress-bar",
"readonlyExpression" : "true"
}, {
"type" : "columns",
"key" : "a_key",
"columns" : [ {
"width" : "75%",
"components" : [ {
"type" : "form",
"key" : "current-job-left",
"readonlyExpression" : "true"
} ]
}, {
"width" : "25%",
"components" : [ {
"type" : "form",
"key" : "current-job-right",
"readonlyExpression" : "true"
} ]
} ]
}, {
"type" : "form",
"key" : "current-jobs",
"readonlyExpression" : "true"
} ]
}, {
"type" : "section",
"key" : "smardigo",
"title" : "Smardigo",
"components" : [ {
"type" : "form",
"key" : "simple-connect"
} ]
}, {
"type" : "section",
"key" : "stammdaten",
"title" : "Stammdaten",
"components" : [ {
"type" : "form",
"key" : "tenant",
"readonlyExpression" : "true"
} ]
}, {
"type" : "section",
"key" : "dossier-comments",
"title" : "Kommentare",
"components" : [ {
"type" : "comments",
"key" : "comments"
} ]
}, {
"type" : "section",
"key" : "dossier-history",
"title" : "Protokoll",
"components" : [ {
"type" : "history",
"key" : "history"
} ]
} ]
} ],
"width" : "9"
}, {
"components" : [ {
"type" : "help-text",
"key" : "help-text"
}, {
"type" : "action-list",
"key" : "action-list"
} ],
"width" : "350px"
} ]
} ],
"width" : "12"
} ]
} ]
}

@ -1,64 +0,0 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Neue Smardigo-Instanz erfolgreich aufgesetzt</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="shortcut icon" th:href="@{|${baseUrl}/favicon.ico|}" />
</head>
<body>
<p>
Sehr geehrte Damen und Herren,
</p>
<p></p>
<p>
ihre Smardigo-Instanz ist nun einsatzbereit.
</p>
<p>
Zum Abschließen der Installation müssen Sie sich mit den folgend angegebenen initialen Zugangsdaten
anmelden. Sie werden danach aufgefordert, Ihre eigenen Passwörter zu setzen. Beachten Sie, dass die
zugehörigen Benutzer über alle Ihre Smardigo-Instanzen hin geteilt werden. Die initialen Passwörter
können nur für die allererste Anmeldung verwendet werden. Von Ihnen gesetzte Passwörter werden nicht
überschrieben.
</p>
<p></p>
<table>
<tr>
<th>Service</th>
<th>Benutzer</th>
<th>Passwort</th>
<th>Link</th>
</tr>
<tr>
<td>Connect</td>
<td th:text="${ connect_admin_username }">some-username</td>
<td th:text="${ connect_admin_password }">some-password</td>
<td th:text="'https://' + ${ cluster.stage } + '-' + ${ tenant.key } + '-' + ${ cluster.name } + '-01-connect.smardigo.digital'">some-link</td>
</tr>
<tr>
<td>Keycloak</td>
<td th:text="${ keycloak_admin_username }">some-username</td>
<td th:text="${ keycloak_admin_password }">some-password</td>
<td th:text="'https://' + ${ cluster.stage } + '-keycloak-01.smardigo.digital/auth/admin/' + ${ tenant.key } + '/console'">some-link</td>
</tr>
<tr>
<td>Wordpress</td>
<td th:text="${ wordpress_admin_username }">some-username</td>
<td th:text="${ wordpress_admin_password }">some-password</td>
<td th:text="'https://' + ${ cluster.stage } + '-' + ${ tenant.key } + '-' + ${ cluster.name } + '-01-wordpress.smardigo.digital'">some-link</td>
</tr>
<tr>
<td>ELK</td>
<td th:text="${ cluster.stage } + '-' + ${ tenant.key }">some-username</td>
<td th:text="${ cluster.stage } + '-' + ${ tenant.key }">some-password</td>
<td th:text="'https://' + ${ cluster.stage } + '-elastic-stack-kibana-01-kibana.smardigo.digital/s/' + ${ cluster.stage } + '-' + ${ tenant.key } + '/app/home#/'">some-link</td>
</tr>
</table>
<p></p>
<p>
Hier geht es zum Antrag: <a target="_blank" th:href="|${baseUrl}/api/redirect/process/${contextScopeId}/dossier/${contextProcessDefinitionKey}/${contextProcessInstanceId}|">Link</a>
</p>
<p>
Hinweis: Diese Mail wurde durch Smardigo automatisch erzeugt.
</p>
</body>
</html>

@ -1 +0,0 @@
scopeId=provisioning

@ -1,20 +0,0 @@
{
"configKey" : "policy",
"configType" : "policy",
"name" : "Policies",
"policies" : [ {
"id" : "allow_delete_process_all",
"name" : "Processes delete all",
"effect" : "allow",
"actions" : [ "delete" ],
"resources" : [ "processes:simple-connect" ],
"conditions" : [ "${vorgang_status_text == 'Neu'}" ]
}, {
"id" : "allow_read_write_variables_all",
"name" : "Variables read/write all",
"effect" : "allow",
"actions" : [ "read", "write" ],
"resources" : [ "variables:simple-connect:*" ],
"conditions" : [ ]
} ]
}

@ -1,8 +0,0 @@
{
"name" : "Simple Connect",
"configKey" : "simple-connect-fallback",
"processDefinitionKey" : "simple-connect",
"columns" : [ ],
"sorts" : [ ],
"filters" : [ ]
}

@ -1,99 +0,0 @@
{
"name" : "Simple Connect",
"configKey" : "simple-connect",
"processDefinitionKey" : "simple-connect",
"columns" : [ {
"key" : "id",
"name" : "ID",
"width" : 50,
"hidden" : true
}, {
"key" : "process_definition_key",
"name" : "Prozess",
"width" : 100,
"hidden" : true
}, {
"key" : "creation_date",
"name" : "Erstelldatum",
"width" : 100
}, {
"key" : "tenant.name",
"name" : "Mandant Name",
"width" : 100
}, {
"key" : "tenant.key",
"name" : "Mandant Schlüssel",
"width" : 100
}, {
"key" : "cluster.name",
"name" : "Cluster Name",
"width" : "100"
}, {
"key" : "connect.version",
"name" : "Version",
"width" : "100"
}, {
"key" : "creation_user_id",
"name" : "Ersteller",
"width" : 150
}, {
"key" : "vorgang_status_text",
"name" : "Status",
"width" : 100,
"render" : {
"type" : "nominal_classification",
"dataclassdefinitions" : [ {
"value" : "Neu",
"style" : "traffic-light-blue"
}, {
"value" : "Antrag gesendet",
"style" : "traffic-light-blue"
}, {
"value" : "Antrag freigegeben",
"style" : "traffic-light-yellow"
}, {
"value" : "Service wird gestartet",
"style" : "traffic-light-yellow"
}, {
"value" : "Service wird aktualisiert",
"style" : "traffic-light-yellow"
}, {
"value" : "Service gestartet",
"style" : "traffic-light-green"
}, {
"value" : "Antrag abgebrochen",
"style" : "traffic-light-red"
}, {
"value" : "Service wird gelöscht",
"style" : "traffic-light-red"
}, {
"value" : "Service gelöscht",
"style" : "traffic-light-red"
} ]
}
}, {
"key" : "candidateGroups",
"name" : "Gruppen",
"width" : 100,
"hidden" : true
} ],
"filters" : [ {
"name" : "Ersteller",
"key" : "creation_user_id",
"defaultOption" : {
"key" : "default",
"name" : "Alle"
}
}, {
"name" : "Status",
"key" : "vorgang_status_text",
"defaultOption" : {
"key" : "default",
"name" : "Alle"
}
} ],
"sorts" : [ {
"key" : "creation_date",
"direction" : "desc"
} ]
}

@ -1,197 +0,0 @@
{
"name" : "Simple Connect",
"configKey" : "simple-connect",
"configType" : "process-variable-declaration",
"variableDeclarations" : {
"antrag_decission" : {
"type" : "string",
"classification" : "PRIVATE"
},
"approve_comment" : {
"type" : "string",
"classification" : "PRIVATE"
},
"awxPath" : {
"type" : "string",
"classification" : "PRIVATE"
},
"candidateGroups" : {
"type" : "string",
"classification" : "PRIVATE",
"searchable" : true,
"label" : "Gruppen"
},
"cluster" : {
"type" : "object",
"classification" : "PRIVATE",
"fields" : {
"name" : {
"type" : "string",
"classification" : "PRIVATE",
"searchable" : true,
"label" : "Cluster Name"
}
}
},
"connect" : {
"type" : "object",
"classification" : "PRIVATE",
"fields" : {
"version" : {
"type" : "string",
"classification" : "PRIVATE",
"searchable" : true,
"label" : "Version"
}
}
},
"connect_admin_password" : {
"type" : "string",
"classification" : "PRIVATE"
},
"connect_admin_username" : {
"type" : "string",
"classification" : "PRIVATE"
},
"connect-features" : {
"type" : "object",
"classification" : "PRIVATE"
},
"creation_date" : {
"type" : "date",
"classification" : "PRIVATE",
"searchable" : true,
"label" : "Erstelldatum"
},
"creation_user_id" : {
"type" : "userId",
"classification" : "PRIVATE",
"searchable" : true,
"label" : "Ersteller"
},
"edit_tenant" : {
"type" : "boolean",
"classification" : "PRIVATE"
},
"extra_vars" : {
"type" : "object",
"classification" : "PRIVATE"
},
"id" : {
"type" : "string",
"classification" : "PRIVATE",
"searchable" : true,
"label" : "ID"
},
"job_template_id" : {
"type" : "string",
"classification" : "PRIVATE"
},
"jobs" : {
"type" : "object",
"classification" : "PRIVATE"
},
"key" : {
"type" : "string",
"classification" : "PRIVATE"
},
"keycloak_admin_password" : {
"type" : "string",
"classification" : "PRIVATE"
},
"keycloak_admin_username" : {
"type" : "string",
"classification" : "PRIVATE"
},
"name" : {
"type" : "string",
"classification" : "PRIVATE"
},
"process_definition_key" : {
"type" : "string",
"classification" : "PRIVATE",
"searchable" : true,
"label" : "Prozess"
},
"progress_current" : {
"type" : "long",
"classification" : "PRIVATE"
},
"progress_max" : {
"type" : "long",
"classification" : "PRIVATE"
},
"pruefer_id" : {
"type" : "string",
"classification" : "PRIVATE"
},
"selected_tenant" : {
"type" : "object",
"classification" : "PRIVATE"
},
"sendUpAndRunningMail" : {
"type" : "boolean",
"classification" : "PRIVATE"
},
"service" : {
"type" : "string",
"classification" : "PRIVATE"
},
"service_url" : {
"type" : "string",
"classification" : "PRIVATE"
},
"size" : {
"type" : "long",
"classification" : "PRIVATE"
},
"stage" : {
"type" : "string",
"classification" : "PRIVATE"
},
"tenant" : {
"type" : "object",
"classification" : "PRIVATE",
"fields" : {
"name" : {
"type" : "string",
"classification" : "PRIVATE",
"searchable" : true,
"label" : "Mandant Name"
},
"key" : {
"type" : "string",
"classification" : "PRIVATE",
"searchable" : true,
"label" : "Mandant Schlüssel"
}
}
},
"tenant_id" : {
"type" : "string",
"classification" : "PRIVATE"
},
"vorgang_status" : {
"type" : "string",
"classification" : "PRIVATE"
},
"vorgang_status_text" : {
"type" : "string",
"classification" : "PRIVATE",
"searchable" : true,
"label" : "Status"
},
"wizard_selection" : {
"type" : "string",
"classification" : "PRIVATE"
},
"wordpress_admin_password" : {
"type" : "string",
"classification" : "PRIVATE"
},
"wordpress_admin_username" : {
"type" : "string",
"classification" : "PRIVATE"
}
}
}

@ -1,28 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/" xmlns:dmndi="https://www.omg.org/spec/DMN/20191111/DMNDI/" xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/" id="Definitions_1p0mp6a" name="zaziel-pruefer" namespace="http://camunda.org/schema/1.0/dmn" exporter="Camunda Modeler" exporterVersion="4.6.0">
<decision id="investigator" name="investigator">
<decisionTable id="decisionTable_1" hitPolicy="RULE ORDER">
<input id="InputClause_19ntyko" label="Tenant">
<inputExpression id="LiteralExpression_0nad4el" typeRef="string">
<text>tenant_id</text>
</inputExpression>
</input>
<output id="output_1" label="Investigator" name="investigator_group" typeRef="string" />
<rule id="DecisionRule_1bujqal">
<inputEntry id="UnaryTests_0zybuae">
<text>-</text>
</inputEntry>
<outputEntry id="LiteralExpression_1w7snpv">
<text>"head"</text>
</outputEntry>
</rule>
</decisionTable>
</decision>
<dmndi:DMNDI>
<dmndi:DMNDiagram id="DMNDiagram_0sx9u2x">
<dmndi:DMNShape id="DMNShape_0gden1d" dmnElementRef="investigator">
<dc:Bounds height="80" width="180" x="150" y="80" />
</dmndi:DMNShape>
</dmndi:DMNDiagram>
</dmndi:DMNDI>
</definitions>

File diff suppressed because it is too large Load Diff

@ -1,10 +0,0 @@
{
"name" : "Policy Mapping",
"configKey" : "role-policy-mapping",
"configType" : "role-policy-mapping",
"rolePolicyMapping" : {
"user" : [ "allow_read_write_variables_all" ],
"maintainer" : [ "allow_delete_process_all" ],
"administrator" : [ "allow_delete_process_all" ]
}
}

@ -1,18 +0,0 @@
{
"name" : "roles",
"configKey" : "roles",
"configType" : "roles",
"roles" : [ {
"id" : "user",
"name" : "User"
}, {
"id" : "head",
"name" : "Head"
}, {
"id" : "maintainer",
"name" : "Maintainer"
}, {
"id" : "administrator",
"name" : "Administrator"
} ]
}

@ -1 +0,0 @@
processes.byId(contextScopeId, contextProcessId).createComment(comment + ' beendet')

@ -1,43 +0,0 @@
def cluster_features = ['connect'] + execution.getVariable('connect-features')
def env = [
cluster_features: cluster_features,
cluster_name: cluster.name,
cluster_service: cluster.service,
cluster_size: cluster.size,
connect_image_version: binding.hasVariable('connect') ? connect.version : 'latest',
current_realm_name: tenant.key,
current_realm_display_name: tenant.name,
process_instance_id: execution.getProcessInstanceId(),
scope_id: contextScopeId,
smardigo_management_action: smardigoManagementAction,
stage: cluster.stage,
tenant_id: tenant.key,
connect_client_admin_username: connect_admin_username,
connect_client_admin_password: connect_admin_password,
connect_realm_admin_username: keycloak_admin_username,
connect_realm_admin_password: keycloak_admin_password,
wordpress_admin_username: wordpress_admin_username,
wordpress_admin_password: wordpress_admin_password
]
if (binding.hasVariable('extraVariables')) {
env << extraVariables
}
def filename = 'xvars-' + smardigoManagementAction + '-' + execution.getProcessInstanceId() + '.yml'
def ansibleCommand= 'ansible-playbook ' + smardigoManagementAction + '.yml --vault-password-file ~/vault-pass-' + envStage + ' -e "@' + filename + '"'
def ansibleVariables= 'cat <<EOT > ' + filename + '\n'
ansibleVariables+= '---\n'
env.each { key, val ->
if (val instanceof List) {
ansibleVariables+= key + ':\n- \'' + val.join('\'\n- \'') + '\'\n'
} else {
ansibleVariables+= key + ': \'' + val + '\'\n'
}
}
ansibleVariables+= 'EOT'
processes.byId(contextScopeId, contextProcessId).createComment(comment + ' gestartet')
processes.byId(contextScopeId, contextProcessId).createComment(ansibleVariables + '\n' + ansibleCommand)
ansibleCommand

@ -1,27 +0,0 @@
def cluster_features = ['connect'] + execution.getVariable('connect-features')
def env = [
cluster_features: cluster_features,
cluster_name: cluster.name,
cluster_service: cluster.service,
cluster_size: cluster.size,
connect_version: binding.hasVariable('connect') ? connect.version : 'latest',
current_realm_name: tenant.key,
current_realm_display_name: tenant.name,
process_instance_id: execution.getProcessInstanceId(),
scope_id: contextScopeId,
smardigo_management_action: smardigoManagementAction,
stage: cluster.stage,
tenant_id: tenant.key,
connect_client_admin_username: binding.hasVariable('connect_admin_username') ? connect_admin_username : '',
connect_client_admin_password: binding.hasVariable('connect_admin_password') ? connect_admin_password : '',
connect_realm_admin_username: binding.hasVariable('keycloak_admin_username') ? keycloak_admin_username : '',
connect_realm_admin_password: binding.hasVariable('keycloak_admin_password') ? keycloak_admin_password : '',
wordpress_admin_username: binding.hasVariable('wordpress_admin_username') ? wordpress_admin_username : '',
wordpress_admin_password: binding.hasVariable('wordpress_admin_password') ? wordpress_admin_password : ''
]
if (binding.hasVariable('extraVariables')) {
env << extraVariables
}
env

@ -1,26 +0,0 @@
def pool_length = 20;
def digits = [0..9].flatten() - [ 'O', '0', 'l', '1', 'I' ]
def upperCase = ['A'..'Z'].flatten() - [ 'O', '0', 'l', '1', 'I' ]
def lowerCase = ['a'..'z'].flatten() - [ 'O', '0', 'l', '1', 'I' ]
def special = ['~','!','#','%','&','(',')','{','}','[',']','-','+']
def pool = digits + upperCase + lowerCase + special
Random rand = new Random(System.currentTimeMillis());
def passChars = (0..pool_length - 1).collect { pool[rand.nextInt(pool.size())] };
passChars[0] = special[rand.nextInt(special.size())]
passChars[pool_length - 0] = special[rand.nextInt(special.size())]
passChars[1] = upperCase[rand.nextInt(upperCase.size())]
passChars[pool_length - 1] = upperCase[rand.nextInt(upperCase.size())]
passChars[2] = lowerCase[rand.nextInt(lowerCase.size())]
passChars[pool_length - 2] = lowerCase[rand.nextInt(lowerCase.size())]
passChars[3] = digits[rand.nextInt(digits.size())]
passChars[pool_length - 3] = digits[rand.nextInt(digits.size())]
def PASSWORD = passChars.join('');
PASSWORD

@ -1,45 +0,0 @@
def smardigoUrl = "https://" + cluster.stage + "-management-01-connect.smardigo.digital/api/redirect/process/" + contextScopeId + "/dossier/simple-connect/" + contextProcessId
def smardigoMessageUrl = "https://" + cluster.stage + "-management-01-connect.smardigo.digital/api/v1/scopes/" + contextScopeId + "/processes/" + contextProcessId + "/messages"
def message = [:]
message["@type"] = "MessageCard"
message["@context"] = "http://schema.org/extensions"
message["themeColor"] = "0076D7"
message["summary"] = "Neue Aufgabe: " + comment
def section = [:]
section["activityTitle"] = activityTitle
section["activitySubtitle"] = activitySubtitle
section["activityImage"] = "https://smardigo.de/wp-content/uploads/2020/01/smardigo-min.png"
section["facts"] = [
[name:"Stage",value:cluster.stage],
[name:"Name",value:cluster.name],
[name:"Service",value:cluster.service],
[name:"Mandant",value:tenant.name]
]
message.sections = [section]
def potentialAction = []
def openInSmardigo = [:]
openInSmardigo["@type"] = "ViewAction"
openInSmardigo["@context"] = "http://schema.org"
openInSmardigo["name"] = "Vorgang öffnen"
openInSmardigo["target"] = [smardigoUrl]
potentialAction.add(openInSmardigo)
if (vorgang_status < 30) {
def approveInSmardigo = [:]
approveInSmardigo["@type"] = "HttpPOST"
approveInSmardigo["name"] = "Server freigeben"
approveInSmardigo["target"] = smardigoMessageUrl
approveInSmardigo["body"] = "{\"message\":\"process-approved-" + contextProcessId + "\"}"
approveInSmardigo["headers"] = [
[name:"Smardigo-User-Token",value:envSmardigoUserToken]
]
potentialAction.add(approveInSmardigo)
}
message.potentialAction = potentialAction
message

@ -1,24 +0,0 @@
/****************************************
insert process variable values start
*****************************************/
def processVariables = [:]
processVariables.result = creation_user_id + " is not a cat"
/****************************************
insert process variable values end
*****************************************/
/****************************************
insert local variable values start
*****************************************/
def localVariables = [:]
/****************************************
insert local variable values end
*****************************************/
def result = [
processVariables:processVariables,
localVariables:localVariables
]
return result;

@ -1,10 +0,0 @@
def parameters = [:]
parameters["default"] = "'1'"
def defaultFeatures = datasources.query("connect-features").processScope(contextScopeId, contextScopeTag).parameters(parameters).list();
def features = []
defaultFeatures.each { val -> features+= val.key }
features

@ -40,15 +40,6 @@
<bpmn2:sequenceFlow id="Flow_080k63h" sourceRef="Activity_1xhfee5" targetRef="Event_1l1qtec" />
<bpmn2:sequenceFlow id="Flow_0ufs5lg" sourceRef="Event_1l1qtec" targetRef="Event_14fmnl2" />
</bpmn2:process>
<bpmn2:message id="Message_1drsp54" name="server-created" />
<bpmn2:signal id="Signal_0kz05aq" name="antrag-abgeschlossen-${execution.getProcessInstanceId()}" />
<bpmn2:signal id="Signal_04iylf6" name="read-tenant-update" />
<bpmn2:signal id="Signal_0yvztnu" name="Signal_0kk0b5i" />
<bpmn2:message id="Message_13j1zir" name="create-database" />
<bpmn2:message id="Message_1df18gi" name="create-realm" />
<bpmn2:message id="Message_1in2mhs" name="create-server" />
<bpmn2:message id="Message_01xkrhl" name="create-service" />
<bpmn2:message id="Message_13oyyv2" name="action-executed-${execution.getVariable(&#39;smardigoManagementAction&#39;)}" />
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_0oahy0i">
<bpmndi:BPMNShape id="Participant_19lpjee_di" bpmnElement="Participant_19lpjee" isHorizontal="true">

Binary file not shown.

@ -0,0 +1,29 @@
---
- name: "Setting pmci default variables"
ansible.builtin.set_fact:
ansible_ssh_host: "{{ stage_server_domain }}"
tenant_id: "{{ tenant.key }}" # legacy paramater, backwards compatibility
cluster_name: "{{ cluster.key }}" # legacy paramater, backwards compatibility
current_realm_name: "{{ tenant.key }}" # legacy paramater, backwards compatibility
management_base_url: "{{ stage }}-management-01-connect.{{ domain }}"
- name: "Setting pmci connect variables"
ansible.builtin.set_fact:
connect_version: "{{ data.connect.version }}" # legacy paramater, backwards compatibility
connect_client_admin_username: "{{ data.connect.admin.username | default(cluster.key + '-connect-admin') }}" # legacy paramater, backwards compatibility
when:
- data.connect is defined
- name: "Setting pmci wordpress variables"
ansible.builtin.set_fact:
connect_wordpress_admin_username: "{{ data.wordpress.admin.username | default(cluster.key + '-wordpress-admin') }}" # legacy paramater, backwards compatibility
connect_wordpress_admin_password: "{{ data.wordpress.admin.password | default(cluster.key + '-wordpress-admin') }}" # legacy paramater, backwards compatibility
wordpress_connect_username: "{{ data.wordpress.connect.username | default(cluster.key + '-wordpress-connect') }}" # legacy paramater, backwards compatibility
when:
- data.wordpress is defined
- name: "Setting pmci database variables"
ansible.builtin.set_fact:
database_backup_file: "{{ data.database.backup_file }}" # legacy paramater, backwards compatibility
when:
- data.database is defined

@ -0,0 +1,5 @@
file_uploads = On
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 600

@ -1,2 +0,0 @@
<?php
// Silence is golden.

@ -1,95 +0,0 @@
---
# updates prometheus config in case of adding/removing server via smardigo
# Parameters:
# playbook inventory
# stage := the name of the stage (e.g. devnso, qanso, prodnso)
# smardigo message callback
# scope_id := (scope id of the management process)
# process_instance_id := (process instance id of the management process)
# smardigo_management_action := (smardigo management action anme of the management process)
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
- hosts: localhost
gather_facts: false
connection: local
pre_tasks:
- name: "Import constraints check"
import_tasks: tasks/constraints_check.yml
become: false
tags:
- always
# add virtual server to load stage specific variables as context
- name: "Add <{{ stage }}-virtual-host-to-read-groups-vars> to hosts"
add_host:
name: "{{ stage }}-virtual-host-to-read-groups-vars"
groups:
- "stage_{{ stage }}"
changed_when: False
#############################################################
# Creating inventory dynamically for given parameters
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
pre_tasks:
- name: "Import autodiscover pre-tasks"
import_tasks: tasks/autodiscover_pre_tasks.yml
become: false
tags:
- always
tasks:
- name: "Add all servers for stage {{ stage }} to inventory"
add_host:
name: "{{ item.name }}"
groups:
- "stage_{{ stage }}"
- "{{ item.service }}"
stage_server_infos: "{{ stage_server_infos }}"
changed_when: False
with_items: "{{ stage_server_infos }}"
#############################################################
# Updating monitoring for all servers
#############################################################
- hosts: "{{ stage }}-prometheus-01"
serial: "{{ serial_number | default(1) }}"
remote_user: root
vars:
ansible_ssh_host: "{{ stage_server_domain }}"
tasks:
- include_role:
name: prometheus
tasks_from: _update_config
- include_role:
name: prometheus
tasks_from: _reload_config
#############################################################
# Sending smardigo management message to process
#############################################################
- hosts: "{{ stage }}-virtual-host-to-read-groups-vars"
serial: "{{ serial_number | default(1) }}"
gather_facts: false
connection: local
run_once: true
vars:
connect_jwt_username: "{{ management_admin_username }}"
tasks:
- name: "Sending smardigo management message to <{{ shared_service_url_management }}>"
include_tasks: tasks/smardigo_management_message.yml

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save