diff --git a/create-database-backup.yml b/create-database-backup.yml
index 55636c4..2b5d1a9 100644
--- a/create-database-backup.yml
+++ b/create-database-backup.yml
@@ -51,7 +51,7 @@
- "{{ item }}"
changed_when: False
with_items: "{{ cluster_features }}"
- when: item in ['connect', 'management_connect', 'keycloak', 'webdav', 'gitea', 'workflow_index', 'workflow_proxy', 'pdns']
+ when: item in ['connect', 'management_connect', 'keycloak', 'webdav', 'gitea', 'pdns']
- name: "Add maria servers to hosts if necessary"
add_host:
@@ -93,12 +93,6 @@
- role: webdav_postgres
when: "'webdav' in group_names"
- - role: workflow_index_postgres
- when: "'workflow_index' in group_names"
-
- - role: workflow_proxy_postgres
- when: "'workflow_proxy' in group_names"
-
- role: connect_wordpress_maria
when: "'connect_wordpress' in group_names"
diff --git a/create-database.yml b/create-database.yml
index 4161fac..f139769 100644
--- a/create-database.yml
+++ b/create-database.yml
@@ -57,7 +57,7 @@
- "{{ item }}"
changed_when: False
with_items: "{{ cluster_features }}"
- when: item in ['confirm', 'connect', 'management_connect', 'keycloak', 'webdav', 'gitea', 'workflow_index', 'workflow_proxy', 'pdns']
+ when: item in ['connect', 'management_connect', 'keycloak', 'webdav', 'gitea', 'pdns']
- name: "Add maria servers to hosts if necessary"
add_host:
@@ -87,9 +87,6 @@
- always
roles:
- - role: confirm_postgres
- when: "'confirm' in group_names"
-
- role: connect_postgres
when: "'connect' in group_names"
@@ -112,12 +109,6 @@
- role: webdav_postgres
when: "'webdav' in group_names"
- - role: workflow_index_postgres
- when: "'workflow_index' in group_names"
-
- - role: workflow_proxy_postgres
- when: "'workflow_proxy' in group_names"
-
- role: connect_wordpress_maria
when: "'connect_wordpress' in group_names"
diff --git a/create-realm.yml b/create-realm.yml
index c679571..de38f07 100644
--- a/create-realm.yml
+++ b/create-realm.yml
@@ -77,9 +77,6 @@
- role: gitea_realm
when: '"gitea" in group_names'
- - role: workflow_proxy_realm
- when: '"workflow-proxy" in group_names'
-
#############################################################
# Sending smardigo management message to process
#############################################################
diff --git a/group_vars/all/connect.yml b/group_vars/all/connect.yml
deleted file mode 100644
index 99a49c5..0000000
--- a/group_vars/all/connect.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-
-connect_client_admin_username: "connect-admin"
-connect_realm_admin_username: "connect-realm-admin"
diff --git a/group_vars/all/versions.yml b/group_vars/all/versions.yml
index 9ea4ab2..b776957 100644
--- a/group_vars/all/versions.yml
+++ b/group_vars/all/versions.yml
@@ -24,7 +24,7 @@ prom_prom2teams_version: "3.2.3"
traefik_version: "v2.8.5"
-connect_version: "10.4.12"
+connect_version: "10.5"
iam_version: "10.0"
webdav_version: "8.4.1"
diff --git a/group_vars/management/plain.yml b/group_vars/management/plain.yml
index da126e1..acc949c 100644
--- a/group_vars/management/plain.yml
+++ b/group_vars/management/plain.yml
@@ -4,7 +4,7 @@ hetzner_server_type: cx21
connect_client_admin_username: "{{ management_admin_username }}"
connect_client_admin_password: "{{ management_admin_password }}"
-connect_workflow_env: "stage:{{ stage }};smardigoUserToken:{{ smardigo_auth_token_value }}"
+connect_workflow_env: "baseUrl:{{ connect_base_url }};stage:{{ stage }};smardigoUserToken:{{ smardigo_auth_token_value }}"
connect_oidc_client_secret: "{{ management_oidc_client_secret }}"
connect_config_delete_scope_enabled: true
@@ -42,16 +42,14 @@ current_realm_clients: [
}
]
-current_realm_users: [
- {
- "username": "{{ management_admin_username }}",
- "password": "{{ management_admin_password }}",
- "email": "{{ connect_admin_email }}",
- "requiredActions": []
- }
-]
-current_realm_admin_user:
- username: "{{ management_realm_admin_username }}"
- password: "{{ management_realm_admin_password }}"
- email: "{{ connect_admin_email }}"
- requiredActions: []
+current_realm_users:
+ - username: "{{ management_admin_username }}"
+ password: "{{ management_admin_password }}"
+ email: "{{ connect_admin_email }}"
+ requiredActions: []
+
+current_realm_admin_users:
+ - username: "{{ management_realm_admin_username }}"
+ password: "{{ management_realm_admin_password }}"
+ email: "{{ connect_admin_email }}"
+ requiredActions: []
diff --git a/group_vars/stage_dev/awx.yml b/group_vars/stage_dev/awx.yml
index 79a5623..55a3627 100644
--- a/group_vars/stage_dev/awx.yml
+++ b/group_vars/stage_dev/awx.yml
@@ -1,3 +1,3 @@
---
-awx_hetzner_ansible_revision: "main"
+awx_hetzner_ansible_revision: "feature/DEV-526"
diff --git a/pmci-callback.yml b/pmci-callback.yml
index fdcdbbe..a9f5140 100644
--- a/pmci-callback.yml
+++ b/pmci-callback.yml
@@ -1,9 +1,9 @@
---
# Parameters:
-# 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)
+# stage := name of the stage (e.g. dev, int, qa, prod)
+# scope_id := scope id from management process
+# process_instance_id := process instance id from management process
#############################################################
# Sending smardigo management message to process
diff --git a/pmci-database-backup-create.yml b/pmci-database-backup-create.yml
new file mode 100644
index 0000000..68a9802
--- /dev/null
+++ b/pmci-database-backup-create.yml
@@ -0,0 +1,94 @@
+---
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# tenant := object with tenant related data
+# key :=
+# name :=
+# cluster := object with cluster specific data (optional)
+# ...
+# data := object with action specific data (optional)
+# custom_backup_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
+ connection: local
+ gather_facts: false
+
+ pre_tasks:
+ - name: "Check if ansible version is at least {{ ansible_minimal_version }}"
+ assert:
+ that:
+ - ansible_version.string is version(ansible_minimal_version, ">=")
+ msg: "The ansible version has to be at least {{ ansible_minimal_version }}"
+
+# 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: "{{ stage }}-postgres-01"
+ groups:
+ - "stage_{{ stage }}"
+ - "{{ item }}"
+ changed_when: False
+ with_items: "{{ cluster_features }}"
+ when: item in ['connect']
+
+ - name: "Add maria servers to hosts if necessary"
+ add_host:
+ name: "{{ stage }}-maria-01"
+ 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: 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
diff --git a/pmci-database-backup-import.yml b/pmci-database-backup-import.yml
new file mode 100644
index 0000000..be74020
--- /dev/null
+++ b/pmci-database-backup-import.yml
@@ -0,0 +1,90 @@
+---
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# 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
+#############################################################
+
+- hosts: localhost
+ connection: local
+ gather_facts: false
+
+ pre_tasks:
+ - name: "Check if ansible version is at least {{ ansible_minimal_version }}"
+ assert:
+ that:
+ - ansible_version.string is version(ansible_minimal_version, ">=")
+ msg: "The ansible version has to be at least {{ ansible_minimal_version }}"
+
+# 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: "{{ stage }}-maria-01"
+ 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 }}"
+ 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"
+ import_tasks: tasks/autodiscover_pre_tasks.yml
+ become: false
+ tags:
+ - always
+
+ roles:
+ - role: import_maria_database
+ when:
+ - "'connect_wordpress' in group_names"
+ - "target_database is defined"
+ - "database_backup_file is defined"
+
+ - 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
+#############################################################
+
+- import_playbook: pmci-callback.yml
diff --git a/pmci-database-backup-restore.yml b/pmci-database-backup-restore.yml
new file mode 100644
index 0000000..e720047
--- /dev/null
+++ b/pmci-database-backup-restore.yml
@@ -0,0 +1,84 @@
+---
+
+# restores a database backup
+# - postgres
+# - executed on stage specific server: {{ stage }}-postgres-01
+# - restores a database backup
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# 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: "Check if ansible version is at least {{ ansible_minimal_version }}"
+ assert:
+ that:
+ - ansible_version.string is version(ansible_minimal_version, ">=")
+ msg: "The ansible version has to be at least {{ ansible_minimal_version }}"
+
+# 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: "{{ stage }}-postgres-01"
+ groups:
+ - "stage_{{ stage }}"
+ - "{{ item }}"
+ changed_when: False
+ with_items: "{{ cluster_features }}"
+ when: item in ['connect', 'management_connect', 'keycloak', 'webdav', 'gitea', 'pdns']
+
+#############################################################
+# 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"
+
+#############################################################
+# 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
diff --git a/pmci-database-create.yml b/pmci-database-create.yml
new file mode 100644
index 0000000..80ff85e
--- /dev/null
+++ b/pmci-database-create.yml
@@ -0,0 +1,63 @@
+---
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# 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
+#############################################################
+
+- import_playbook: pmci-inventory-database.yml
+
+#############################################################
+# 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 }}"
+ tenant_id: "{{ tenant.key }}" # legacy paramater, backwards compatibility
+ cluster_name: "{{ cluster.key }}" # legacy paramater, backwards compatibility
+
+ 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: webdav_postgres
+ when: "'webdav' in group_names"
+
+ - role: connect_wordpress_maria
+ when: "'connect_wordpress' in group_names"
+
+#############################################################
+# Sending smardigo management message to process
+#############################################################
+
+- import_playbook: pmci-callback.yml
diff --git a/pmci-database-delete.yml b/pmci-database-delete.yml
new file mode 100644
index 0000000..fc25b2c
--- /dev/null
+++ b/pmci-database-delete.yml
@@ -0,0 +1,64 @@
+---
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# 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
+#############################################################
+
+- import_playbook: pmci-inventory-database.yml
+
+#############################################################
+# 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 }}"
+ tenant_id: "{{ tenant.key }}" # legacy paramater, backwards compatibility
+ cluster_name: "{{ cluster.key }}" # legacy paramater, backwards compatibility
+
+ 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: webdav_postgres
+ when: "'webdav' in group_names"
+
+ - role: connect_wordpress_maria
+ when: "'connect_wordpress' in group_names"
+
+#############################################################
+# Sending smardigo management message to process
+#############################################################
+
+- import_playbook: pmci-callback.yml
diff --git a/pmci-inventory-cluster.yml b/pmci-inventory-cluster.yml
index 7d5819a..cbf704a 100644
--- a/pmci-inventory-cluster.yml
+++ b/pmci-inventory-cluster.yml
@@ -5,9 +5,11 @@
# stage := the name of the stage (e.g. dev, int, qa, prod)
# tenant := object with tenant related data
# key :=
-# name :=
# cluster := object with cluster specific data (optional)
-# ...
+# key :=
+# size :=
+# service :=
+# features :=
# data := object with action specific data (optional)
# ...
@@ -51,7 +53,7 @@
- name: "Add hosts for given cluster"
add_host:
name: "{{ stage }}-{{ tenant.key }}-{{ cluster.key }}-{{ '%02d' | format(item|int) }}"
- groups: "{{ ['stage_' + stage ] + [cluster.service] + cluster.features }}"
+ groups: "{{ ['hcloud'] + ['stage_' + stage ] + [cluster.service] + (cluster.features | default([])) }}"
with_sequence: start=1 end={{ cluster.size | default(1) }}
changed_when: False
when:
diff --git a/pmci-inventory-database.yml b/pmci-inventory-database.yml
new file mode 100644
index 0000000..a0a89ad
--- /dev/null
+++ b/pmci-inventory-database.yml
@@ -0,0 +1,58 @@
+---
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# tenant := object with tenant related data
+# key :=
+# cluster := object with cluster specific data (optional)
+# key :=
+# size :=
+# service :=
+# features :=
+# data := object with action specific data (optional)
+# ...
+
+#############################################################
+# Creating inventory dynamically for given cluster
+#############################################################
+
+- hosts: localhost
+ gather_facts: false
+ connection: local
+
+ pre_tasks:
+ - name: "Check if ansible version is at least {{ ansible_minimal_version }}"
+ assert:
+ that:
+ - ansible_version.string is version(ansible_minimal_version, ">=")
+ msg: "The ansible version has to be at least {{ ansible_minimal_version }}"
+
+# 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: "{{ stage }}-postgres-01"
+ groups:
+ - "{{ item }}"
+ - "stage_{{ stage }}"
+ changed_when: False
+ with_items: "{{ ['hcloud'] + ['stage_' + stage ] + [cluster.service] + (cluster.features | default([])) }}"
+ when: item in ['connect', 'management_connect', 'keycloak', 'webdav', 'gitea', 'pdns']
+
+ - name: "Add maria servers to hosts if necessary"
+ add_host:
+ name: "{{ stage }}-maria-01"
+ groups:
+ - "{{ item }}"
+ - "stage_{{ stage }}"
+ changed_when: False
+ with_items: "{{ ['hcloud'] + ['stage_' + stage ] + [cluster.service] + (cluster.features | default([])) }}"
+ when: item in ['connect_wordpress']
diff --git a/pmci-kibana-create-objects.yml b/pmci-kibana-create-objects.yml
new file mode 100644
index 0000000..dde6c7a
--- /dev/null
+++ b/pmci-kibana-create-objects.yml
@@ -0,0 +1,169 @@
+---
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# 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
+#############################################################
+
+- import_playbook: pmci-inventory-cluster.yml
+
+#############################################################
+# Running the PMCI roles
+#############################################################
+
+- hosts: "stage_{{ stage }}:!{{ 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 }}"
+ tenant_id: "{{ tenant.key }}" # legacy paramater, backwards compatibility
+ cluster_name: "{{ cluster.key }}" # legacy paramater, backwards compatibility
+ cluster_service: "{{ cluster.service }}"
+ 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
+ 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
+ es_index_pattern_tenant: '{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-*'
+ es_index_pattern_services:
+ - id: "{{ stage }}-{{ tenant_id }}-{{ cluster_name }}-*-{{ cluster_service }}-*"
+ name: "{{ cluster_service }}"
+
+ tasks:
+ - 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_index_pattern_tenant_uuid: '{{ es_index_pattern_tenant | to_uuid }}'
+ es_panel_uuid: "{{ 'panel_' + es_dashboard_name | to_uuid }}"
+ tags:
+ - es-importobjects
+
+#############################################################
+# Sending smardigo management message to process
+#############################################################
+
+- import_playbook: pmci-callback.yml
diff --git a/pmci-monitoring-update.yml b/pmci-monitoring-update.yml
new file mode 100644
index 0000000..c29f686
--- /dev/null
+++ b/pmci-monitoring-update.yml
@@ -0,0 +1,70 @@
+---
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# 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
+#############################################################
+
+- import_playbook: pmci-inventory-cluster.yml
+
+#############################################################
+# 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
+
+#############################################################
+# Sending smardigo management message to process
+#############################################################
+
+- import_playbook: pmci-callback.yml
diff --git a/pmci-realm-client-create.yml b/pmci-realm-client-create.yml
new file mode 100644
index 0000000..8258c57
--- /dev/null
+++ b/pmci-realm-client-create.yml
@@ -0,0 +1,60 @@
+---
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# 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
+#############################################################
+
+- import_playbook: pmci-inventory-cluster.yml
+
+#############################################################
+# 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
+ 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 }}" # legacy paramater, backwards compatibility
+ connect_wordpress_buergerportal_password: "{{ data.wordpress.admin.password }}" # legacy paramater, backwards compatibility
+
+ 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
+#############################################################
+
+- import_playbook: pmci-callback.yml
diff --git a/pmci-realm-client-delete.yml b/pmci-realm-client-delete.yml
new file mode 100644
index 0000000..fd818f1
--- /dev/null
+++ b/pmci-realm-client-delete.yml
@@ -0,0 +1,56 @@
+---
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# 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
+#############################################################
+
+- import_playbook: pmci-inventory-cluster.yml
+
+#############################################################
+# Deleting client for created inventory
+#############################################################
+
+- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
+ 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"
+ 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
+#############################################################
+
+- import_playbook: pmci-callback.yml
diff --git a/pmci-server-create.yml b/pmci-server-create.yml
new file mode 100644
index 0000000..d7b8e5e
--- /dev/null
+++ b/pmci-server-create.yml
@@ -0,0 +1,127 @@
+---
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# 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
+#############################################################
+
+- import_playbook: pmci-inventory-cluster.yml
+
+#############################################################
+# Creating servers for created inventory
+#############################################################
+
+- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
+ serial: "{{ serial_number | default(5) }}"
+ gather_facts: false
+ remote_user: root
+
+ 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',
+ ]
+ 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: common
+
+ - role: filebeat
+ when: filebeat_enabled | default(True)
+
+ - role: node_exporter
+ when: node_exporter_enabled | default(True)
+
+ - role: traefik
+ when: traefik_enabled | default(True)
+
+#############################################################
+# Sending smardigo management message to process
+#############################################################
+
+- import_playbook: pmci-callback.yml
diff --git a/pmci-server-delete.yml b/pmci-server-delete.yml
new file mode 100644
index 0000000..5d4f91c
--- /dev/null
+++ b/pmci-server-delete.yml
@@ -0,0 +1,51 @@
+---
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# 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
+#############################################################
+
+- import_playbook: pmci-inventory-cluster.yml
+
+#############################################################
+# 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
+#############################################################
+
+- import_playbook: pmci-callback.yml
diff --git a/pmci-service-create.yml b/pmci-service-create.yml
new file mode 100644
index 0000000..3c8cc76
--- /dev/null
+++ b/pmci-service-create.yml
@@ -0,0 +1,60 @@
+---
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# 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
+#############################################################
+
+- import_playbook: pmci-inventory-cluster.yml
+
+#############################################################
+# 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 }}"
+ 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"
+ 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
+#############################################################
+
+- import_playbook: pmci-callback.yml
diff --git a/pmci-service-delete.yml b/pmci-service-delete.yml
new file mode 100644
index 0000000..5d4a681
--- /dev/null
+++ b/pmci-service-delete.yml
@@ -0,0 +1,64 @@
+---
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# 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
+#############################################################
+
+- import_playbook: pmci-inventory-cluster.yml
+
+#############################################################
+# Removing services for created inventory
+#############################################################
+
+- hosts: "stage_{{ stage }}"
+ 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"
+ 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
+#############################################################
+
+- import_playbook: pmci-callback.yml
diff --git a/pmci-service-state-update.yml b/pmci-service-state-update.yml
new file mode 100644
index 0000000..4fc14f6
--- /dev/null
+++ b/pmci-service-state-update.yml
@@ -0,0 +1,89 @@
+---
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# tenant_id := (unique key for the tenant, e.g. customer)
+# cluster_name := (business name for the cluster, e.g. product, department )
+# cluster_features := (services to setup, e.g. ['connect', 'wordpress', ...])
+# service_state := the state of the service (e.g. up, down, upgrade)
+# 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: "Check if ansible version is at least {{ ansible_minimal_version }}"
+ assert:
+ that:
+ - ansible_version.string is version(ansible_minimal_version, ">=")
+ msg: "The ansible version has to be at least {{ ansible_minimal_version }}"
+
+# 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
+
+#############################################################
+# Stopping services for created inventory
+#############################################################
+
+- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
+ serial: "{{ serial_number | default(1) }}"
+ remote_user: root
+ vars:
+ service_state: up
+ 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: service_state
+ vars:
+ service_id: "{{ connect_id }}"
+ when: "'connect' in group_names"
+
+ - role: service_state
+ vars:
+ service_id: "{{ wordpress_id }}"
+ 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
diff --git a/pmci-tenant-create.yml b/pmci-tenant-create.yml
new file mode 100644
index 0000000..aa7f3fa
--- /dev/null
+++ b/pmci-tenant-create.yml
@@ -0,0 +1,66 @@
+---
+
+# Tenant creation
+# (keycloak realm)
+# (kibana space, user, role)
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# tenant := object with tenant related data
+# id := uuid used in pmci
+# key := unique tenant key
+# name := name of the tenant
+# admin := teannt admin account
+# email :=
+# first_name :=
+# last_name :=
+# data :=
+# admin :=
+# username :=
+# password :=
+# 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
+#############################################################
+
+- import_playbook: pmci-inventory-cluster.yml
+ vars:
+ cluster:
+ key: pmci
+ service: 'pmci_tenant_create'
+ features: []
+
+#############################################################
+# Running the PMCI roles
+#############################################################
+
+- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
+ serial: "{{ serial_number | default(1) }}"
+ gather_facts: false
+ connection: local
+ vars:
+ management_realm_name: "management"
+ management_base_url: "{{ stage }}-management-01-connect.{{ domain }}"
+
+ pre_tasks:
+ - name: "Import autodiscover pre-tasks"
+ import_tasks: tasks/autodiscover_pre_tasks.yml
+ become: false
+ tags:
+ - always
+
+ tasks:
+ - name: "Creating keycloak realm <{{ tenant.key }}>"
+ include_role:
+ name: pmci/tenant/create
+
+#############################################################
+# Sending smardigo management message to process
+#############################################################
+
+- import_playbook: pmci-callback.yml
diff --git a/pmci-tenant-delete.yml b/pmci-tenant-delete.yml
new file mode 100644
index 0000000..a5c8702
--- /dev/null
+++ b/pmci-tenant-delete.yml
@@ -0,0 +1,66 @@
+---
+
+# Tenant deletion
+# (keycloak realm)
+# (kibana space, user, role)
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# tenant := object with tenant related data
+# id := uuid used in pmci
+# key := unique tenant key
+# name := name of the tenant
+# admin := teannt admin account
+# email :=
+# first_name :=
+# last_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
+#############################################################
+
+- import_playbook: pmci-inventory-cluster.yml
+ vars:
+ cluster:
+ key: pmci
+ service: 'realm'
+ features: []
+
+#############################################################
+# Running the PMCI roles
+#############################################################
+
+- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
+ serial: "{{ serial_number | default(1) }}"
+ gather_facts: false
+ connection: local
+ vars:
+ management_realm_name: "management"
+ management_base_url: "{{ stage }}-management-01-connect.{{ domain }}"
+
+ pre_tasks:
+ - name: "Import autodiscover pre-tasks"
+ import_tasks: tasks/autodiscover_pre_tasks.yml
+ become: false
+ tags:
+ - always
+
+ tasks:
+ - name: "Delete keycloak realm <{{ tenant.key }}>"
+ include_role:
+ name: pmci/tenant/delete
+
+#############################################################
+# Sending smardigo management message to process
+#############################################################
+
+- import_playbook: pmci-callback.yml
diff --git a/pmci-tenant-edit.yml b/pmci-tenant-edit.yml
new file mode 100644
index 0000000..6b25b8d
--- /dev/null
+++ b/pmci-tenant-edit.yml
@@ -0,0 +1,66 @@
+---
+
+# Tenant maintenance
+# (keycloak realm)
+# (kibana space, user, role)
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# tenant := object with tenant related data
+# id := uuid used in pmci
+# key := unique tenant key
+# name := name of the tenant
+# admin := teannt admin account
+# email :=
+# first_name :=
+# last_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
+#############################################################
+
+- import_playbook: pmci-inventory-cluster.yml
+ vars:
+ cluster:
+ key: pmci
+ service: 'pmci_realm'
+ features: []
+
+#############################################################
+# Running the PMCI roles
+#############################################################
+
+- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
+ serial: "{{ serial_number | default(1) }}"
+ gather_facts: false
+ connection: local
+ vars:
+ management_realm_name: "management"
+ management_base_url: "{{ stage }}-management-01-connect.{{ domain }}"
+
+ pre_tasks:
+ - name: "Import autodiscover pre-tasks"
+ import_tasks: tasks/autodiscover_pre_tasks.yml
+ become: false
+ tags:
+ - always
+
+ tasks:
+ - name: "Edit keycloak realm <{{ tenant.key }}>"
+ include_role:
+ name: pmci/tenant/edit
+
+#############################################################
+# Sending smardigo management message to process
+#############################################################
+
+- import_playbook: pmci-callback.yml
diff --git a/pmci-tenant-sync.yml b/pmci-tenant-sync.yml
new file mode 100644
index 0000000..83501ec
--- /dev/null
+++ b/pmci-tenant-sync.yml
@@ -0,0 +1,68 @@
+---
+
+# Tenant maintenance
+# (keycloak realm)
+# (kibana space, user, role)
+
+# Parameters:
+# playbook inventory
+# stage := the name of the stage (e.g. dev, int, qa, prod)
+# tenant := object with tenant related data
+# id := uuid used in pmci
+# key := unique tenant key
+# name := name of the tenant
+# admin := teannt admin account
+# email :=
+# first_name :=
+# last_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
+#############################################################
+
+- import_playbook: pmci-inventory-cluster.yml
+ vars:
+ cluster:
+ key: pmci
+ service: 'pmci_realm'
+ features: []
+
+#############################################################
+# Running the PMCI roles
+#############################################################
+
+- hosts: "stage_{{ stage }}:!{{ stage }}-virtual-host-to-read-groups-vars"
+ serial: "{{ serial_number | default(1) }}"
+ gather_facts: false
+ connection: local
+ vars:
+ management_realm_name: "management"
+ management_base_url: "{{ stage }}-management-01-connect.{{ domain }}"
+ sma_management_scope_id: "pmci"
+ sma_management_role_id: "user"
+
+ pre_tasks:
+ - name: "Import autodiscover pre-tasks"
+ import_tasks: tasks/autodiscover_pre_tasks.yml
+ become: false
+ tags:
+ - always
+
+ tasks:
+ - name: "Updating assigned tenant ids for each user <{{ tenant.key }}>"
+ include_role:
+ name: pmci/tenant/sync
+
+#############################################################
+# Sending smardigo management message to process
+#############################################################
+
+- import_playbook: pmci-callback.yml
diff --git a/remove-database.yml b/remove-database.yml
index 98faa0f..6f60e1a 100644
--- a/remove-database.yml
+++ b/remove-database.yml
@@ -49,7 +49,7 @@
- "{{ item }}"
changed_when: False
with_items: "{{ cluster_features }}"
- when: item in ['connect', 'management_connect', 'keycloak', 'webdav', 'gitea', 'workflow_index', 'workflow_proxy', 'pdns']
+ when: item in ['connect', 'management_connect', 'keycloak', 'webdav', 'gitea', 'pdns']
- name: Add maria servers to hosts if necessary
add_host:
@@ -98,12 +98,6 @@
- role: webdav_postgres
when: "'webdav' in group_names"
- - role: workflow_index_postgres
- when: "'workflow_index' in group_names"
-
- - role: workflow_proxy_postgres
- when: "'workflow_proxy' in group_names"
-
- role: connect_wordpress_maria
when: "'connect_wordpress' in group_names"
diff --git a/restore-database-backup.yml b/restore-database-backup.yml
index 15a0511..4b19f5e 100644
--- a/restore-database-backup.yml
+++ b/restore-database-backup.yml
@@ -50,7 +50,7 @@
- "{{ item }}"
changed_when: False
with_items: "{{ cluster_features }}"
- when: item in ['connect', 'management_connect', 'keycloak', 'webdav', 'gitea', 'workflow_index', 'workflow_proxy', 'pdns']
+ when: item in ['connect', 'management_connect', 'keycloak', 'webdav', 'gitea']
#############################################################
# Restoring databases for created inventory
@@ -76,12 +76,6 @@
- role: webdav_postgres
when: "'webdav' in group_names"
- - role: workflow_index_postgres
- when: "'workflow_index' in group_names"
-
- - role: workflow_proxy_postgres
- when: "'workflow_proxy' in group_names"
-
#############################################################
# Sending smardigo management message to process
#############################################################
diff --git a/roles/confirm_postgres/defaults/main.yml b/roles/confirm_postgres/defaults/main.yml
deleted file mode 100644
index 152483c..0000000
--- a/roles/confirm_postgres/defaults/main.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-confirm_postgres_database: '{{ stage }}_{{ tenant_id }}_{{ cluster_name }}_confirm'
-confirm_postgres_password: 'confirm-postgres-admin'
-
-postgres_acls:
- - name: "{{ confirm_postgres_database }}"
- password: "{{ confirm_postgres_password }}"
- trusted_cidr_entry: "{{ shared_service_network }}"
diff --git a/roles/confirm_postgres/tasks/main.yml b/roles/confirm_postgres/tasks/main.yml
deleted file mode 100644
index c9146e3..0000000
--- a/roles/confirm_postgres/tasks/main.yml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-
-### tags:
-
-- name: "Updating Es ist ein nicht behandelbarer Fehler aufgetreten, bitte wenden Sie sich an einen Administrator. Es werden keine Aktionen ausgeführt, da alle Aufrufe zu externen Systemen übersprungen werden. Es werden keine Aktionen ausgeführt, da alle Aufrufe zu externen Systemen übersprungen werden. Ein Mandant darf nur dann gelöscht werden, wenn keine Services mehr existieren. Die Änderung vorhandender Mandanten muss in Keycloak durch einen Realm-Administrator erfolgen.
+ Sehr geehrte Damen und Herren,
+
+ ihre Smardigo-Instanz ist nun nach ${maintenance_topic} einsatzbereit.
+
+ Hier geht es zum Antrag: Link
+
+ Hinweis: Diese Mail wurde durch Smardigo automatisch erzeugt.
+
+ Sehr geehrte Damen und Herren,
+
+ Ihre Smardigo-Instanz wurde gelöscht.
+ Sind Sie sich sicher, dass der Mandant gelöscht werden soll?
",
"refreshOnChange" : false,
"mask" : false,
"tableView" : true,
@@ -24,12 +24,12 @@
"json" : ""
},
"tabs" : null,
- "reorder" : false,
"encrypted" : false,
"properties" : { },
"tags" : null,
"customConditional" : "",
- "logic" : [ ]
+ "logic" : [ ],
+ "reorder" : false
} ],
"display" : "form",
"configKey" : "confirm-delete-tenant",
diff --git a/smardigo/pmci/form/current-job-left.json b/smardigo/pmci/form/current-job-left.json
new file mode 100644
index 0000000..efb5654
--- /dev/null
+++ b/smardigo/pmci/form/current-job-left.json
@@ -0,0 +1,168 @@
+{
+ "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"
+}
\ No newline at end of file
diff --git a/smardigo/pmci/form/current-job-right.json b/smardigo/pmci/form/current-job-right.json
new file mode 100644
index 0000000..1e58e92
--- /dev/null
+++ b/smardigo/pmci/form/current-job-right.json
@@ -0,0 +1,138 @@
+{
+ "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" : "Es ist ein Fehler aufgetreten
\n \n
\n Connect-Version\n
\n\n\n",
+ "refreshOnChange" : false,
+ "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" : "",
+ "logic" : [ ],
+ "reorder" : false
+ }, {
+ "label" : "connect_version",
+ "hideLabel" : true,
+ "mask" : false,
+ "tableView" : true,
+ "alwaysEnabled" : false,
+ "type" : "select",
+ "input" : true,
+ "key" : "connect_version",
+ "defaultValue" : "latest",
+ "validate" : {
+ "customMessage" : "",
+ "json" : "",
+ "required" : true,
+ "select" : false
+ },
+ "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" : [ ],
+ "customConditional" : "",
+ "logic" : [ ],
+ "customDefaultValue" : "value='latest'",
+ "reference" : false,
+ "reorder" : false
+ } ],
+ "tabs" : null,
+ "encrypted" : false,
+ "properties" : { },
+ "tags" : [ ],
+ "customConditional" : "",
+ "logic" : [ ],
+ "reorder" : false
+ } ],
+ "display" : "form"
+}
\ No newline at end of file
diff --git a/smardigo/pmci/form/service-notice.json b/smardigo/pmci/form/service-notice.json
new file mode 100644
index 0000000..ba992fc
--- /dev/null
+++ b/smardigo/pmci/form/service-notice.json
@@ -0,0 +1,39 @@
+{
+ "components" : [ {
+ "label" : "Hinweis Create",
+ "className" : "",
+ "attrs" : [ {
+ "attr" : "",
+ "value" : ""
+ } ],
+ "content" : "Die Simulation ist gerade aktiv
\n Cluster
",
+ "refreshOnChange" : false,
+ "mask" : false,
+ "tableView" : true,
+ "alwaysEnabled" : false,
+ "type" : "htmlelement",
+ "input" : false,
+ "key" : "html6",
+ "validate" : {
+ "customMessage" : "",
+ "json" : ""
+ },
+ "conditional" : {
+ "show" : "",
+ "when" : "",
+ "json" : ""
+ },
+ "tabs" : null,
+ "encrypted" : false,
+ "properties" : { },
+ "tags" : null,
+ "customConditional" : "",
+ "logic" : [ ],
+ "reorder" : false
+ }, {
+ "label" : "cluster",
+ "hideLabel" : true,
+ "mask" : false,
+ "tableView" : true,
+ "alwaysEnabled" : false,
+ "type" : "container",
+ "input" : true,
+ "key" : "cluster",
+ "validate" : {
+ "customMessage" : "",
+ "json" : ""
+ },
+ "conditional" : {
+ "show" : "",
+ "when" : "",
+ "json" : ""
+ },
+ "components" : [ {
+ "label" : "Columns",
+ "columns" : [ {
+ "components" : [ {
+ "label" : "Stage",
+ "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" : "Key",
+ "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 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
+ } ],
+ "width" : 6,
+ "offset" : 0,
+ "push" : 0,
+ "pull" : 0,
+ "type" : "column",
+ "input" : false,
+ "hideOnChildrenHidden" : false,
+ "key" : "column",
+ "tableView" : true,
+ "label" : "Column"
+ }, {
+ "components" : [ {
+ "label" : "Size",
+ "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",
+ "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
+ } ],
+ "width" : 6,
+ "offset" : 0,
+ "push" : 0,
+ "pull" : 0,
+ "type" : "column",
+ "input" : false,
+ "hideOnChildrenHidden" : false,
+ "key" : "column",
+ "tableView" : true,
+ "label" : "Column"
+ } ],
+ "mask" : false,
+ "tableView" : false,
+ "alwaysEnabled" : false,
+ "type" : "columns",
+ "input" : false,
+ "key" : "columns5",
+ "conditional" : {
+ "show" : "",
+ "when" : "",
+ "json" : ""
+ },
+ "tabs" : null,
+ "reorder" : false,
+ "properties" : { },
+ "tags" : null,
+ "customConditional" : "",
+ "logic" : [ ]
+ } ],
+ "tabs" : null,
+ "encrypted" : false,
+ "properties" : { },
+ "tags" : [ ],
+ "customConditional" : "",
+ "logic" : [ ],
+ "reorder" : false
+ }, {
+ "label" : "HTML",
+ "className" : "",
+ "attrs" : [ {
+ "attr" : "",
+ "value" : ""
+ } ],
+ "content" : "Connect-Version
",
+ "refreshOnChange" : false,
+ "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" : "",
+ "logic" : [ ],
+ "reorder" : false
+ }, {
+ "label" : "connect_version",
+ "hideLabel" : true,
+ "mask" : false,
+ "tableView" : true,
+ "alwaysEnabled" : false,
+ "type" : "select",
+ "input" : true,
+ "key" : "connect_version",
+ "defaultValue" : "latest",
+ "validate" : {
+ "customMessage" : "",
+ "json" : "",
+ "required" : true,
+ "select" : false
+ },
+ "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" : [ ],
+ "customConditional" : "",
+ "logic" : [ ],
+ "customDefaultValue" : "value='latest'",
+ "reference" : false,
+ "reorder" : false
+ }, {
+ "label" : "HTML",
+ "className" : "",
+ "attrs" : [ {
+ "attr" : "",
+ "value" : ""
+ } ],
+ "content" : "Die Simulation ist gerade aktiv
\n Keine Mandanten mit Services löschen
\n Änderung vorhandender Mandanten
\n
\nAdmin
",
+ "refreshOnChange" : false,
+ "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" : [ ],
+ "reorder" : false
+ }, {
"label" : "Columns",
"columns" : [ {
"components" : [ {
@@ -352,10 +404,30 @@
"properties" : { },
"tags" : [ ],
"customConditional" : "",
- "logic" : [ ],
+ "logic" : [ {
+ "name" : "disable tenant-key",
+ "trigger" : {
+ "type" : "simple",
+ "simple" : {
+ "show" : true,
+ "when" : "process_definition_key",
+ "eq" : "tenant-change"
+ }
+ },
+ "actions" : [ {
+ "name" : "disable",
+ "type" : "property",
+ "property" : {
+ "label" : "Disabled",
+ "value" : "disabled",
+ "type" : "boolean"
+ },
+ "state" : "true"
+ } ]
+ } ],
"reorder" : false
}, {
- "label" : "First name",
+ "label" : "Vorname",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
@@ -386,13 +458,33 @@
"inputFormat" : "plain",
"encrypted" : false,
"customConditional" : "",
- "logic" : [ ],
+ "logic" : [ {
+ "name" : "disable tenant-key",
+ "trigger" : {
+ "type" : "simple",
+ "simple" : {
+ "show" : true,
+ "when" : "process_definition_key",
+ "eq" : "tenant-change"
+ }
+ },
+ "actions" : [ {
+ "name" : "disable",
+ "type" : "property",
+ "property" : {
+ "label" : "Disabled",
+ "value" : "disabled",
+ "type" : "boolean"
+ },
+ "state" : "true"
+ } ]
+ } ],
"widget" : {
"type" : ""
},
"reorder" : false
}, {
- "label" : "Last name",
+ "label" : "Nachname",
"allowMultipleMasks" : false,
"showWordCount" : false,
"showCharCount" : false,
@@ -423,7 +515,27 @@
"inputFormat" : "plain",
"encrypted" : false,
"customConditional" : "",
- "logic" : [ ],
+ "logic" : [ {
+ "name" : "disable tenant-key",
+ "trigger" : {
+ "type" : "simple",
+ "simple" : {
+ "show" : true,
+ "when" : "process_definition_key",
+ "eq" : "tenant-change"
+ }
+ },
+ "actions" : [ {
+ "name" : "disable",
+ "type" : "property",
+ "property" : {
+ "label" : "Disabled",
+ "value" : "disabled",
+ "type" : "boolean"
+ },
+ "state" : "true"
+ } ]
+ } ],
"widget" : {
"type" : ""
},
@@ -457,7 +569,7 @@
"alwaysEnabled" : false,
"type" : "columns",
"input" : false,
- "key" : "columns6",
+ "key" : "columns5",
"conditional" : {
"show" : "",
"when" : "",
@@ -471,14 +583,46 @@
"logic" : [ ]
} ],
"tabs" : null,
+ "encrypted" : false,
"properties" : { },
+ "tags" : [ ],
+ "customConditional" : "",
+ "logic" : [ ],
+ "reorder" : false
+ }, {
+ "label" : "HTML",
+ "className" : "",
+ "attrs" : [ {
+ "attr" : "",
+ "value" : ""
+ } ],
+ "content" : "
\nBenutzer
",
+ "refreshOnChange" : false,
+ "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" : [ ],
"reorder" : false
}, {
- "label" : "Benutzer",
+ "label" : " ",
+ "hideLabel" : true,
"multiple" : true,
"reorder" : false,
"mask" : false,
diff --git a/smardigo/pmci/layout/service-change.json b/smardigo/pmci/layout/service-change.json
new file mode 100644
index 0000000..7020615
--- /dev/null
+++ b/smardigo/pmci/layout/service-change.json
@@ -0,0 +1,129 @@
+{
+ "name" : "service-change",
+ "configKey" : "service-change",
+ "tabExpression" : "Service {{ data.service.name?:'neu' }}",
+ "readonlyExpression" : "true",
+ "components" : [ {
+ "type" : "columns",
+ "key" : "dossier",
+ "columns" : [ {
+ "components" : [ {
+ "type" : "columns",
+ "key" : "header",
+ "autoGrow" : "true",
+ "columns" : [ {
+ "components" : [ {
+ "type" : "form",
+ "key" : "header-left",
+ "readonlyExpression" : "true"
+ } ],
+ "width" : "calc(100% - 350px)"
+ }, {
+ "components" : [ {
+ "type" : "form",
+ "key" : "header-right",
+ "readonlyExpression" : "true"
+ } ],
+ "width" : "350px"
+ } ]
+ }, {
+ "type" : "html",
+ "content" : "
"
+ }, {
+ "type" : "columns",
+ "key" : "first-column",
+ "columns" : [ {
+ "components" : [ {
+ "type" : "page",
+ "key" : "dossier-page",
+ "toc" : "left",
+ "sections" : [ {
+ "type" : "section",
+ "key" : "service-notice",
+ "title" : "Hinweise",
+ "components" : [ {
+ "type" : "form",
+ "key" : "service-notice"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "applicserviceation",
+ "title" : "Service",
+ "components" : [ {
+ "type" : "form",
+ "key" : "service"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "tenant-in-service",
+ "title" : "Mandant",
+ "components" : [ {
+ "type" : "form",
+ "key" : "tenant-in-service"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "aktionen",
+ "title" : "Aktionen",
+ "visibleExpression" : "true",
+ "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" : "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"
+ } ]
+ } ]
+}
\ No newline at end of file
diff --git a/smardigo/pmci/layout/service-create.json b/smardigo/pmci/layout/service-create.json
new file mode 100644
index 0000000..6778505
--- /dev/null
+++ b/smardigo/pmci/layout/service-create.json
@@ -0,0 +1,129 @@
+{
+ "name" : "service-create",
+ "configKey" : "service-create",
+ "tabExpression" : "Service {{ data.service.name?:'neu' }}",
+ "readonlyExpression" : "data.vorgang_status > 90",
+ "components" : [ {
+ "type" : "columns",
+ "key" : "dossier",
+ "columns" : [ {
+ "components" : [ {
+ "type" : "columns",
+ "key" : "header",
+ "autoGrow" : "true",
+ "columns" : [ {
+ "components" : [ {
+ "type" : "form",
+ "key" : "header-left",
+ "readonlyExpression" : "true"
+ } ],
+ "width" : "calc(100% - 350px)"
+ }, {
+ "components" : [ {
+ "type" : "form",
+ "key" : "header-right",
+ "readonlyExpression" : "true"
+ } ],
+ "width" : "350px"
+ } ]
+ }, {
+ "type" : "html",
+ "content" : "
"
+ }, {
+ "type" : "columns",
+ "key" : "first-column",
+ "columns" : [ {
+ "components" : [ {
+ "type" : "page",
+ "key" : "dossier-page",
+ "toc" : "left",
+ "sections" : [ {
+ "type" : "section",
+ "key" : "service-notice",
+ "title" : "Hinweise",
+ "components" : [ {
+ "type" : "form",
+ "key" : "service-notice"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "service",
+ "title" : "Service",
+ "components" : [ {
+ "type" : "form",
+ "key" : "service"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "tenant-in-service",
+ "title" : "Mandant",
+ "components" : [ {
+ "type" : "form",
+ "key" : "tenant-in-service"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "aktionen",
+ "title" : "Aktionen",
+ "visibleExpression" : "true",
+ "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" : "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"
+ } ]
+ } ]
+}
\ No newline at end of file
diff --git a/smardigo/pmci/layout/service-delete.json b/smardigo/pmci/layout/service-delete.json
new file mode 100644
index 0000000..a2370f0
--- /dev/null
+++ b/smardigo/pmci/layout/service-delete.json
@@ -0,0 +1,129 @@
+{
+ "name" : "service-delete",
+ "configKey" : "service-delete",
+ "tabExpression" : "Service {{ data.service.name?:'neu' }}",
+ "readonlyExpression" : "true",
+ "components" : [ {
+ "type" : "columns",
+ "key" : "dossier",
+ "columns" : [ {
+ "components" : [ {
+ "type" : "columns",
+ "key" : "header",
+ "autoGrow" : "true",
+ "columns" : [ {
+ "components" : [ {
+ "type" : "form",
+ "key" : "header-left",
+ "readonlyExpression" : "true"
+ } ],
+ "width" : "calc(100% - 350px)"
+ }, {
+ "components" : [ {
+ "type" : "form",
+ "key" : "header-right",
+ "readonlyExpression" : "true"
+ } ],
+ "width" : "350px"
+ } ]
+ }, {
+ "type" : "html",
+ "content" : "
"
+ }, {
+ "type" : "columns",
+ "key" : "first-column",
+ "columns" : [ {
+ "components" : [ {
+ "type" : "page",
+ "key" : "dossier-page",
+ "toc" : "left",
+ "sections" : [ {
+ "type" : "section",
+ "key" : "service-notice",
+ "title" : "Hinweise",
+ "components" : [ {
+ "type" : "form",
+ "key" : "service-notice"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "service",
+ "title" : "Service",
+ "components" : [ {
+ "type" : "form",
+ "key" : "service"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "tenant-in-service",
+ "title" : "Mandant",
+ "components" : [ {
+ "type" : "form",
+ "key" : "tenant-in-service"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "aktionen",
+ "title" : "Aktionen",
+ "visibleExpression" : "true",
+ "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" : "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"
+ } ]
+ } ]
+}
\ No newline at end of file
diff --git a/smardigo/pmci/layout/service-replay-setup.json b/smardigo/pmci/layout/service-replay-setup.json
new file mode 100644
index 0000000..8fb995b
--- /dev/null
+++ b/smardigo/pmci/layout/service-replay-setup.json
@@ -0,0 +1,129 @@
+{
+ "name" : "service-replay-setup",
+ "configKey" : "service-replay-setup",
+ "tabExpression" : "Service {{ data.service.name?:'neu' }}",
+ "readonlyExpression" : "data.vorgang_status > 90",
+ "components" : [ {
+ "type" : "columns",
+ "key" : "dossier",
+ "columns" : [ {
+ "components" : [ {
+ "type" : "columns",
+ "key" : "header",
+ "autoGrow" : "true",
+ "columns" : [ {
+ "components" : [ {
+ "type" : "form",
+ "key" : "header-left",
+ "readonlyExpression" : "true"
+ } ],
+ "width" : "calc(100% - 350px)"
+ }, {
+ "components" : [ {
+ "type" : "form",
+ "key" : "header-right",
+ "readonlyExpression" : "true"
+ } ],
+ "width" : "350px"
+ } ]
+ }, {
+ "type" : "html",
+ "content" : "
"
+ }, {
+ "type" : "columns",
+ "key" : "first-column",
+ "columns" : [ {
+ "components" : [ {
+ "type" : "page",
+ "key" : "dossier-page",
+ "toc" : "left",
+ "sections" : [ {
+ "type" : "section",
+ "key" : "service-notice",
+ "title" : "Hinweise",
+ "components" : [ {
+ "type" : "form",
+ "key" : "service-notice"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "service",
+ "title" : "Service",
+ "components" : [ {
+ "type" : "form",
+ "key" : "service"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "tenant-in-service",
+ "title" : "Mandant",
+ "components" : [ {
+ "type" : "form",
+ "key" : "tenant-in-service"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "aktionen",
+ "title" : "Aktionen",
+ "visibleExpression" : "true",
+ "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" : "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"
+ } ]
+ } ]
+}
\ No newline at end of file
diff --git a/smardigo/pmci/layout/tenant-change.json b/smardigo/pmci/layout/tenant-change.json
new file mode 100644
index 0000000..012b8fd
--- /dev/null
+++ b/smardigo/pmci/layout/tenant-change.json
@@ -0,0 +1,121 @@
+{
+ "name" : "tenant-change",
+ "configKey" : "tenant-change",
+ "tabExpression" : "Mandant {{ data.tenant.name?:'neu' }}",
+ "readonlyExpression" : "data.vorgang_status > 90",
+ "components" : [ {
+ "type" : "columns",
+ "key" : "dossier",
+ "columns" : [ {
+ "components" : [ {
+ "type" : "columns",
+ "key" : "header",
+ "autoGrow" : "true",
+ "columns" : [ {
+ "components" : [ {
+ "type" : "form",
+ "key" : "header-left",
+ "readonlyExpression" : "true"
+ } ],
+ "width" : "calc(100% - 350px)"
+ }, {
+ "components" : [ {
+ "type" : "form",
+ "key" : "header-right",
+ "readonlyExpression" : "true"
+ } ],
+ "width" : "350px"
+ } ]
+ }, {
+ "type" : "html",
+ "content" : "
"
+ }, {
+ "type" : "columns",
+ "key" : "first-column",
+ "columns" : [ {
+ "components" : [ {
+ "type" : "page",
+ "key" : "dossier-page",
+ "toc" : "left",
+ "sections" : [ {
+ "type" : "section",
+ "key" : "tenant-notice",
+ "title" : "Hinweise",
+ "components" : [ {
+ "type" : "form",
+ "key" : "tenant-notice"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "tenant",
+ "title" : "Mandant",
+ "components" : [ {
+ "type" : "form",
+ "key" : "tenant"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "aktionen",
+ "title" : "Aktionen",
+ "visibleExpression" : "true",
+ "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" : "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"
+ } ]
+ } ]
+}
\ No newline at end of file
diff --git a/smardigo/pmci/layout/tenant-create.json b/smardigo/pmci/layout/tenant-create.json
index c3fb408..af4012a 100644
--- a/smardigo/pmci/layout/tenant-create.json
+++ b/smardigo/pmci/layout/tenant-create.json
@@ -1,7 +1,8 @@
{
"name" : "tenant-create",
"configKey" : "tenant-create",
- "tabExpression" : "Tenant {{ data.tenant.name?:'new' }}",
+ "tabExpression" : "Mandant {{ data.tenant.name?:'neu' }}",
+ "readonlyExpression" : "data.vorgang_status > 90",
"components" : [ {
"type" : "columns",
"key" : "dossier",
@@ -38,20 +39,68 @@
"toc" : "left",
"sections" : [ {
"type" : "section",
- "key" : "Tenant",
- "title" : "Tenant",
+ "key" : "tenant-notice",
+ "title" : "Hinweise",
+ "components" : [ {
+ "type" : "form",
+ "key" : "tenant-notice"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "tenant",
+ "title" : "Mandant",
"components" : [ {
"type" : "form",
"key" : "tenant"
} ]
+ }, {
+ "type" : "section",
+ "key" : "aktionen",
+ "title" : "Aktionen",
+ "visibleExpression" : "true",
+ "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" : "dossier-comments",
- "title" : "Comments",
+ "title" : "Kommentare",
"components" : [ {
"type" : "comments",
"key" : "comments"
} ]
+ }, {
+ "type" : "section",
+ "key" : "dossier-history",
+ "title" : "Protokoll",
+ "components" : [ {
+ "type" : "history",
+ "key" : "history"
+ } ]
} ]
} ],
"width" : "9"
diff --git a/smardigo/pmci/layout/tenant-delete.json b/smardigo/pmci/layout/tenant-delete.json
index 2259078..f7cfe76 100644
--- a/smardigo/pmci/layout/tenant-delete.json
+++ b/smardigo/pmci/layout/tenant-delete.json
@@ -1,7 +1,7 @@
{
"name" : "tenant-delete",
"configKey" : "tenant-delete",
- "tabExpression" : "Tenant {{ data.tenant.name }}",
+ "tabExpression" : "Mandant {{ data.tenant.name?:'neu' }}",
"readonlyExpression" : "true",
"components" : [ {
"type" : "columns",
@@ -39,21 +39,68 @@
"toc" : "left",
"sections" : [ {
"type" : "section",
- "key" : "Tenant",
- "title" : "Tenant",
+ "key" : "tenant-notice",
+ "title" : "Hinweise",
"components" : [ {
"type" : "form",
- "key" : "tenant",
+ "key" : "tenant-notice"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "tenant",
+ "title" : "Mandant",
+ "components" : [ {
+ "type" : "form",
+ "key" : "tenant"
+ } ]
+ }, {
+ "type" : "section",
+ "key" : "aktionen",
+ "title" : "Aktionen",
+ "visibleExpression" : "true",
+ "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" : "dossier-comments",
- "title" : "Comments",
+ "title" : "Kommentare",
"components" : [ {
"type" : "comments",
"key" : "comments"
} ]
+ }, {
+ "type" : "section",
+ "key" : "dossier-history",
+ "title" : "Protokoll",
+ "components" : [ {
+ "type" : "history",
+ "key" : "history"
+ } ]
} ]
} ],
"width" : "9"
diff --git a/smardigo/pmci/layout/tenant-edit.json b/smardigo/pmci/layout/tenant-edit.json
deleted file mode 100644
index 6456642..0000000
--- a/smardigo/pmci/layout/tenant-edit.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- "name" : "tenant-edit",
- "configKey" : "tenant-edit",
- "tabExpression" : "Tenant {{ data.tenant.name }}",
- "components" : [ {
- "type" : "columns",
- "key" : "dossier",
- "columns" : [ {
- "components" : [ {
- "type" : "columns",
- "key" : "header",
- "autoGrow" : "true",
- "columns" : [ {
- "components" : [ {
- "type" : "form",
- "key" : "header-left",
- "readonlyExpression" : "true"
- } ],
- "width" : "calc(100% - 350px)"
- }, {
- "components" : [ {
- "type" : "form",
- "key" : "header-right",
- "readonlyExpression" : "true"
- } ],
- "width" : "350px"
- } ]
- }, {
- "type" : "html",
- "content" : "
"
- }, {
- "type" : "columns",
- "key" : "first-column",
- "columns" : [ {
- "components" : [ {
- "type" : "page",
- "key" : "dossier-page",
- "toc" : "left",
- "sections" : [ {
- "type" : "section",
- "key" : "Tenant",
- "title" : "Tenant",
- "components" : [ {
- "type" : "form",
- "key" : "tenant"
- } ]
- }, {
- "type" : "section",
- "key" : "dossier-comments",
- "title" : "Comments",
- "components" : [ {
- "type" : "comments",
- "key" : "comments"
- } ]
- } ]
- } ],
- "width" : "9"
- }, {
- "components" : [ {
- "type" : "help-text",
- "key" : "help-text"
- }, {
- "type" : "action-list",
- "key" : "action-list"
- } ],
- "width" : "350px"
- } ]
- } ],
- "width" : "12"
- } ]
- } ]
-}
\ No newline at end of file
diff --git a/smardigo/pmci/mail-template/service-changed.html b/smardigo/pmci/mail-template/service-changed.html
new file mode 100644
index 0000000..df4e85b
--- /dev/null
+++ b/smardigo/pmci/mail-template/service-changed.html
@@ -0,0 +1,24 @@
+
+
+
+ Passwort
Link
-
+
- Connect
- some-username
- some-password
- some-link
-
-
- Keycloak
- some-username
- some-password
- some-link
+ some-username
+ some-password
+ some-link
+
Wordpress
- some-username
- some-password
- some-link
+ some-username
+ some-password
+ some-link
-
diff --git a/smardigo/pmci/mail-template/service-deleted.html b/smardigo/pmci/mail-template/service-deleted.html
new file mode 100644
index 0000000..96ffe50
--- /dev/null
+++ b/smardigo/pmci/mail-template/service-deleted.html
@@ -0,0 +1,24 @@
+
+
+
+ ELK
- some-username
- some-password
- some-link
+ Kibana
+ some-username
+ some-password
+ some-link
+ Hinweis: Diese Mail wurde durch Smardigo automatisch erzeugt. +
+ + \ No newline at end of file diff --git a/smardigo/pmci/mail-template/tenant-edited.html b/smardigo/pmci/mail-template/tenant-changed.html similarity index 87% rename from smardigo/pmci/mail-template/tenant-edited.html rename to smardigo/pmci/mail-template/tenant-changed.html index c58067d..b501f36 100644 --- a/smardigo/pmci/mail-template/tenant-edited.html +++ b/smardigo/pmci/mail-template/tenant-changed.html @@ -1,7 +1,7 @@ -- Ihre Tenant-Daten wurden bearbeitet. + Ihr Mandant wurde bearbeitet.
Die angepassten Daten können Sie hier einsehen : Link diff --git a/smardigo/pmci/mail-template/tenant-created.html b/smardigo/pmci/mail-template/tenant-created.html index db67d46..ab7946c 100644 --- a/smardigo/pmci/mail-template/tenant-created.html +++ b/smardigo/pmci/mail-template/tenant-created.html @@ -1,7 +1,7 @@ -
- Ihr Keycloack-Admin wurde eingerichtet.
+ Ihr Mandant wurde eingerichtet.
+ Bitte ignorieren Sie die Mail, sollten Sie bereits Zugriff auf den Mandanten haben.
Zum Abschließen der Anlage müssen Sie sich mit den folgenden angegebenen initialen Zugangsdaten anmelden. @@ -23,8 +24,8 @@ Bitte beachten Sie folgenden Hinweise zu diesem User
- Ihr Tenant und alle dazu gehörigen Smardigo-Instanzen wurden gelöscht. + Ihr Mandant und alle dazu gehörigen Smardigo-Instanzen wurden gelöscht.
Den zugehörigen Vorgang können Sie hier einsehen : Link diff --git a/smardigo/pmci/mapping/service-change.json b/smardigo/pmci/mapping/service-change.json new file mode 100644 index 0000000..4c94b9a --- /dev/null +++ b/smardigo/pmci/mapping/service-change.json @@ -0,0 +1,18 @@ +{ + "configKey" : "service-change", + "configs" : [ { + "configKey" : "service-search", + "configs" : [ { + "key" : "service-search", + "type" : "juel", + "condition" : "${true}" + } ] + }, { + "configKey" : "layout", + "configs" : [ { + "key" : "service-change", + "type" : "juel", + "condition" : "${true}" + } ] + } ] +} \ No newline at end of file diff --git a/smardigo/pmci/mapping/service-create.json b/smardigo/pmci/mapping/service-create.json new file mode 100644 index 0000000..8d50c49 --- /dev/null +++ b/smardigo/pmci/mapping/service-create.json @@ -0,0 +1,18 @@ +{ + "configKey" : "service-create", + "configs" : [ { + "configKey" : "process-search", + "configs" : [ { + "key" : "service-search", + "type" : "juel", + "condition" : "${true}" + } ] + }, { + "configKey" : "layout", + "configs" : [ { + "key" : "service-create", + "type" : "juel", + "condition" : "${true}" + } ] + } ] +} \ No newline at end of file diff --git a/smardigo/pmci/mapping/service-delete.json b/smardigo/pmci/mapping/service-delete.json new file mode 100644 index 0000000..7573667 --- /dev/null +++ b/smardigo/pmci/mapping/service-delete.json @@ -0,0 +1,18 @@ +{ + "configKey" : "service-delete", + "configs" : [ { + "configKey" : "process-search", + "configs" : [ { + "key" : "service-search", + "type" : "juel", + "condition" : "${true}" + } ] + }, { + "configKey" : "layout", + "configs" : [ { + "key" : "service-delete", + "type" : "juel", + "condition" : "${true}" + } ] + } ] +} \ No newline at end of file diff --git a/smardigo/pmci/mapping/service-replay-setup.json b/smardigo/pmci/mapping/service-replay-setup.json new file mode 100644 index 0000000..a8a3799 --- /dev/null +++ b/smardigo/pmci/mapping/service-replay-setup.json @@ -0,0 +1,18 @@ +{ + "configKey" : "service-replay-setup", + "configs" : [ { + "configKey" : "process-search", + "configs" : [ { + "key" : "service-search", + "type" : "juel", + "condition" : "${true}" + } ] + }, { + "configKey" : "layout", + "configs" : [ { + "key" : "service-replay-setup", + "type" : "juel", + "condition" : "${true}" + } ] + } ] +} \ No newline at end of file diff --git a/smardigo/pmci/mapping/tenant-change.json b/smardigo/pmci/mapping/tenant-change.json new file mode 100644 index 0000000..92ffd20 --- /dev/null +++ b/smardigo/pmci/mapping/tenant-change.json @@ -0,0 +1,18 @@ +{ + "configKey" : "tenant-change", + "configs" : [ { + "configKey" : "process-search", + "configs" : [ { + "key" : "tenant-search", + "type" : "juel", + "condition" : "${true}" + } ] + }, { + "configKey" : "layout", + "configs" : [ { + "key" : "tenant-change", + "type" : "juel", + "condition" : "${true}" + } ] + } ] +} \ No newline at end of file diff --git a/smardigo/pmci/mapping/tenant-create.json b/smardigo/pmci/mapping/tenant-create.json new file mode 100644 index 0000000..4b4462e --- /dev/null +++ b/smardigo/pmci/mapping/tenant-create.json @@ -0,0 +1,18 @@ +{ + "configKey" : "tenant-create", + "configs" : [ { + "configKey" : "process-search", + "configs" : [ { + "key" : "tenant-search", + "type" : "juel", + "condition" : "${true}" + } ] + }, { + "configKey" : "layout", + "configs" : [ { + "key" : "tenant-create", + "type" : "juel", + "condition" : "${true}" + } ] + } ] +} \ No newline at end of file diff --git a/smardigo/pmci/mapping/tenant-delete.json b/smardigo/pmci/mapping/tenant-delete.json new file mode 100644 index 0000000..231bdda --- /dev/null +++ b/smardigo/pmci/mapping/tenant-delete.json @@ -0,0 +1,18 @@ +{ + "configKey" : "tenant-delete", + "configs" : [ { + "configKey" : "process-search", + "configs" : [ { + "key" : "tenant-search", + "type" : "juel", + "condition" : "${true}" + } ] + }, { + "configKey" : "layout", + "configs" : [ { + "key" : "tenant-delete", + "type" : "juel", + "condition" : "${true}" + } ] + } ] +} \ No newline at end of file diff --git a/smardigo/pmci/policy/policy.json b/smardigo/pmci/policy/policy.json new file mode 100644 index 0000000..d9ed153 --- /dev/null +++ b/smardigo/pmci/policy/policy.json @@ -0,0 +1,5 @@ +{ + "name" : "policy", + "configKey" : "policy", + "configType" : "policy" +} \ No newline at end of file diff --git a/smardigo/pmci/process-preset/send-msTeams-message.json b/smardigo/pmci/process-preset/send-msTeams-message.json new file mode 100644 index 0000000..1e06f07 --- /dev/null +++ b/smardigo/pmci/process-preset/send-msTeams-message.json @@ -0,0 +1,6 @@ +{ + "configKey" : "send-msTeams-message", + "name" : "send-msTeams-message", + "description" : "send-msTeams-message", + "bpmn" : "\n' + ansibleVariables + '\n' + ansibleCommand + '') ansibleCommand \ No newline at end of file diff --git a/smardigo/pmci/script/create-awx-paramaters.groovy b/smardigo/pmci/script/create-awx-paramaters.groovy deleted file mode 100644 index 7373c62..0000000 --- a/smardigo/pmci/script/create-awx-paramaters.groovy +++ /dev/null @@ -1,11 +0,0 @@ -def env = [ - stage: envStage, - scope_id: contextScopeId, - process_instance_id: execution.getProcessInstanceId(), - smardigo_management_action: smardigoManagementAction, - tenant: tenant -] -if (binding.hasVariable('extraVariables')) { - env << extraVariables -} -env \ No newline at end of file diff --git a/smardigo/pmci/script/create-awx-parameters.groovy b/smardigo/pmci/script/create-awx-parameters.groovy new file mode 100644 index 0000000..2fb0426 --- /dev/null +++ b/smardigo/pmci/script/create-awx-parameters.groovy @@ -0,0 +1,34 @@ +def parameter +switch(smardigoManagementAction) { + case { it.contains('pmci-tenant') }: + parameter = [ + stage : envStage, + scope_id : contextScopeId, + process_instance_id : execution.getProcessInstanceId(), + smardigo_management_action: smardigoManagementAction, + tenant : tenant, + data : binding.hasVariable('data') ? data : [] + ] + break; + case { it.contains('pmci-database') || it.contains('pmci-inventory') || it.contains('pmci-kibana') || + it.contains('pmci-realm') || it.contains('pmci-server') || it.contains('pmci-service') }: + parameter = [ + stage : envStage, + scope_id : contextScopeId, + process_instance_id : execution.getProcessInstanceId(), + smardigo_management_action: smardigoManagementAction, + tenant : tenant, + cluster : binding.hasVariable('service') ? service.cluster<<[features:service.connect_features]: [], + data : binding.hasVariable('data') ? data : [] + ] + break; + default: + parameter = [ + stage : envStage, + scope_id : contextScopeId, + process_instance_id : execution.getProcessInstanceId(), + smardigo_management_action: smardigoManagementAction + ] + break; +} +return parameter \ No newline at end of file diff --git a/smardigo/pmci/script/create-data.groovy b/smardigo/pmci/script/create-data.groovy new file mode 100644 index 0000000..805b4d6 --- /dev/null +++ b/smardigo/pmci/script/create-data.groovy @@ -0,0 +1,39 @@ +/***************************************** + service: + tenant_key: sken + cluster: + stage: dev + key: test01 + connect_features: + - connect_wordpress + - connect_search_elastic + - ... + connect_version: latest + connect_admin_password: xxx + wordpress_admin_password: xxx +*****************************************/ + +def data = [:] + +def connect_admin = [:] +connect_admin["username"] = service.cluster.key + "-connect-admin" +connect_admin["password"] = connect_admin_password +def connect = [:] +connect["admin"] = connect_admin +connect["version"] = service.connect_version +data["connect"] = connect + +execution.setVariable('connect_admin', connect_admin) + +if (service.connect_features.contains("connect_wordpress")) { + def wordpress_admin = [:] + wordpress_admin["username"] = service.cluster.key + "-wordpress-admin" + wordpress_admin["password"] = wordpress_admin_password + def wordpress = [:] + wordpress["admin"] = wordpress_admin + data["wordpress"] = wordpress + + execution.setVariable('wordpress_admin', wordpress_admin) +} + +data \ No newline at end of file diff --git a/smardigo/pmci/script/create-low-string.groovy b/smardigo/pmci/script/create-low-string.groovy new file mode 100644 index 0000000..2b5dc77 --- /dev/null +++ b/smardigo/pmci/script/create-low-string.groovy @@ -0,0 +1,14 @@ +def pool_length = in_length?:10; +def lowerCase = ['a'..'z'].flatten() - [ 'O', '0', 'l', '1', 'I' ] + +def pool = lowerCase + +Random rand = new Random(System.currentTimeMillis()); +def passChars = (0..pool_length - 1).collect { pool[rand.nextInt(pool.size())] }; + +passChars[0] = lowerCase[rand.nextInt(lowerCase.size())] +passChars[pool_length - 2] = lowerCase[rand.nextInt(lowerCase.size())] + +def low_string = passChars.join(''); + +low_string \ No newline at end of file diff --git a/smardigo/pmci/script/create-teams-message.groovy b/smardigo/pmci/script/create-teams-message.groovy index 79404b7..f88cbca 100644 --- a/smardigo/pmci/script/create-teams-message.groovy +++ b/smardigo/pmci/script/create-teams-message.groovy @@ -1,5 +1,5 @@ -def smardigoUrl = "https://" + envBaseUrl + "/api/redirect/process/" + contextScopeId + "/dossier/" + process_definition_key + "/" + contextProcessId -def smardigoMessageUrl = "https://" + envBaseUrl + "/api/v1/scopes/" + contextScopeId + "/processes/" + contextProcessId + "/messages" +def smardigoUrl = "https://" + envBaseUrl + "/api/redirect/process/" + contextScopeId + "/dossier/" + process_definition_key + "/" + execution.getProcessInstanceId() +def smardigoMessageUrl = "https://" + envBaseUrl + "/api/v1/scopes/" + contextScopeId + "/processes/" + execution.getProcessInstanceId() + "/messages" def message = [:] message["@type"] = "MessageCard" @@ -8,9 +8,9 @@ message["themeColor"] = "0076D7" message["summary"] = "Neue Aufgabe: " + "Mein comment" def section = [:] -section["activityTitle"] = "activityTitle" -section["activitySubtitle"] = "activitySubtitle" -section["activityImage"] = "https://smardigo.de/wp-content/uploads/2020/01/smardigo-min.png" +section["activityTitle"] = activityTitle +section["activitySubtitle"] = activitySubtitle +section["activityImage"] = "https://www.netgo.de/wp-content/uploads/2022/10/weiss_icon_rakete-33-80x80.png" section["facts"] = [ [name:"Stage",value:envStage], [name:"Mandant",value:tenant.name] @@ -26,12 +26,12 @@ openInSmardigo["name"] = "Vorgang öffnen" openInSmardigo["target"] = [smardigoUrl] potentialAction.add(openInSmardigo) -if (vorgang_status < 30) { +if (vorgang_status > 1000) { def approveInSmardigo = [:] approveInSmardigo["@type"] = "HttpPOST" approveInSmardigo["name"] = "Server freigeben" approveInSmardigo["target"] = smardigoMessageUrl - approveInSmardigo["body"] = "{\"message\":\"process-approved-" + contextProcessId + "\"}" + approveInSmardigo["body"] = "{\"message\":\"process-approved-" + execution.getProcessInstanceId() + "\"}" approveInSmardigo["headers"] = [ [name:"Smardigo-User-Token",value:envSmardigoUserToken] ] diff --git a/smardigo/pmci/script/initialize-connect-features.groovy b/smardigo/pmci/script/initialize-connect-features.groovy new file mode 100644 index 0000000..cf66253 --- /dev/null +++ b/smardigo/pmci/script/initialize-connect-features.groovy @@ -0,0 +1,10 @@ + +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 \ No newline at end of file diff --git a/smardigo/provisioning/form/simple-connect.json b/smardigo/provisioning/form/simple-connect.json index ea6ceeb..587a3c1 100644 --- a/smardigo/provisioning/form/simple-connect.json +++ b/smardigo/provisioning/form/simple-connect.json @@ -3,27 +3,85 @@ "configKey" : "simple-connect", "page" : 0, "components" : [ { - "label" : "Features", + "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" : "well", - "input" : false, - "key" : "features", + "type" : "dualmultiselect", + "input" : true, + "key" : "connect-features", + "defaultValue" : [ ], + "validate" : { + "customMessage" : "", + "json" : "" + }, "conditional" : { "show" : "", "when" : "", "json" : "" }, - "components" : [ { - "label" : "Optionale Features", - "mask" : false, + "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" : "dualmultiselect", + "type" : "textfield", "input" : true, - "key" : "connect-features", - "defaultValue" : [ ], + "key" : "connect_admin_username", + "defaultValue" : "", "validate" : { "customMessage" : "", "json" : "" @@ -33,816 +91,718 @@ "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" : { - }, + "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" : [ ], - "projection" : "key", + "widget" : { + "type" : "" + }, "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" : "", - "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" : "", - "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" : "", - "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" : "", - "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 - } ] - } ], + "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" : "", + "refreshOnChange" : true, "mask" : false, - "tableView" : false, + "tableView" : true, "alwaysEnabled" : false, - "type" : "columns", + "type" : "htmlelement", "input" : false, - "key" : "columns2", + "key" : "html2", + "validate" : { + "customMessage" : "", + "json" : "" + }, "conditional" : { "show" : "", "when" : "", "json" : "" }, "tabs" : null, - "properties" : { - }, + "encrypted" : false, + "properties" : { }, "tags" : null, "customConditional" : "", "logic" : [ ], + "refreshOn" : "data", "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", + "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" : "", + "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" : "", + "refreshOnChange" : true, "mask" : false, "tableView" : true, "alwaysEnabled" : false, - "type" : "well", + "type" : "htmlelement", "input" : false, - "key" : "connect2", + "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" : "" }, - "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" : { + "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" : "", + "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" : [ ] - } ], - "tabs" : null, - "encrypted" : false, - "properties" : { + "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" : "" }, - { - "label" : "Cluster", + "conditional" : { + "show" : "", + "when" : "", + "json" : "" + }, + "components" : [ { + "label" : "Connect", + "hideLabel" : true, "mask" : false, "tableView" : true, "alwaysEnabled" : false, - "type" : "container", - "input" : true, - "key" : "cluster", - "validate" : { - "customMessage" : "", + "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" : "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 - } ], + "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, - "encrypted" : false, - "properties" : { - }, + "properties" : { }, "tags" : [ ], "customConditional" : "", "logic" : [ ], "reorder" : false } ], + "tabs" : null, + "encrypted" : false, + "properties" : { }, + "tags" : [ ], + "customConditional" : "", + "logic" : [ ], + "reorder" : false + } ], "display" : "form" -} +} \ No newline at end of file diff --git a/smardigo/provisioning/layout/simple-connect.json b/smardigo/provisioning/layout/simple-connect.json index 15b9a18..cf26272 100644 --- a/smardigo/provisioning/layout/simple-connect.json +++ b/smardigo/provisioning/layout/simple-connect.json @@ -4,115 +4,104 @@ "tabExpression" : "{{ data.cluster.stage }}-{{ data.tenant.key }}-{{ data.cluster.name }}", "readonlyExpression" : "data.vorgang_status > 10", "components" : [ { - "type" : "columns", - "key" : "dossier", - "columns" : [ { + "type" : "columns", + "key" : "dossier", + "columns" : [ { + "components" : [ { + "type" : "form", + "key" : "header", + "readonlyExpression" : "true" + }, { + "type" : "html", + "content" : "